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 + -
显示快捷键?