📄 winsplp.h
字号:
typedef struct _MONITOREX
{
DWORD dwMonitorSize;
MONITOR Monitor;
} MONITOREX, FAR *LPMONITOREX;
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)
(
HANDLE hMonitor,
LPWSTR pName,
HWND hWnd,
LPWSTR pMonitorName
);
BOOL (WINAPI *pfnAddPortEx)
(
HANDLE hMonitor,
LPWSTR pName,
DWORD Level,
LPBYTE lpBuffer,
LPWSTR lpMonitorName
);
BOOL (WINAPI *pfnConfigurePort)
(
HANDLE hMonitor,
LPWSTR pName,
HWND hWnd,
LPWSTR pPortName
);
BOOL (WINAPI *pfnDeletePort)
(
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
);
DWORD (WINAPI *pfnSendRecvBidiDataFromPort)
(
HANDLE hPort,
DWORD dwAccessBit,
LPCWSTR pAction,
PBIDI_REQUEST_CONTAINER pReqData,
PBIDI_RESPONSE_CONTAINER* ppResData
);
} MONITOR2, *PMONITOR2, FAR *LPMONITOR2;
#define MONITOR2_SIZE_WIN2K ( sizeof(DWORD) + (sizeof(PVOID)*18) )
typedef struct _MONITORUI
{
DWORD dwMonitorUISize;
BOOL (WINAPI *pfnAddPortUI)
(
PCWSTR pszServer,
HWND hWnd,
PCWSTR pszMonitorNameIn,
PWSTR *ppszPortNameOut
);
BOOL (WINAPI *pfnConfigurePortUI)
(
PCWSTR pName,
HWND hWnd,
PCWSTR pPortName
);
BOOL (WINAPI *pfnDeletePortUI)
(
PCWSTR pszServer,
HWND hWnd,
PCWSTR pszPortName
);
} MONITORUI, FAR *PMONITORUI;
HANDLE
CreatePrinterIC(
HANDLE hPrinter,
LPDEVMODEW pDevMode
);
BOOL
PlayGdiScriptOnPrinterIC(
HANDLE hPrinterIC,
LPBYTE pIn,
DWORD cIn,
LPBYTE pOut,
DWORD cOut,
DWORD ul
);
BOOL
DeletePrinterIC(
HANDLE hPrinterIC
);
BOOL
DevQueryPrint(
HANDLE hPrinter,
LPDEVMODE pDevMode,
DWORD *pResID
);
HANDLE
RevertToPrinterSelf(
VOID
);
BOOL
ImpersonatePrinterClient(
HANDLE hToken
);
BOOL
ReplyPrinterChangeNotification(
HANDLE hNotify,
DWORD fdwFlags,
PDWORD pdwResult,
PVOID pPrinterNotifyInfo
);
BOOL
PartialReplyPrinterChangeNotification(
HANDLE hNotify,
PPRINTER_NOTIFY_INFO_DATA pInfoDataSrc
);
PPRINTER_NOTIFY_INFO
RouterAllocPrinterNotifyInfo(
DWORD cPrinterNotifyInfoData
);
BOOL
RouterFreePrinterNotifyInfo(
PPRINTER_NOTIFY_INFO pInfo
);
PBIDI_RESPONSE_CONTAINER
RouterAllocBidiResponseContainer(
DWORD Count
);
PVOID
RouterAllocBidiMem (
IN size_t NumBytes
);
VOID
RouterFreeBidiMem (
IN PVOID pMemPointer
);
#define PRINTER_NOTIFY_INFO_DATA_COMPACT 1
BOOL
AppendPrinterNotifyInfoData(
PPRINTER_NOTIFY_INFO pInfoDest,
PPRINTER_NOTIFY_INFO_DATA pInfoDataSrc,
DWORD fdwFlags
);
DWORD
CallRouterFindFirstPrinterChangeNotification(
HANDLE hPrinter,
DWORD fdwFlags,
DWORD fdwOptions,
HANDLE hNotify,
PVOID pvReserved);
BOOL
ProvidorFindFirstPrinterChangeNotification(
HANDLE hPrinter,
DWORD fdwFlags,
DWORD fdwOptions,
HANDLE hNotify,
PVOID pvReserved0,
PVOID pvReserved1);
BOOL
ProvidorFindClosePrinterChangeNotification(
HANDLE hPrinter);
BOOL
SpoolerFindFirstPrinterChangeNotification(
HANDLE hPrinter,
DWORD fdwFlags,
DWORD fdwOptions,
PHANDLE phEvent,
PVOID pPrinterNotifyOptions,
PVOID pvReserved);
BOOL
SpoolerFindNextPrinterChangeNotification(
HANDLE hPrinter,
LPDWORD pfdwChange,
PVOID pvReserved0,
PVOID ppPrinterNotifyInfo);
VOID
SpoolerFreePrinterNotifyInfo(
PPRINTER_NOTIFY_INFO pInfo);
BOOL
SpoolerFindClosePrinterChangeNotification(
HANDLE hPrinter);
LPMONITOR2
WINAPI
InitializePrintMonitor2(
PMONITORINIT pMonitorInit,
PHANDLE phMonitor
);
BOOL
WINAPI
InitializeMonitorEx(
LPWSTR pRegistryRoot,
LPMONITOR pMonitor
);
LPMONITOREX
WINAPI
InitializePrintMonitor(
LPWSTR pRegistryRoot
);
PMONITORUI
WINAPI
InitializePrintMonitorUI(
VOID
);
//
// The following is added for new point-and-print support which allows
// specific files to be associated with a print queue (instead of a printer
// driver) using SetPrinterDataEx under the key "CopyFiles"
//
#define COPYFILE_EVENT_SET_PRINTER_DATAEX 1
#define COPYFILE_EVENT_DELETE_PRINTER 2
#define COPYFILE_EVENT_ADD_PRINTER_CONNECTION 3
#define COPYFILE_EVENT_DELETE_PRINTER_CONNECTION 4
#define COPYFILE_EVENT_FILES_CHANGED 5
BOOL
WINAPI
SpoolerCopyFileEvent(
LPWSTR pszPrinterName,
LPWSTR pszKey,
DWORD dwCopyFileEvent
);
#define COPYFILE_FLAG_CLIENT_SPOOLER 0x00000001
#define COPYFILE_FLAG_SERVER_SPOOLER 0x00000002
DWORD
WINAPI
GenerateCopyFilePaths(
IN LPCWSTR pszPrinterName,
IN LPCWSTR pszDirectory,
IN LPBYTE pSplClientInfo,
IN DWORD dwLevel,
IN OUT LPWSTR pszSourceDir,
IN OUT LPDWORD pcchSourceDirSize,
IN OUT LPWSTR pszTargetDir,
IN OUT LPDWORD pcchTargetDirSize,
IN DWORD dwFlags
);
typedef enum {
kMessageBox = 0
} UI_TYPE;
typedef struct {
DWORD cbSize; // sizeof(MESSAGEBOX_PARAMS)
LPWSTR pTitle; // Pointer to a null-terminated string for the title bar of the message box.
LPWSTR pMessage; // Pointer to a null-terminated string containing the message to display.
DWORD Style; // Specifies the contents and behavior of the message box
DWORD dwTimeout; // If bWait is TRUE, Timeout specifies the time, in seconds, that the function waits for the user's response.
BOOL bWait; // If TRUE, SplPromptUIInUsersSession does not return until the user responds or the time-out interval elapses.
// If Timeout is zero, SplPromptUIInUsersSession doesn't return until the user responds.
// If FALSE, the function returns immediately and pResponse returns IDASYNC.
} MESSAGEBOX_PARAMS, *PMESSAGEBOX_PARAMS;
typedef struct {
UI_TYPE UIType;
union {
MESSAGEBOX_PARAMS MessageBoxParams;
};
} SHOWUIPARAMS, *PSHOWUIPARAMS;
BOOL
SplPromptUIInUsersSession(
IN HANDLE hPrinter,
IN DWORD JobId,
IN PSHOWUIPARAMS pUIParams,
OUT DWORD *pResponse
);
DWORD
SplIsSessionZero(
IN HANDLE hPrinter,
IN DWORD JobId,
OUT BOOL *pIsSessionZero
);
#ifdef __cplusplus
} /* End of extern "C" { */
#endif /* __cplusplus */
#endif // _WINSPLP_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -