portmon.h
来自「虚拟打印端口」· C头文件 代码 · 共 550 行 · 第 1/2 页
H
550 行
FLOAT fData;
BINARY_CONTAINER biData;
} u;
} BIDI_DATA, *PBIDI_DATA, *LPBIDI_DATA;
typedef struct _BIDI_REQUEST_DATA {
DWORD dwReqNumber;
LPWSTR pSchema;
BIDI_DATA data;
} BIDI_REQUEST_DATA, *PBIDI_REQUEST_DATA, *LPBIDI_REQUEST_DATA;
typedef struct _BIDI_REQUEST_CONTAINER {
DWORD Version;
DWORD Flags;
DWORD Count;
BIDI_REQUEST_DATA aDATa[1];
} BIDI_REQUEST_CONTAINER, *PBIDI_REQUEST_CONTAINER, *LPBIDI_REQUEST_CONTAINER;
typedef struct _BIDI_RESPONSE_DATA {
DWORD dwResult;
DWORD dwReqNumber;
LPWSTR pSchema;
BIDI_DATA data;
} BIDI_RESPONSE_DATA, *PBIDI_RESPONSE_DATA, *LPBIDI_RESPONSE_DATA;
typedef struct _BIDI_RESPONSE_CONTAINER {
DWORD Version;
DWORD Flags;
DWORD Count;
BIDI_RESPONSE_DATA aData[1];
} BIDI_RESPONSE_CONTAINER, *PBIDI_RESPONSE_CONTAINER, *LPBIDI_RESPONSE_CONTAINER;
/* MONITOR2 structure is returned by InitializePrintMonitor2 */
typedef struct _MONITOR2
{
DWORD cbSize;
BOOL (WINAPI *pfnEnumPorts)
(HANDLE hMonitor, LPWSTR pName, DWORD Level, LPBYTE pPorts,
DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
BOOL (WINAPI *pfnOpenPort)
(HANDLE hMonitor, LPWSTR pName, PHANDLE pHandle);
BOOL (WINAPI *pfnOpenPortEx)
(HANDLE hMonitor, HANDLE hMonitorPort, LPWSTR pPortName,
LPWSTR pPrinterName, PHANDLE pHandle,
struct _MONITOR2 FAR *pMonitor2);
BOOL (WINAPI *pfnStartDocPort)
(HANDLE hPort, LPWSTR 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) /* Obsolete. Should be NULL */
(HANDLE hMonitor, LPWSTR pName, HWND hWnd,
LPWSTR pMonitorName);
BOOL (WINAPI *pfnAddPortEx) /* Obsolete. Should be NULL */
(HANDLE hMonitor, LPWSTR pName, DWORD Level,
LPBYTE lpBuffer, LPWSTR lpMonitorName);
BOOL (WINAPI *pfnConfigurePort) /* Obsolete. Should be NULL */
(HANDLE hMonitor, LPWSTR pName, HWND hWnd,
LPWSTR pPortName);
BOOL (WINAPI *pfnDeletePort) /* Obsolete. Should be NULL */
(HANDLE hMonitor, LPWSTR pName, HWND hWnd,
LPWSTR pPortName);
BOOL (WINAPI *pfnGetPrinterDataFromPort)
(HANDLE hPort, DWORD ControlID, LPWSTR pValueName,
LPWSTR lpInBuffer, DWORD cbInBuffer, LPWSTR lpOutBuffer,
DWORD cbOutBuffer, LPDWORD lpcbReturned);
BOOL (WINAPI *pfnSetPortTimeOuts)
(HANDLE hPort, LPCOMMTIMEOUTS lpCTO,
DWORD reserved /* must be set to 0 */ );
BOOL (WINAPI *pfnXcvOpenPort)
(HANDLE hMonitor, LPCWSTR pszObject,
ACCESS_MASK GrantedAccess, PHANDLE phXcv);
DWORD (WINAPI *pfnXcvDataPort)
(HANDLE hXcv, LPCWSTR pszDataName, PBYTE pInputData,
DWORD cbInputData, PBYTE pOutputData, DWORD cbOutputData,
PDWORD pcbOutputNeeded);
BOOL (WINAPI *pfnXcvClosePort)
(HANDLE hXcv);
VOID (WINAPI *pfnShutdown)
(HANDLE hMonitor);
#ifdef NOTUSED
DWORD (WINAPI *pfnSendRecvBidiDataFromPort)
(HANDLE hPort, DWORD dwAccessBit,
LPCWSTR pAction, PBIDI_REQUEST_CONTAINER pReqData,
PBIDI_RESPONSE_CONTAINER *ppResData);
#endif
} MONITOR2, *PMONITOR2, FAR *LPMONITOR2;
/* MONITORREG is in MONITORINIT */
/* Use these function pointer instead of Win32 reg functions
* because we can't tell if we should write to the local registry
* or the cluster registry */
/* Windows 2000 DDK documentation says these should not have WINAPI,
* but they crash unless you use WINAPI.
*/
typedef struct _MONITORREG {
DWORD cbSize;
LONG
(WINAPI *fpCreateKey)(
HANDLE hcKey,
LPCTSTR pszSubKey,
DWORD dwOptions,
REGSAM samDesired,
PSECURITY_ATTRIBUTES pSecurityAttributes,
PHANDLE phckResult,
PDWORD pdwDisposition,
HANDLE hSpooler
);
LONG
(WINAPI *fpOpenKey)(
HANDLE hcKey,
LPCTSTR pszSubKey,
REGSAM samDesired,
PHANDLE phkResult,
HANDLE hSpooler
);
LONG
(WINAPI *fpCloseKey)(
HANDLE hcKey,
HANDLE hSpooler
);
LONG
(WINAPI *fpDeleteKey)(
HANDLE hcKey,
LPCTSTR pszSubKey,
HANDLE hSpooler
);
LONG
(WINAPI *fpEnumKey)(
HANDLE hcKey,
DWORD dwIndex,
LPTSTR pszName,
PDWORD pcchName,
PFILETIME pftLastWriteTime,
HANDLE hSpooler
);
LONG
(WINAPI *fpQueryInfoKey)(
HANDLE hcKey,
PDWORD pcSubKeys,
PDWORD pcbKey,
PDWORD pcValues,
PDWORD pcbValue,
PDWORD pcbData,
PDWORD pcbSecurityDescriptor,
PFILETIME pftLastWriteTime,
HANDLE hSpooler
);
LONG
(WINAPI *fpSetValue)(
HANDLE hcKey,
LPCTSTR pszValue,
DWORD dwType,
const BYTE* pData,
DWORD cbData,
HANDLE hSpooler
);
LONG
(WINAPI *fpDeleteValue)(
HANDLE hcKey,
LPCTSTR pszValue,
HANDLE hSpooler
);
LONG
(WINAPI *fpEnumValue)(
HANDLE hcKey,
DWORD dwIndex,
LPTSTR pszValue,
PDWORD pcbValue,
PDWORD pType,
PBYTE pData,
PDWORD pcbData,
HANDLE hSpooler
);
LONG
(WINAPI *fpQueryValue)(
HANDLE hcKey,
LPCTSTR pszValue,
PDWORD pType,
PBYTE pData,
PDWORD pcbData,
HANDLE hSpooler
);
} MONITORREG, *PMONITORREG;
/* MONITORINIT is an input parameter to InitializePrintMonitor2 */
typedef struct _MONITORINIT {
DWORD cbSize;
HANDLE hSpooler;
HANDLE hckRegistryRoot;
PMONITORREG pMonitorReg;
BOOL bLocal;
} MONITORINIT, *PMONITORINIT;
/* returned by InitializePrintMonitorUI */
typedef struct _MONITORUI
{
DWORD dwMonitorUISize;
BOOL (WINAPI *pfnAddPortUI)
(PCWSTR pszServer,
HWND hWnd,
PCWSTR pszPortNameIn,
PWSTR *ppszPortNameOut);
BOOL (WINAPI *pfnConfigurePortUI)
(PCWSTR pName,
HWND hWnd,
PCWSTR pPortName);
BOOL (WINAPI *pfnDeletePortUI)
(PCWSTR pszServer,
HWND hWnd,
PCWSTR pszPortName);
} MONITORUI, FAR *PMONITORUI;
LPMONITOR2 WINAPI
InitializePrintMonitor2(
PMONITORINIT pMonitorInit,
PHANDLE phMonitor
);
PMONITORUI WINAPI
InitializePrintMonitorUI(VOID);
#endif /* NT50 */
#else /* !UNICODE */
/* Windows 95 structure */
/* The MONITOR structure is returned by InitializeMonitorEx() */
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;
/* InitializeMonitorEx is exported by the Port or Language
* Monitor DLL.
*/
BOOL WINAPI _export InitializeMonitorEx(
LPTSTR pRegisterRoot,
LPMONITOR pMonitor
);
#endif /* !UNICODE */
/* end of portmon.h */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?