summaryrefslogtreecommitdiffstats
path: root/librpc/idl/winspool.idl
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--librpc/idl/winspool.idl878
1 files changed, 878 insertions, 0 deletions
diff --git a/librpc/idl/winspool.idl b/librpc/idl/winspool.idl
new file mode 100644
index 0000000..5497a67
--- /dev/null
+++ b/librpc/idl/winspool.idl
@@ -0,0 +1,878 @@
+#include "idl_types.h"
+
+/*
+ * IRemoteWinspool interface definitions
+ *
+ * This IDL defines the "Print System Asynchronous Remote Protocol" MS-PAR
+ * interface.
+ *
+ * Currently only eight functions in this interface have no matching functions
+ * in the "spoolss" interface. All other functions have a 1-to-1 match but
+ * different opcodes than the spoolss interface.
+ *
+ * Every request on this interface requires a object uuid of
+ * "9940CA8E-512F-4C58-88A9-61098D6896BD" to be sent along with the DCE/RPC
+ * header.
+ *
+ * On Windows, this interface uses [ncacn_ip_tcp] transport and requires
+ * DCERPC_AUTH_TYPE_SPNEGO and at least DCERPC_AUTH_LEVEL_PACKET authentication.
+ *
+ *
+ */
+
+import "misc.idl", "security.idl", "winreg.idl", "spoolss.idl";
+
+[
+ uuid("76f03f96-cdfd-44fc-a22c-64950A001209"),
+ version(1.0),
+ endpoint("ncacn_ip_tcp:"),
+ pointer_default(unique),
+ helpstring("IRemoteWinspool SubSystem")
+]
+ interface iremotewinspool
+{
+#if 0
+ /*
+ * pidl does not yet have a real [context_handle] implementation, so we
+ * just use some defines here.
+ */
+
+ typedef [context_handle] void *GDI_HANDLE;
+ typedef [context_handle] void *PRINTER_HANDLE;
+ typedef [context_handle] void *RMTNTFY_HANDLE;
+#else
+#define GDI_HANDLE policy_handle
+#define PRINTER_HANDLE policy_handle
+#define RMTNTFY_HANDLE policy_handle
+#endif
+
+ const string IREMOTEWINSPOOL_OBJECT_GUID = "9940CA8E-512F-4C58-88A9-61098D6896BD";
+
+ /******************/
+ /* Function: 0x00 */
+
+ typedef struct {
+ spoolss_NotifyInfo *pInfo;
+ } winspool_NOTIFY_REPLY_CONTAINER;
+
+ typedef struct {
+ spoolss_NotifyOption *pOptions;
+ } winspool_NOTIFY_OPTIONS_CONTAINER;
+
+ [public] WERROR winspool_AsyncOpenPrinter(
+ [in,unique] [string,charset(UTF16)] uint16 *pPrinterName,
+ [out] PRINTER_HANDLE *pHandle,
+ [in,unique] [string,charset(UTF16)] uint16 *pDatatype,
+ [in] spoolss_DevmodeContainer *pDevModeContainer,
+ [in] uint32 AccessRequired,
+ [in] spoolss_UserLevelCtr *pClientInfo
+ );
+
+ /******************/
+ /* Function: 0x01 */
+
+ WERROR winspool_AsyncAddPrinter(
+ [in,unique] [string,charset(UTF16)] uint16 *pName,
+ [in] spoolss_SetPrinterInfoCtr *pPrinterContainer,
+ [in] spoolss_DevmodeContainer *pDevModeContainer,
+ [in] sec_desc_buf *pSecurityContainer,
+ [in] spoolss_UserLevelCtr *pClientInfo,
+ [out] PRINTER_HANDLE *pHandle
+ );
+
+ /******************/
+ /* Function: 0x02 */
+
+ WERROR winspool_AsyncSetJob(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] uint32 JobId,
+ [in, unique] spoolss_JobInfoContainer *pJobContainer,
+ [in] uint32 Command
+ );
+
+ /******************/
+ /* Function: 0x03 */
+
+ WERROR winspool_AsyncGetJob(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] uint32 JobId,
+ [in] uint32 Level,
+ [in, out, unique, size_is(cbBuf)] uint8 *pJob,
+ [in] uint32 cbBuf,
+ [out] uint32 *pcbNeeded
+ );
+
+ /******************/
+ /* Function: 0x04 */
+
+ WERROR winspool_AsyncEnumJobs(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] uint32 FirstJob,
+ [in] uint32 NoJobs,
+ [in] uint32 Level,
+ [in, out, unique, size_is(cbBuf)] uint8 *pJob,
+ [in] uint32 cbBuf,
+ [out] uint32 *pcbNeeded,
+ [out] uint32 *pcReturned
+ );
+
+ /******************/
+ /* Function: 0x05 */
+
+ WERROR winspool_AsyncAddJob(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] uint32 Level,
+ [in, out, unique, size_is(cbBuf)] uint8 *pAddJob,
+ [in] uint32 cbBuf,
+ [out] uint32 *pcbNeeded
+ );
+
+ /******************/
+ /* Function: 0x06 */
+
+ WERROR winspool_AsyncScheduleJob(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] uint32 JobId
+ );
+
+ /******************/
+ /* Function: 0x07 */
+
+ WERROR winspool_AsyncDeletePrinter(
+ [in] PRINTER_HANDLE hPrinter
+ );
+
+ /******************/
+ /* Function: 0x08 */
+
+ [public] WERROR winspool_AsyncSetPrinter(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] spoolss_SetPrinterInfoCtr *pPrinterContainer,
+ [in] spoolss_DevmodeContainer *pDevModeContainer,
+ [in] sec_desc_buf *pSecurityContainer,
+ [in] uint32 Command
+ );
+
+ /******************/
+ /* Function: 0x09 */
+
+ [public] WERROR winspool_AsyncGetPrinter(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] uint32 Level,
+ [in, out, unique, size_is(cbBuf)] uint8 *pPrinter,
+ [in] uint32 cbBuf,
+ [out] uint32 *pcbNeeded
+ );
+
+ /******************/
+ /* Function: 0x0a */
+
+ WERROR winspool_AsyncStartDocPrinter(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] spoolss_DocumentInfoCtr *pDocInfoContainer,
+ [out] uint32 *pJobId
+ );
+
+ /******************/
+ /* Function: 0x0b */
+
+ WERROR winspool_AsyncStartPagePrinter(
+ [in] PRINTER_HANDLE hPrinter
+ );
+
+ /******************/
+ /* Function: 0x0c */
+
+ WERROR winspool_AsyncWritePrinter(
+ [in] PRINTER_HANDLE hPrinter,
+ [in, size_is(cbBuf)] uint8 *pBuf,
+ [in] uint32 cbBuf,
+ [out] uint32 *pcWritten
+ );
+
+ /******************/
+ /* Function: 0x0d */
+
+ WERROR winspool_AsyncEndPagePrinter(
+ [in] PRINTER_HANDLE hPrinter
+ );
+
+ /******************/
+ /* Function: 0x0e */
+
+ WERROR winspool_AsyncEndDocPrinter(
+ [in] PRINTER_HANDLE hPrinter
+ );
+
+ /******************/
+ /* Function: 0x0f */
+
+ WERROR winspool_AsyncAbortPrinter(
+ [in] PRINTER_HANDLE hPrinter
+ );
+
+ /******************/
+ /* Function: 0x10 */
+
+ [public] WERROR winspool_AsyncGetPrinterData(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] [string,charset(UTF16)] uint16 *pValueName,
+ [out] uint32 *pType,
+ [out, size_is(nSize)] uint8 *pData,
+ [in] uint32 nSize,
+ [out] uint32 *pcbNeeded
+ );
+
+ /******************/
+ /* Function: 0x11 */
+
+ WERROR winspool_AsyncGetPrinterDataEx(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] [string,charset(UTF16)] uint16 *pKeyName,
+ [in] [string,charset(UTF16)] uint16 *pValueName,
+ [out] uint32 *pType,
+ [out, size_is(nSize)] uint8 *pData,
+ [in] uint32 nSize,
+ [out] uint32 *pcbNeeded
+ );
+
+ /******************/
+ /* Function: 0x12 */
+
+ WERROR winspool_AsyncSetPrinterData(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] [string,charset(UTF16)] uint16 *pValueName,
+ [in] uint32 Type,
+ [in, size_is(cbData)] uint8 *pData,
+ [in] uint32 cbData
+ );
+
+ /******************/
+ /* Function: 0x13 */
+
+ WERROR winspool_AsyncSetPrinterDataEx(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] [string,charset(UTF16)] uint16 *pKeyName,
+ [in] [string,charset(UTF16)] uint16 *pValueName,
+ [in] uint32 Type,
+ [in, size_is(cbData)] uint8 *pData,
+ [in] uint32 cbData
+ );
+
+ /******************/
+ /* Function: 0x14 */
+
+ [public] WERROR winspool_AsyncClosePrinter(
+ [in, out] PRINTER_HANDLE *phPrinter
+ );
+
+ /******************/
+ /* Function: 0x15 */
+
+ WERROR winspool_AsyncAddForm(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] spoolss_AddFormInfoCtr *pFormInfoContainer
+ );
+
+ /******************/
+ /* Function: 0x16 */
+
+ WERROR winspool_AsyncDeleteForm(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] [string,charset(UTF16)] uint16 *pFormName
+ );
+
+ /******************/
+ /* Function: 0x17 */
+
+ WERROR winspool_AsyncGetForm(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] [string,charset(UTF16)] uint16 *pFormName,
+ [in] uint32 Level,
+ [in, out, unique, size_is(cbBuf)] uint8 *pForm,
+ [in] uint32 cbBuf,
+ [out] uint32 *pcbNeeded
+ );
+
+ /******************/
+ /* Function: 0x18 */
+
+ WERROR winspool_AsyncSetForm(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] [string,charset(UTF16)] uint16 *pFormName,
+ [in] spoolss_AddFormInfoCtr *pFormInfoContainer
+ );
+
+ /******************/
+ /* Function: 0x19 */
+
+ [public] WERROR winspool_AsyncEnumForms(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] uint32 Level,
+ [in, out, unique, size_is(cbBuf)] uint8 *pForm,
+ [in] uint32 cbBuf,
+ [out] uint32 *pcbNeeded,
+ [out] uint32 *pcReturned
+ );
+
+ /******************/
+ /* Function: 0x1a */
+
+ [public] WERROR winspool_AsyncGetPrinterDriver(
+ [in] PRINTER_HANDLE hPrinter,
+ [in,unique] [string,charset(UTF16)] uint16 *pEnvironment,
+ [in] uint32 Level,
+ [in, out, unique, size_is(cbBuf)] uint8 *pDriver,
+ [in] uint32 cbBuf,
+ [out] uint32 *pcbNeeded,
+ [in] uint32 dwClientMajorVersion,
+ [in] uint32 dwClientMinorVersion,
+ [out] uint32 *pdwServerMaxVersion,
+ [out] uint32 *pdwServerMinVersion
+ );
+
+ /******************/
+ /* Function: 0x1b */
+
+ WERROR winspool_AsyncEnumPrinterData(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] uint32 dwIndex,
+ [out, size_is(cbValueName/2)] uint16 *pValueName,
+ [in] uint32 cbValueName,
+ [out] uint32 *pcbValueName,
+ [out] uint32 *pType,
+ [out, size_is(cbData)] uint8 *pData,
+ [in] uint32 cbData,
+ [out] uint32 *pcbData
+ );
+
+ /******************/
+ /* Function: 0x1c */
+
+ [public] WERROR winspool_AsyncEnumPrinterDataEx(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] [string,charset(UTF16)] uint16 *pKeyName,
+ [out, size_is(cbEnumValues)] uint8 *pEnumValues,
+ [in] uint32 cbEnumValues,
+ [out] uint32 *pcbEnumValues,
+ [out] uint32 *pnEnumValues
+ );
+
+ /******************/
+ /* Function: 0x1d */
+
+ [public] WERROR winspool_AsyncEnumPrinterKey(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] [string,charset(UTF16)] uint16 *pKeyName,
+ [out, size_is(cbSubkey/2)] uint16 *pSubkey,
+ [in] uint32 cbSubkey,
+ [out] uint32 *pcbSubkey
+ );
+
+ /******************/
+ /* Function: 0x1e */
+
+ WERROR winspool_AsyncDeletePrinterData(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] [string,charset(UTF16)] uint16 *pValueName
+ );
+
+ /******************/
+ /* Function: 0x1f */
+
+ WERROR winspool_AsyncDeletePrinterDataEx(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] [string,charset(UTF16)] uint16 *pKeyName,
+ [in] [string,charset(UTF16)] uint16 *pValueName
+ );
+
+ /******************/
+ /* Function: 0x20 */
+
+ WERROR winspool_AsyncDeletePrinterKey(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] [string,charset(UTF16)] uint16 *pKeyName
+ );
+
+ /******************/
+ /* Function: 0x21 */
+
+ WERROR winspool_AsyncXcvData(
+ [in] PRINTER_HANDLE hXcv,
+ [in] [string,charset(UTF16)] uint16 *pszDataName,
+ [in, size_is(cbInputData)] uint8 *pInputData,
+ [in] uint32 cbInputData,
+ [out, size_is(cbOutputData)] uint8 *pOutputData,
+ [in] uint32 cbOutputData,
+ [out] uint32 *pcbOutputNeeded,
+ [in, out] uint32 *pdwStatus
+ );
+
+ /******************/
+ /* Function: 0x22 */
+
+ WERROR winspool_AsyncSendRecvBidiData (
+ [in] PRINTER_HANDLE hPrinter,
+ [in,unique] [string,charset(UTF16)] uint16 *pAction,
+ [in] RPC_BIDI_REQUEST_CONTAINER* pReqData,
+ [out] RPC_BIDI_RESPONSE_CONTAINER** ppRespData
+ );
+
+ /******************/
+ /* Function: 0x23 */
+
+ WERROR winspool_AsyncCreatePrinterIC(
+ [in] PRINTER_HANDLE hPrinter,
+ [out] GDI_HANDLE *pHandle,
+ [in] spoolss_DevmodeContainer *pDevModeContainer
+ );
+
+ /******************/
+ /* Function: 0x24 */
+
+ WERROR winspool_AsyncPlayGdiScriptOnPrinterIC(
+ [in] GDI_HANDLE hPrinterIC,
+ [in, size_is(cIn)] uint8 *pIn,
+ [in] uint32 cIn,
+ [out, size_is(cOut)] uint8 *pOut,
+ [in] uint32 cOut,
+ [in] uint32 ul
+ );
+
+ /******************/
+ /* Function: 0x25 */
+
+ WERROR winspool_AsyncDeletePrinterIC(
+ [in, out] GDI_HANDLE *phPrinterIC
+ );
+
+ /******************/
+ /* Function: 0x26 */
+
+ WERROR winspool_AsyncEnumPrinters(
+ [in] uint32 Flags,
+ [in,unique] [string,charset(UTF16)] uint16 *pName,
+ [in] uint32 Level,
+ [in, out, unique, size_is(cbBuf)] uint8 *pPrinterEnum,
+ [in] uint32 cbBuf,
+ [out] uint32 *pcbNeeded,
+ [out] uint32 *pcReturned
+ );
+
+ /******************/
+ /* Function: 0x27 */
+
+ [public] WERROR winspool_AsyncAddPrinterDriver(
+ [in,unique] [string,charset(UTF16)] uint16 *pName,
+ [in] spoolss_AddDriverInfoCtr *pDriverContainer,
+ [in] uint32 dwFileCopyFlags
+ );
+
+ /******************/
+ /* Function: 0x28 */
+
+ WERROR winspool_AsyncEnumPrinterDrivers(
+ [in,unique] [string,charset(UTF16)] uint16 *pName,
+ [in,unique] [string,charset(UTF16)] uint16 *pEnvironment,
+ [in] uint32 Level,
+ [in, out, unique, size_is(cbBuf)] uint8 *pDrivers,
+ [in] uint32 cbBuf,
+ [out] uint32 *pcbNeeded,
+ [out] uint32 *pcReturned
+ );
+
+ /******************/
+ /* Function: 0x29 */
+
+ [public] WERROR winspool_AsyncGetPrinterDriverDirectory(
+ [in,unique] [string,charset(UTF16)] uint16 *pName,
+ [in,unique] [string,charset(UTF16)] uint16 *pEnvironment,
+ [in] uint32 Level,
+ [in, out, unique, size_is(cbBuf)] uint8 *pDriverDirectory,
+ [in] uint32 cbBuf,
+ [out] uint32 *pcbNeeded
+ );
+
+ /******************/
+ /* Function: 0x2a */
+
+ WERROR winspool_AsyncDeletePrinterDriver(
+ [in,unique] [string,charset(UTF16)] uint16 *pName,
+ [in] [string,charset(UTF16)] uint16 *pEnvironment,
+ [in] [string,charset(UTF16)] uint16 *pDriverName
+ );
+
+ /******************/
+ /* Function: 0x2b */
+
+ WERROR winspool_AsyncDeletePrinterDriverEx(
+ [in,unique] [string,charset(UTF16)] uint16 *pName,
+ [in] [string,charset(UTF16)] uint16 *pEnvironment,
+ [in] [string,charset(UTF16)] uint16 *pDriverName,
+ [in] uint32 dwDeleteFlag,
+ [in] uint32 dwVersionNum
+ );
+
+ /******************/
+ /* Function: 0x2c */
+
+ WERROR winspool_AsyncAddPrintProcessor(
+ [in,unique] [string,charset(UTF16)] uint16 *pName,
+ [in] [string,charset(UTF16)] uint16 *pEnvironment,
+ [in] [string,charset(UTF16)] uint16 *pPathName,
+ [in] [string,charset(UTF16)] uint16 *pPrintProcessorName
+ );
+
+ /******************/
+ /* Function: 0x2d */
+
+ WERROR winspool_AsyncEnumPrintProcessors(
+ [in,unique] [string,charset(UTF16)] uint16 *pName,
+ [in,unique] [string,charset(UTF16)] uint16 *pEnvironment,
+ [in] uint32 Level,
+ [in, out, unique, size_is(cbBuf)] uint8 *pPrintProcessorInfo,
+ [in] uint32 cbBuf,
+ [out] uint32 *pcbNeeded,
+ [out] uint32 *pcReturned
+ );
+
+ /******************/
+ /* Function: 0x2e */
+
+ WERROR winspool_AsyncGetPrintProcessorDirectory(
+ [in,unique] [string,charset(UTF16)] uint16 *pName,
+ [in,unique] [string,charset(UTF16)] uint16 *pEnvironment,
+ [in] uint32 Level,
+ [in, out, unique, size_is(cbBuf)] uint8 *pPrintProcessorDirectory,
+ [in] uint32 cbBuf,
+ [out] uint32 *pcbNeeded
+ );
+
+ /******************/
+ /* Function: 0x2f */
+
+ WERROR winspool_AsyncEnumPorts(
+ [in,unique] [string,charset(UTF16)] uint16 *pName,
+ [in] uint32 Level,
+ [in, out, unique, size_is(cbBuf)] uint8 *pPort,
+ [in] uint32 cbBuf,
+ [out] uint32 *pcbNeeded,
+ [out] uint32 *pcReturned
+ );
+
+ /******************/
+ /* Function: 0x30 */
+
+ WERROR winspool_AsyncEnumMonitors(
+ [in,unique] [string,charset(UTF16)] uint16 *pName,
+ [in] uint32 Level,
+ [in, out, unique, size_is(cbBuf)] uint8 *pMonitor,
+ [in] uint32 cbBuf,
+ [out] uint32 *pcbNeeded,
+ [out] uint32 *pcReturned
+ );
+
+ /******************/
+ /* Function: 0x31 */
+
+ WERROR winspool_AsyncAddPort(
+ [in,unique] [string,charset(UTF16)] uint16 *pName,
+ [in] spoolss_SetPortInfoContainer *pPortContainer,
+ [in] spoolss_PortVarContainer *pPortVarContainer,
+ [in] [string,charset(UTF16)] uint16 *pMonitorName
+ );
+
+ /******************/
+ /* Function: 0x32 */
+
+ WERROR winspool_AsyncSetPort(
+ [in,unique] [string,charset(UTF16)] uint16 *pName,
+ [in,unique] [string,charset(UTF16)] uint16 *pPortName,
+ [in] spoolss_SetPortInfoContainer *pPortContainer
+ );
+
+ /******************/
+ /* Function: 0x33 */
+
+ WERROR winspool_AsyncAddMonitor(
+ [in,unique] [string,charset(UTF16)] uint16 *Name,
+ [in] spoolss_MonitorContainer *pMonitorContainer
+ );
+
+ /******************/
+ /* Function: 0x34 */
+
+ WERROR winspool_AsyncDeleteMonitor(
+ [in,unique] [string,charset(UTF16)] uint16 *Name,
+ [in,unique] [string,charset(UTF16)] uint16 *pEnvironment,
+ [in] [string,charset(UTF16)] uint16 *pMonitorName
+ );
+
+ /******************/
+ /* Function: 0x35 */
+
+ WERROR winspool_AsyncDeletePrintProcessor(
+ [in,unique] [string,charset(UTF16)] uint16 *Name,
+ [in,unique] [string,charset(UTF16)] uint16 *pEnvironment,
+ [in] [string,charset(UTF16)] uint16 *pPrintProcessorName
+ );
+
+ /******************/
+ /* Function: 0x36 */
+
+ WERROR winspool_AsyncEnumPrintProcessorDatatypes(
+ [in,unique] [string,charset(UTF16)] uint16 *pName,
+ [in,unique] [string,charset(UTF16)] uint16 *pPrintProcessorName,
+ [in] uint32 Level,
+ [in, out, unique, size_is(cbBuf)] uint8 *pDatatypes,
+ [in] uint32 cbBuf,
+ [out] uint32 *pcbNeeded,
+ [out] uint32 *pcReturned
+ );
+
+ /******************/
+ /* Function: 0x37 */
+
+ WERROR winspool_AsyncAddPerMachineConnection(
+ [in,unique] [string,charset(UTF16)] uint16 *pServer,
+ [in] [string,charset(UTF16)] uint16 *pPrinterName,
+ [in] [string,charset(UTF16)] uint16 *pPrintServer,
+ [in] [string,charset(UTF16)] uint16 *pProvider
+ );
+
+ /******************/
+ /* Function: 0x38 */
+
+ WERROR winspool_AsyncDeletePerMachineConnection(
+ [in,unique] [string,charset(UTF16)] uint16 *pServer,
+ [in] [string,charset(UTF16)] uint16 *pPrinterName
+ );
+
+ /******************/
+ /* Function: 0x39 */
+
+ WERROR winspool_AsyncEnumPerMachineConnections(
+ [in,unique] [string,charset(UTF16)] uint16 *pServer,
+ [in, out, unique, size_is(cbBuf)] uint8 *pPrinterEnum,
+ [in] uint32 cbBuf,
+ [out] uint32 *pcbNeeded,
+ [out] uint32 *pcReturned
+ );
+
+ /******************/
+ /* Function: 0x3a */
+
+ typedef enum {
+ winspool_PropertyTypeString = 1,
+ winspool_PropertyTypeInt32 = 2,
+ winspool_PropertyTypeInt64 = 3,
+ winspool_PropertyTypeByte = 4,
+ winspool_PropertyTypeTime = 5,
+ winspool_PropertyTypeDevMode = 6,
+ winspool_PropertyTypeSD = 7,
+ winspool_PropertyTypeNotificationReply = 8,
+ winspool_PropertyTypeNotificationOptions = 9
+ } winspool_PrintPropertyType;
+
+ typedef [ms_union,switch_type(winspool_PrintPropertyType)] union {
+ [case(winspool_PropertyTypeString)] [string,charset(UTF16)] uint16 *propertyString;
+ [case(winspool_PropertyTypeInt32)] uint32 propertyInt32;
+ [case(winspool_PropertyTypeInt64)] hyper propertyInt64;
+ [case(winspool_PropertyTypeByte)] uint8 propertyByte;
+ [case(winspool_PropertyTypeTime)] spoolss_TimeCtr propertyTimeContainer;
+ [case(winspool_PropertyTypeDevMode)] spoolss_DevmodeContainer propertyDevModeContainer;
+ [case(winspool_PropertyTypeSD)] sec_desc_buf propertySDContainer;
+ [case(winspool_PropertyTypeNotificationReply)] winspool_NOTIFY_REPLY_CONTAINER propertyReplyContainer;
+ [case(winspool_PropertyTypeNotificationOptions)] winspool_NOTIFY_OPTIONS_CONTAINER propertyOptionsContainer;
+ } winspool_PrintPropertyValueUnion;
+
+ typedef struct {
+ winspool_PrintPropertyType PropertyType;
+ [switch_is(PropertyType)] winspool_PrintPropertyValueUnion value;
+ } winspool_PrintPropertyValue;
+
+ typedef struct {
+ [string,charset(UTF16)] uint16 *propertyName;
+ winspool_PrintPropertyValue propertyValue;
+ } winspool_PrintNamedProperty;
+
+ typedef struct {
+ [range(0,50)] uint32 numberOfProperties;
+ [size_is(numberOfProperties), unique] winspool_PrintNamedProperty *propertiesCollection;
+ } winspool_PrintPropertiesCollection;
+
+ [public] HRESULT winspool_SyncRegisterForRemoteNotifications(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] winspool_PrintPropertiesCollection *pNotifyFilter,
+ [out] RMTNTFY_HANDLE *phRpcHandle
+ );
+
+ /******************/
+ /* Function: 0x3b */
+
+ HRESULT winspool_SyncUnRegisterForRemoteNotifications(
+ [in, out] RMTNTFY_HANDLE *phRpcHandle
+ );
+
+ /******************/
+ /* Function: 0x3c */
+
+ HRESULT winspool_SyncRefreshRemoteNotifications(
+ [in] RMTNTFY_HANDLE hRpcHandle,
+ [in] winspool_PrintPropertiesCollection *pNotifyFilter,
+ [out] winspool_PrintPropertiesCollection **ppNotifyData
+ );
+
+ /******************/
+ /* Function: 0x3d */
+
+ HRESULT winspool_AsyncGetRemoteNotifications(
+ [in] RMTNTFY_HANDLE hRpcHandle,
+ [out] winspool_PrintPropertiesCollection **ppNotifyData
+ );
+
+ /******************/
+ /* Function: 0x3e */
+
+ typedef [bitmap32bit] bitmap {
+ IPDFP_FLAG_NONE = 0x00000000,
+ IPDFP_COPY_ALL_FILES = 0x00000001
+ } winspool_InstallPrinterDriverFromPackageFlags;
+
+ HRESULT winspool_AsyncInstallPrinterDriverFromPackage(
+ [in,unique] [string,charset(UTF16)] uint16 *pszServer,
+ [in,unique] [string,charset(UTF16)] uint16 *pszInfPath,
+ [in] [string,charset(UTF16)] uint16 *pszDriverName,
+ [in] [string,charset(UTF16)] uint16 *pszEnvironment,
+ [in] winspool_InstallPrinterDriverFromPackageFlags dwFlags
+ );
+
+ /******************/
+ /* Function: 0x3f */
+
+ typedef [bitmap32bit] bitmap {
+ UPDP_FLAG_NONE = 0x00000000,
+ UPDP_UPLOAD_ALWAYS = 0x00000002,
+ UPDP_CHECK_DRIVERSTORE = 0x00000004
+ } winspool_UploadPrinterDriverPackageFlags;
+
+ HRESULT winspool_AsyncUploadPrinterDriverPackage(
+ [in,unique] [string,charset(UTF16)] uint16 *pszServer,
+ [in] [string,charset(UTF16)] uint16 *pszInfPath,
+ [in] [string,charset(UTF16)] uint16 *pszEnvironment,
+ [in] winspool_UploadPrinterDriverPackageFlags dwFlags,
+ [in, out, unique, size_is(*pcchDestInfPath)] [charset(UTF16)] uint16 *pszDestInfPath,
+ [in, out] uint32 *pcchDestInfPath
+ );
+
+ /******************/
+ /* Function: 0x40 */
+
+ [public] HRESULT winspool_AsyncGetCorePrinterDrivers(
+ [in,unique] [string,charset(UTF16)] uint16 *pszServer,
+ [in] [string,charset(UTF16)] uint16 *pszEnvironment,
+ [in] uint32 cchCoreDrivers,
+ [in, size_is(cchCoreDrivers)] uint16 *pszzCoreDriverDependencies,
+ [in] uint32 cCorePrinterDrivers,
+ [out, size_is(cCorePrinterDrivers)] spoolss_CorePrinterDriver *pCorePrinterDrivers
+ );
+
+ /******************/
+ /* Function: 0x41 */
+
+ HRESULT winspool_AsyncCorePrinterDriverInstalled(
+ [in,unique] [string,charset(UTF16)] uint16 *pszServer,
+ [in] [string,charset(UTF16)] uint16 *pszEnvironment,
+ [in] GUID CoreDriverGUID,
+ [in] NTTIME ftDriverDate,
+ [in] hyper dwlDriverVersion,
+ [out] int *pbDriverInstalled
+ );
+
+ /******************/
+ /* Function: 0x42 */
+
+ HRESULT winspool_AsyncGetPrinterDriverPackagePath(
+ [in,unique] [string,charset(UTF16)] uint16 *pszServer,
+ [in] [string,charset(UTF16)] uint16 *pszEnvironment,
+ [in,unique] [string,charset(UTF16)] uint16 *pszLanguage,
+ [in] [string,charset(UTF16)] uint16 *pszPackageID,
+ [in, out, unique, size_is(cchDriverPackageCab)] uint16 *pszDriverPackageCab,
+ [in] uint32 cchDriverPackageCab,
+ [out] uint32 *pcchRequiredSize
+ );
+
+ /******************/
+ /* Function: 0x43 */
+
+ HRESULT winspool_AsyncDeletePrinterDriverPackage(
+ [in,unique] [string,charset(UTF16)] uint16 *pszServer,
+ [in] [string,charset(UTF16)] uint16 *pszInfPath,
+ [in] [string,charset(UTF16)] uint16 *pszEnvironment
+ );
+
+ /******************/
+ /* Function: 0x44 */
+
+ WERROR winspool_AsyncReadPrinter(
+ [in] PRINTER_HANDLE hPrinter,
+ [out, size_is(cbBuf)] uint8 *pBuf,
+ [in] uint32 cbBuf,
+ [out] uint32 *pcNoBytesRead
+ );
+
+ /******************/
+ /* Function: 0x45 */
+
+ WERROR winspool_AsyncResetPrinter(
+ [in] PRINTER_HANDLE hPrinter,
+ [in,unique] [string,charset(UTF16)] uint16 *pDatatype,
+ [in] spoolss_DevmodeContainer *pDevModeContainer
+ );
+
+ /******************/
+ /* Function: 0x46 */
+
+ WERROR winspool_AsyncGetJobNamedPropertyValue(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] uint32 JobId,
+ [in] [string,charset(UTF16)] uint16 *pszName,
+ [out] spoolss_PrintPropertyValue *pValue
+ );
+
+ /******************/
+ /* Function: 0x47 */
+
+ [public] WERROR winspool_AsyncSetJobNamedProperty(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] uint32 JobId,
+ [in] spoolss_PrintNamedProperty *pProperty
+ );
+
+ /******************/
+ /* Function: 0x48 */
+
+ WERROR winspool_AsyncDeleteJobNamedProperty(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] uint32 JobId,
+ [in] [string,charset(UTF16)] uint16 *pszName
+ );
+
+ /******************/
+ /* Function: 0x49 */
+
+ WERROR winspool_AsyncEnumJobNamedProperties(
+ [in] PRINTER_HANDLE hPrinter,
+ [in] uint32 JobId,
+ [out] uint32 *pcProperties,
+ [out, size_is(,*pcProperties)] spoolss_PrintNamedProperty **ppProperties
+ );
+
+ /******************/
+ /* Function: 0x4a */
+
+ WERROR winspool_AsyncLogJobInfoForBranchOffice(
+ [in] PRINTER_HANDLE hPrinter,
+ [in,ref] spoolss_BranchOfficeJobDataContainer *pBranchOfficeJobDataContainer
+ );
+}