typedef struct _MONITOR {
BOOL (WINAPI *pfnEnumPorts)(LPTSTR pName,DWORD Level,LPBYTE pPorts,
DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
BOOL (WINAPI *pfnOpenPort)(LPTSTR pName,PHANDLE pHandle);
BOOL (WINAPI *pfnOpenPortEx)(LPTSTR pPortName,
LPTSTR pPrinterName, PHANDLE pHandle, struct _MONITOR
FAR *pMonitor);
BOOL (WINAPI *pfnStartDocPort)(HANDLE hPort, LPTSTR pPrinterName,
DWORD JobId, DWORD Level, LPBYTE pDocInfo);
BOOL (WINAPI *pfnWritePort)(HANDLE hPort, LPBYTE pBuffer,
DWORD cbBuf, LPDWORD pcbWritten);
BOOL (WINAPI *pfnReadPort)(HANDLE hPort, LPBYTE pBuffer,
DWORD cbBuffer, LPDWORD pcbRead);
BOOL (WINAPI *pfnEndDocPort)(HANDLE hPort);
BOOL (WINAPI *pfnClosePort)(HANDLE hPort);
BOOL (WINAPI *pfnAddPort)(LPTSTR pName, HWND hWnd,
LPTSTR pMonitorName);
BOOL (WINAPI *pfnConfigurePort)(LPTSTR pName, HWND hWnd,
LPTSTR pPortName);
BOOL (WINAPI *pfnDeletePort)(LPTSTR pName, HWND hWnd,
LPTSTR pPortName);
BOOL (WINAPI *pfnGetPrinterDataFromPort)(HANDLE hPort,
DWORD ControlID, LPTSTR pValueName, LPTSTR lpInBuffer,
DWORD cbInBuffer, LPTSTR lpOutBuffer, DWORD cbOutBuffer,
LPDWORD lpcbReturned);
BOOL (WINAPI *pfnSetPortTimeOuts)(HANDLE hPort,
LPCOMMTIMEOUTS lpCTO, DWORD reserved);
} MONITOR, FAR *LPMONITOR;
When InitializeMonitorEx is called to initialize a language monitor, the caller provides a pointer to an empty MONITOR structure, which is filled in and returned by the language monitor.