Files
yttrium-virtio-gpu/vioserial/lib/main.cpp
T
2025-01-13 09:06:20 +01:00

95 lines
2.2 KiB
C++

#include "StdAfx.h"
HINSTANCE ghInstance = NULL; // module handle.
PnPControl *control = NULL;
BOOL APIENTRY DllMain(HANDLE hModule, ULONG ul_reason_for_call, LPVOID lpReserved)
{
UNREFERENCED_PARAMETER(ul_reason_for_call);
UNREFERENCED_PARAMETER(lpReserved);
ghInstance = (HINSTANCE)hModule;
return TRUE;
}
DLL_API BOOL VIOSStartup(void)
{
PnPControl::GetInstance();
return TRUE;
}
DLL_API VOID VIOSCleanup(void)
{
PnPControl::CloseInstance();
}
DLL_API BOOL FindPort(const wchar_t *name)
{
PnPControl *control = PnPControl::GetInstance();
BOOL ret = control->FindPort(name);
PnPControl::CloseInstance();
return ret;
}
DLL_API PVOID OpenPortByName(const wchar_t *name)
{
PnPControl *control = PnPControl::GetInstance();
PVOID ret = control->OpenPortByName(name);
PnPControl::CloseInstance();
return ret;
}
DLL_API PVOID OpenPortById(UINT id)
{
PnPControl *control = PnPControl::GetInstance();
PVOID ret = control->OpenPortById(id);
PnPControl::CloseInstance();
return ret;
}
DLL_API BOOL ReadPort(PVOID port, PVOID buf, PULONG size)
{
PnPControl *control = PnPControl::GetInstance();
BOOL ret = control->ReadPort(port, buf, size);
PnPControl::CloseInstance();
return ret;
}
DLL_API BOOL WritePort(PVOID port, PVOID buf, ULONG size)
{
PnPControl *control = PnPControl::GetInstance();
BOOL ret = control->WritePort(port, buf, size);
PnPControl::CloseInstance();
return ret;
}
DLL_API VOID ClosePort(PVOID port)
{
PnPControl *control = PnPControl::GetInstance();
control->ClosePort(port);
PnPControl::CloseInstance();
}
DLL_API UINT NumPorts(void)
{
PnPControl *control = PnPControl::GetInstance();
UINT ret = (UINT)control->NumPorts();
PnPControl::CloseInstance();
return ret;
}
DLL_API wchar_t *PortSymbolicName(int index)
{
PnPControl *control = PnPControl::GetInstance();
wchar_t *ret = control->PortSymbolicName(index);
PnPControl::CloseInstance();
return ret;
}
DLL_API VOID RegisterNotification(PVOID port, VIOSERIALNOTIFYCALLBACK pfn, PVOID ptr)
{
PnPControl *control = PnPControl::GetInstance();
control->RegisterNotification(port, pfn, ptr);
PnPControl::CloseInstance();
}