#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(); }