Artifact Content

Not logged in

Artifact cc2fc3e0b2848583aecade3df6015ed40f38a758


     1  module win32.winspool;
     2  
     3  // Translated from Microsoft Platform SDK August 2001 Edition
     4  // by Y.Tomino
     5  
     6  import win32.windef;
     7  import win32.winbase;
     8  import win32.wingdi;
     9  
    10  // #ifndef _WINSPOOL_
    11  // #define _WINSPOOL_
    12  
    13  // #ifdef _WINUSER_
    14  // #...
    15  // #endif
    16  
    17  // #ifdef __cplusplus
    18  // extern "C" {
    19  // #endif
    20  
    21  struct _PRINTER_INFO_1A {
    22    DWORD Flags;
    23    LPSTR pDescription;
    24    LPSTR pName;
    25    LPSTR pComment;
    26  }
    27  alias _PRINTER_INFO_1A PRINTER_INFO_1A;
    28  alias _PRINTER_INFO_1A* PPRINTER_INFO_1A;
    29  alias _PRINTER_INFO_1A* LPPRINTER_INFO_1A;
    30  
    31  struct _PRINTER_INFO_1W {
    32    DWORD Flags;
    33    LPWSTR pDescription;
    34    LPWSTR pName;
    35    LPWSTR pComment;
    36  }
    37  alias _PRINTER_INFO_1W PRINTER_INFO_1W;
    38  alias _PRINTER_INFO_1W* PPRINTER_INFO_1W;
    39  alias _PRINTER_INFO_1W* LPPRINTER_INFO_1W;
    40  
    41  // #ifdef UNICODE
    42  alias PRINTER_INFO_1W PRINTER_INFO_1;
    43  alias PPRINTER_INFO_1W PPRINTER_INFO_1;
    44  alias LPPRINTER_INFO_1W LPPRINTER_INFO_1;
    45  // #else
    46  // ...
    47  // #endif // UNICODE
    48  
    49  struct _PRINTER_INFO_2A {
    50    LPSTR pServerName;
    51    LPSTR pPrinterName;
    52    LPSTR pShareName;
    53    LPSTR pPortName;
    54    LPSTR pDriverName;
    55    LPSTR pComment;
    56    LPSTR pLocation;
    57    LPDEVMODEA pDevMode;
    58    LPSTR pSepFile;
    59    LPSTR pPrintProcessor;
    60    LPSTR pDatatype;
    61    LPSTR pParameters;
    62    PSECURITY_DESCRIPTOR pSecurityDescriptor;
    63    DWORD Attributes;
    64    DWORD Priority;
    65    DWORD DefaultPriority;
    66    DWORD StartTime;
    67    DWORD UntilTime;
    68    DWORD Status;
    69    DWORD cJobs;
    70    DWORD AveragePPM;
    71  }
    72  alias _PRINTER_INFO_2A PRINTER_INFO_2A;
    73  alias _PRINTER_INFO_2A* PPRINTER_INFO_2A;
    74  alias _PRINTER_INFO_2A* LPPRINTER_INFO_2A;
    75  
    76  struct _PRINTER_INFO_2W {
    77    LPWSTR pServerName;
    78    LPWSTR pPrinterName;
    79    LPWSTR pShareName;
    80    LPWSTR pPortName;
    81    LPWSTR pDriverName;
    82    LPWSTR pComment;
    83    LPWSTR pLocation;
    84    LPDEVMODEW pDevMode;
    85    LPWSTR pSepFile;
    86    LPWSTR pPrintProcessor;
    87    LPWSTR pDatatype;
    88    LPWSTR pParameters;
    89    PSECURITY_DESCRIPTOR pSecurityDescriptor;
    90    DWORD Attributes;
    91    DWORD Priority;
    92    DWORD DefaultPriority;
    93    DWORD StartTime;
    94    DWORD UntilTime;
    95    DWORD Status;
    96    DWORD cJobs;
    97    DWORD AveragePPM;
    98  }
    99  alias _PRINTER_INFO_2W PRINTER_INFO_2W;
   100  alias _PRINTER_INFO_2W* PPRINTER_INFO_2W;
   101  alias _PRINTER_INFO_2W* LPPRINTER_INFO_2W;
   102  
   103  // #ifdef UNICODE
   104  alias PRINTER_INFO_2W PRINTER_INFO_2;
   105  alias PPRINTER_INFO_2W PPRINTER_INFO_2;
   106  alias LPPRINTER_INFO_2W LPPRINTER_INFO_2;
   107  // #else
   108  // ...
   109  // #endif // UNICODE
   110  
   111  struct _PRINTER_INFO_3 {
   112    PSECURITY_DESCRIPTOR pSecurityDescriptor;
   113  }
   114  alias _PRINTER_INFO_3 PRINTER_INFO_3;
   115  alias _PRINTER_INFO_3* PPRINTER_INFO_3;
   116  alias _PRINTER_INFO_3* LPPRINTER_INFO_3;
   117  
   118  struct _PRINTER_INFO_4A {
   119    LPSTR pPrinterName;
   120    LPSTR pServerName;
   121    DWORD Attributes;
   122  }
   123  alias _PRINTER_INFO_4A PRINTER_INFO_4A;
   124  alias _PRINTER_INFO_4A* PPRINTER_INFO_4A;
   125  alias _PRINTER_INFO_4A* LPPRINTER_INFO_4A;
   126  
   127  struct _PRINTER_INFO_4W {
   128    LPWSTR pPrinterName;
   129    LPWSTR pServerName;
   130    DWORD Attributes;
   131  }
   132  alias _PRINTER_INFO_4W PRINTER_INFO_4W;
   133  alias _PRINTER_INFO_4W* PPRINTER_INFO_4W;
   134  alias _PRINTER_INFO_4W* LPPRINTER_INFO_4W;
   135  
   136  // #ifdef UNICODE
   137  alias PRINTER_INFO_4W PRINTER_INFO_4;
   138  alias PPRINTER_INFO_4W PPRINTER_INFO_4;
   139  alias LPPRINTER_INFO_4W LPPRINTER_INFO_4;
   140  // #else
   141  // ...
   142  // #endif // UNICODE
   143  
   144  struct _PRINTER_INFO_5A {
   145    LPSTR pPrinterName;
   146    LPSTR pPortName;
   147    DWORD Attributes;
   148    DWORD DeviceNotSelectedTimeout;
   149    DWORD TransmissionRetryTimeout;
   150  }
   151  alias _PRINTER_INFO_5A PRINTER_INFO_5A;
   152  alias _PRINTER_INFO_5A* PPRINTER_INFO_5A;
   153  alias _PRINTER_INFO_5A* LPPRINTER_INFO_5A;
   154  
   155  struct _PRINTER_INFO_5W {
   156    LPWSTR pPrinterName;
   157    LPWSTR pPortName;
   158    DWORD Attributes;
   159    DWORD DeviceNotSelectedTimeout;
   160    DWORD TransmissionRetryTimeout;
   161  }
   162  alias _PRINTER_INFO_5W PRINTER_INFO_5W;
   163  alias _PRINTER_INFO_5W* PPRINTER_INFO_5W;
   164  alias _PRINTER_INFO_5W* LPPRINTER_INFO_5W;
   165  
   166  // #ifdef UNICODE
   167  alias PRINTER_INFO_5W PRINTER_INFO_5;
   168  alias PPRINTER_INFO_5W PPRINTER_INFO_5;
   169  alias LPPRINTER_INFO_5W LPPRINTER_INFO_5;
   170  // #else
   171  // ...
   172  // #endif // UNICODE
   173  
   174  struct _PRINTER_INFO_6 {
   175    DWORD dwStatus;
   176  }
   177  alias _PRINTER_INFO_6 PRINTER_INFO_6;
   178  alias _PRINTER_INFO_6* PPRINTER_INFO_6;
   179  alias _PRINTER_INFO_6* LPPRINTER_INFO_6;
   180  
   181  struct _PRINTER_INFO_7A {
   182    LPSTR pszObjectGUID;
   183    DWORD dwAction;
   184  }
   185  alias _PRINTER_INFO_7A PRINTER_INFO_7A;
   186  alias _PRINTER_INFO_7A* PPRINTER_INFO_7A;
   187  alias _PRINTER_INFO_7A* LPPRINTER_INFO_7A;
   188  
   189  struct _PRINTER_INFO_7W {
   190    LPWSTR pszObjectGUID;
   191    DWORD dwAction;
   192  }
   193  alias _PRINTER_INFO_7W PRINTER_INFO_7W;
   194  alias _PRINTER_INFO_7W* PPRINTER_INFO_7W;
   195  alias _PRINTER_INFO_7W* LPPRINTER_INFO_7W;
   196  
   197  // #ifdef UNICODE
   198  alias PRINTER_INFO_7W PRINTER_INFO_7;
   199  alias PPRINTER_INFO_7W PPRINTER_INFO_7;
   200  alias LPPRINTER_INFO_7W LPPRINTER_INFO_7;
   201  // #else
   202  // ...
   203  // #endif // UNICODE
   204  
   205  enum : uint { DSPRINT_PUBLISH = 0x00000001 }
   206  enum : uint { DSPRINT_UPDATE = 0x00000002 }
   207  enum : uint { DSPRINT_UNPUBLISH = 0x00000004 }
   208  enum : uint { DSPRINT_REPUBLISH = 0x00000008 }
   209  enum : uint { DSPRINT_PENDING = 0x80000000 }
   210  
   211  struct _PRINTER_INFO_8A {
   212    LPDEVMODEA pDevMode;
   213  }
   214  alias _PRINTER_INFO_8A PRINTER_INFO_8A;
   215  alias _PRINTER_INFO_8A* PPRINTER_INFO_8A;
   216  alias _PRINTER_INFO_8A* LPPRINTER_INFO_8A;
   217  
   218  struct _PRINTER_INFO_8W {
   219    LPDEVMODEW pDevMode;
   220  }
   221  alias _PRINTER_INFO_8W PRINTER_INFO_8W;
   222  alias _PRINTER_INFO_8W* PPRINTER_INFO_8W;
   223  alias _PRINTER_INFO_8W* LPPRINTER_INFO_8W;
   224  
   225  // #ifdef UNICODE
   226  alias PRINTER_INFO_8W PRINTER_INFO_8;
   227  alias PPRINTER_INFO_8W PPRINTER_INFO_8;
   228  alias LPPRINTER_INFO_8W LPPRINTER_INFO_8;
   229  // #else
   230  // ...
   231  // #endif // UNICODE
   232  
   233  struct _PRINTER_INFO_9A {
   234    LPDEVMODEA pDevMode;
   235  }
   236  alias _PRINTER_INFO_9A PRINTER_INFO_9A;
   237  alias _PRINTER_INFO_9A* PPRINTER_INFO_9A;
   238  alias _PRINTER_INFO_9A* LPPRINTER_INFO_9A;
   239  
   240  struct _PRINTER_INFO_9W {
   241    LPDEVMODEW pDevMode;
   242  }
   243  alias _PRINTER_INFO_9W PRINTER_INFO_9W;
   244  alias _PRINTER_INFO_9W* PPRINTER_INFO_9W;
   245  alias _PRINTER_INFO_9W* LPPRINTER_INFO_9W;
   246  
   247  // #ifdef UNICODE
   248  alias PRINTER_INFO_9W PRINTER_INFO_9;
   249  alias PPRINTER_INFO_9W PPRINTER_INFO_9;
   250  alias LPPRINTER_INFO_9W LPPRINTER_INFO_9;
   251  // #else
   252  // ...
   253  // #endif // UNICODE
   254  
   255  enum : uint { PRINTER_CONTROL_PAUSE = 1 }
   256  enum : uint { PRINTER_CONTROL_RESUME = 2 }
   257  enum : uint { PRINTER_CONTROL_PURGE = 3 }
   258  enum : uint { PRINTER_CONTROL_SET_STATUS = 4 }
   259  
   260  enum : uint { PRINTER_STATUS_PAUSED = 0x00000001 }
   261  enum : uint { PRINTER_STATUS_ERROR = 0x00000002 }
   262  enum : uint { PRINTER_STATUS_PENDING_DELETION = 0x00000004 }
   263  enum : uint { PRINTER_STATUS_PAPER_JAM = 0x00000008 }
   264  enum : uint { PRINTER_STATUS_PAPER_OUT = 0x00000010 }
   265  enum : uint { PRINTER_STATUS_MANUAL_FEED = 0x00000020 }
   266  enum : uint { PRINTER_STATUS_PAPER_PROBLEM = 0x00000040 }
   267  enum : uint { PRINTER_STATUS_OFFLINE = 0x00000080 }
   268  enum : uint { PRINTER_STATUS_IO_ACTIVE = 0x00000100 }
   269  enum : uint { PRINTER_STATUS_BUSY = 0x00000200 }
   270  enum : uint { PRINTER_STATUS_PRINTING = 0x00000400 }
   271  enum : uint { PRINTER_STATUS_OUTPUT_BIN_FULL = 0x00000800 }
   272  enum : uint { PRINTER_STATUS_NOT_AVAILABLE = 0x00001000 }
   273  enum : uint { PRINTER_STATUS_WAITING = 0x00002000 }
   274  enum : uint { PRINTER_STATUS_PROCESSING = 0x00004000 }
   275  enum : uint { PRINTER_STATUS_INITIALIZING = 0x00008000 }
   276  enum : uint { PRINTER_STATUS_WARMING_UP = 0x00010000 }
   277  enum : uint { PRINTER_STATUS_TONER_LOW = 0x00020000 }
   278  enum : uint { PRINTER_STATUS_NO_TONER = 0x00040000 }
   279  enum : uint { PRINTER_STATUS_PAGE_PUNT = 0x00080000 }
   280  enum : uint { PRINTER_STATUS_USER_INTERVENTION = 0x00100000 }
   281  enum : uint { PRINTER_STATUS_OUT_OF_MEMORY = 0x00200000 }
   282  enum : uint { PRINTER_STATUS_DOOR_OPEN = 0x00400000 }
   283  enum : uint { PRINTER_STATUS_SERVER_UNKNOWN = 0x00800000 }
   284  enum : uint { PRINTER_STATUS_POWER_SAVE = 0x01000000 }
   285  
   286  enum : uint { PRINTER_ATTRIBUTE_QUEUED = 0x00000001 }
   287  enum : uint { PRINTER_ATTRIBUTE_DIRECT = 0x00000002 }
   288  enum : uint { PRINTER_ATTRIBUTE_DEFAULT = 0x00000004 }
   289  enum : uint { PRINTER_ATTRIBUTE_SHARED = 0x00000008 }
   290  enum : uint { PRINTER_ATTRIBUTE_NETWORK = 0x00000010 }
   291  enum : uint { PRINTER_ATTRIBUTE_HIDDEN = 0x00000020 }
   292  enum : uint { PRINTER_ATTRIBUTE_LOCAL = 0x00000040 }
   293  
   294  enum : uint { PRINTER_ATTRIBUTE_ENABLE_DEVQ = 0x00000080 }
   295  enum : uint { PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS = 0x00000100 }
   296  enum : uint { PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST = 0x00000200 }
   297  
   298  enum : uint { PRINTER_ATTRIBUTE_WORK_OFFLINE = 0x00000400 }
   299  enum : uint { PRINTER_ATTRIBUTE_ENABLE_BIDI = 0x00000800 }
   300  enum : uint { PRINTER_ATTRIBUTE_RAW_ONLY = 0x00001000 }
   301  enum : uint { PRINTER_ATTRIBUTE_PUBLISHED = 0x00002000 }
   302  enum : uint { PRINTER_ATTRIBUTE_FAX = 0x00004000 }
   303  
   304  enum : uint { NO_PRIORITY = 0 }
   305  enum : uint { MAX_PRIORITY = 99 }
   306  enum : uint { MIN_PRIORITY = 1 }
   307  enum : uint { DEF_PRIORITY = 1 }
   308  
   309  struct _JOB_INFO_1A {
   310    DWORD JobId;
   311    LPSTR pPrinterName;
   312    LPSTR pMachineName;
   313    LPSTR pUserName;
   314    LPSTR pDocument;
   315    LPSTR pDatatype;
   316    LPSTR pStatus;
   317    DWORD Status;
   318    DWORD Priority;
   319    DWORD Position;
   320    DWORD TotalPages;
   321    DWORD PagesPrinted;
   322    SYSTEMTIME Submitted;
   323  }
   324  alias _JOB_INFO_1A JOB_INFO_1A;
   325  alias _JOB_INFO_1A* PJOB_INFO_1A;
   326  alias _JOB_INFO_1A* LPJOB_INFO_1A;
   327  
   328  struct _JOB_INFO_1W {
   329    DWORD JobId;
   330    LPWSTR pPrinterName;
   331    LPWSTR pMachineName;
   332    LPWSTR pUserName;
   333    LPWSTR pDocument;
   334    LPWSTR pDatatype;
   335    LPWSTR pStatus;
   336    DWORD Status;
   337    DWORD Priority;
   338    DWORD Position;
   339    DWORD TotalPages;
   340    DWORD PagesPrinted;
   341    SYSTEMTIME Submitted;
   342  }
   343  alias _JOB_INFO_1W JOB_INFO_1W;
   344  alias _JOB_INFO_1W* PJOB_INFO_1W;
   345  alias _JOB_INFO_1W* LPJOB_INFO_1W;
   346  
   347  // #ifdef UNICODE
   348  alias JOB_INFO_1W JOB_INFO_1;
   349  alias PJOB_INFO_1W PJOB_INFO_1;
   350  alias LPJOB_INFO_1W LPJOB_INFO_1;
   351  // #else
   352  // ...
   353  // #endif // UNICODE
   354  
   355  struct _JOB_INFO_2A {
   356    DWORD JobId;
   357    LPSTR pPrinterName;
   358    LPSTR pMachineName;
   359    LPSTR pUserName;
   360    LPSTR pDocument;
   361    LPSTR pNotifyName;
   362    LPSTR pDatatype;
   363    LPSTR pPrintProcessor;
   364    LPSTR pParameters;
   365    LPSTR pDriverName;
   366    LPDEVMODEA pDevMode;
   367    LPSTR pStatus;
   368    PSECURITY_DESCRIPTOR pSecurityDescriptor;
   369    DWORD Status;
   370    DWORD Priority;
   371    DWORD Position;
   372    DWORD StartTime;
   373    DWORD UntilTime;
   374    DWORD TotalPages;
   375    DWORD Size;
   376    SYSTEMTIME Submitted;
   377    DWORD Time;
   378    DWORD PagesPrinted;
   379  }
   380  alias _JOB_INFO_2A JOB_INFO_2A;
   381  alias _JOB_INFO_2A* PJOB_INFO_2A;
   382  alias _JOB_INFO_2A* LPJOB_INFO_2A;
   383  
   384  struct _JOB_INFO_2W {
   385    DWORD JobId;
   386    LPWSTR pPrinterName;
   387    LPWSTR pMachineName;
   388    LPWSTR pUserName;
   389    LPWSTR pDocument;
   390    LPWSTR pNotifyName;
   391    LPWSTR pDatatype;
   392    LPWSTR pPrintProcessor;
   393    LPWSTR pParameters;
   394    LPWSTR pDriverName;
   395    LPDEVMODEW pDevMode;
   396    LPWSTR pStatus;
   397    PSECURITY_DESCRIPTOR pSecurityDescriptor;
   398    DWORD Status;
   399    DWORD Priority;
   400    DWORD Position;
   401    DWORD StartTime;
   402    DWORD UntilTime;
   403    DWORD TotalPages;
   404    DWORD Size;
   405    SYSTEMTIME Submitted;
   406    DWORD Time;
   407    DWORD PagesPrinted;
   408  }
   409  alias _JOB_INFO_2W JOB_INFO_2W;
   410  alias _JOB_INFO_2W* PJOB_INFO_2W;
   411  alias _JOB_INFO_2W* LPJOB_INFO_2W;
   412  
   413  // #ifdef UNICODE
   414  alias JOB_INFO_2W JOB_INFO_2;
   415  alias PJOB_INFO_2W PJOB_INFO_2;
   416  alias LPJOB_INFO_2W LPJOB_INFO_2;
   417  // #else
   418  // ...
   419  // #endif // UNICODE
   420  
   421  struct _JOB_INFO_3 {
   422    DWORD JobId;
   423    DWORD NextJobId;
   424    DWORD Reserved;
   425  }
   426  alias _JOB_INFO_3 JOB_INFO_3;
   427  alias _JOB_INFO_3* PJOB_INFO_3;
   428  alias _JOB_INFO_3* LPJOB_INFO_3;
   429  
   430  enum : uint { JOB_CONTROL_PAUSE = 1 }
   431  enum : uint { JOB_CONTROL_RESUME = 2 }
   432  enum : uint { JOB_CONTROL_CANCEL = 3 }
   433  enum : uint { JOB_CONTROL_RESTART = 4 }
   434  enum : uint { JOB_CONTROL_DELETE = 5 }
   435  enum : uint { JOB_CONTROL_SENT_TO_PRINTER = 6 }
   436  enum : uint { JOB_CONTROL_LAST_PAGE_EJECTED = 7 }
   437  
   438  enum : uint { JOB_STATUS_PAUSED = 0x00000001 }
   439  enum : uint { JOB_STATUS_ERROR = 0x00000002 }
   440  enum : uint { JOB_STATUS_DELETING = 0x00000004 }
   441  enum : uint { JOB_STATUS_SPOOLING = 0x00000008 }
   442  enum : uint { JOB_STATUS_PRINTING = 0x00000010 }
   443  enum : uint { JOB_STATUS_OFFLINE = 0x00000020 }
   444  enum : uint { JOB_STATUS_PAPEROUT = 0x00000040 }
   445  enum : uint { JOB_STATUS_PRINTED = 0x00000080 }
   446  enum : uint { JOB_STATUS_DELETED = 0x00000100 }
   447  enum : uint { JOB_STATUS_BLOCKED_DEVQ = 0x00000200 }
   448  enum : uint { JOB_STATUS_USER_INTERVENTION = 0x00000400 }
   449  enum : uint { JOB_STATUS_RESTART = 0x00000800 }
   450  enum : uint { JOB_STATUS_COMPLETE = 0x00001000 }
   451  
   452  enum : uint { JOB_POSITION_UNSPECIFIED = 0 }
   453  
   454  struct _ADDJOB_INFO_1A {
   455    LPSTR Path;
   456    DWORD JobId;
   457  }
   458  alias _ADDJOB_INFO_1A ADDJOB_INFO_1A;
   459  alias _ADDJOB_INFO_1A* PADDJOB_INFO_1A;
   460  alias _ADDJOB_INFO_1A* LPADDJOB_INFO_1A;
   461  
   462  struct _ADDJOB_INFO_1W {
   463    LPWSTR Path;
   464    DWORD JobId;
   465  }
   466  alias _ADDJOB_INFO_1W ADDJOB_INFO_1W;
   467  alias _ADDJOB_INFO_1W* PADDJOB_INFO_1W;
   468  alias _ADDJOB_INFO_1W* LPADDJOB_INFO_1W;
   469  
   470  // #ifdef UNICODE
   471  alias ADDJOB_INFO_1W ADDJOB_INFO_1;
   472  alias PADDJOB_INFO_1W PADDJOB_INFO_1;
   473  alias LPADDJOB_INFO_1W LPADDJOB_INFO_1;
   474  // #else
   475  // ...
   476  // #endif // UNICODE
   477  
   478  struct _DRIVER_INFO_1A {
   479    LPSTR pName;
   480  }
   481  alias _DRIVER_INFO_1A DRIVER_INFO_1A;
   482  alias _DRIVER_INFO_1A* PDRIVER_INFO_1A;
   483  alias _DRIVER_INFO_1A* LPDRIVER_INFO_1A;
   484  
   485  struct _DRIVER_INFO_1W {
   486    LPWSTR pName;
   487  }
   488  alias _DRIVER_INFO_1W DRIVER_INFO_1W;
   489  alias _DRIVER_INFO_1W* PDRIVER_INFO_1W;
   490  alias _DRIVER_INFO_1W* LPDRIVER_INFO_1W;
   491  
   492  // #ifdef UNICODE
   493  alias DRIVER_INFO_1W DRIVER_INFO_1;
   494  alias PDRIVER_INFO_1W PDRIVER_INFO_1;
   495  alias LPDRIVER_INFO_1W LPDRIVER_INFO_1;
   496  // #else
   497  // ...
   498  // #endif // UNICODE
   499  
   500  struct _DRIVER_INFO_2A {
   501    DWORD cVersion;
   502    LPSTR pName;
   503    LPSTR pEnvironment;
   504    LPSTR pDriverPath;
   505    LPSTR pDataFile;
   506    LPSTR pConfigFile;
   507  }
   508  alias _DRIVER_INFO_2A DRIVER_INFO_2A;
   509  alias _DRIVER_INFO_2A* PDRIVER_INFO_2A;
   510  alias _DRIVER_INFO_2A* LPDRIVER_INFO_2A;
   511  
   512  struct _DRIVER_INFO_2W {
   513    DWORD cVersion;
   514    LPWSTR pName;
   515    LPWSTR pEnvironment;
   516    LPWSTR pDriverPath;
   517    LPWSTR pDataFile;
   518    LPWSTR pConfigFile;
   519  }
   520  alias _DRIVER_INFO_2W DRIVER_INFO_2W;
   521  alias _DRIVER_INFO_2W* PDRIVER_INFO_2W;
   522  alias _DRIVER_INFO_2W* LPDRIVER_INFO_2W;
   523  
   524  // #ifdef UNICODE
   525  alias DRIVER_INFO_2W DRIVER_INFO_2;
   526  alias PDRIVER_INFO_2W PDRIVER_INFO_2;
   527  alias LPDRIVER_INFO_2W LPDRIVER_INFO_2;
   528  // #else
   529  // ...
   530  // #endif // UNICODE
   531  
   532  struct _DRIVER_INFO_3A {
   533    DWORD cVersion;
   534    LPSTR pName;
   535    LPSTR pEnvironment;
   536    LPSTR pDriverPath;
   537    LPSTR pDataFile;
   538    LPSTR pConfigFile;
   539    LPSTR pHelpFile;
   540    LPSTR pDependentFiles;
   541    LPSTR pMonitorName;
   542    LPSTR pDefaultDataType;
   543  }
   544  alias _DRIVER_INFO_3A DRIVER_INFO_3A;
   545  alias _DRIVER_INFO_3A* PDRIVER_INFO_3A;
   546  alias _DRIVER_INFO_3A* LPDRIVER_INFO_3A;
   547  
   548  struct _DRIVER_INFO_3W {
   549    DWORD cVersion;
   550    LPWSTR pName;
   551    LPWSTR pEnvironment;
   552    LPWSTR pDriverPath;
   553    LPWSTR pDataFile;
   554    LPWSTR pConfigFile;
   555    LPWSTR pHelpFile;
   556    LPWSTR pDependentFiles;
   557    LPWSTR pMonitorName;
   558    LPWSTR pDefaultDataType;
   559  }
   560  alias _DRIVER_INFO_3W DRIVER_INFO_3W;
   561  alias _DRIVER_INFO_3W* PDRIVER_INFO_3W;
   562  alias _DRIVER_INFO_3W* LPDRIVER_INFO_3W;
   563  
   564  // #ifdef UNICODE
   565  alias DRIVER_INFO_3W DRIVER_INFO_3;
   566  alias PDRIVER_INFO_3W PDRIVER_INFO_3;
   567  alias LPDRIVER_INFO_3W LPDRIVER_INFO_3;
   568  // #else
   569  // ...
   570  // #endif // UNICODE
   571  
   572  struct _DRIVER_INFO_4A {
   573    DWORD cVersion;
   574    LPSTR pName;
   575    LPSTR pEnvironment;
   576    LPSTR pDriverPath;
   577    LPSTR pDataFile;
   578    LPSTR pConfigFile;
   579    LPSTR pHelpFile;
   580    LPSTR pDependentFiles;
   581    LPSTR pMonitorName;
   582    LPSTR pDefaultDataType;
   583    LPSTR pszzPreviousNames;
   584  }
   585  alias _DRIVER_INFO_4A DRIVER_INFO_4A;
   586  alias _DRIVER_INFO_4A* PDRIVER_INFO_4A;
   587  alias _DRIVER_INFO_4A* LPDRIVER_INFO_4A;
   588  
   589  struct _DRIVER_INFO_4W {
   590    DWORD cVersion;
   591    LPWSTR pName;
   592    LPWSTR pEnvironment;
   593    LPWSTR pDriverPath;
   594    LPWSTR pDataFile;
   595    LPWSTR pConfigFile;
   596    LPWSTR pHelpFile;
   597    LPWSTR pDependentFiles;
   598    LPWSTR pMonitorName;
   599    LPWSTR pDefaultDataType;
   600    LPWSTR pszzPreviousNames;
   601  }
   602  alias _DRIVER_INFO_4W DRIVER_INFO_4W;
   603  alias _DRIVER_INFO_4W* PDRIVER_INFO_4W;
   604  alias _DRIVER_INFO_4W* LPDRIVER_INFO_4W;
   605  
   606  // #ifdef UNICODE
   607  alias DRIVER_INFO_4W DRIVER_INFO_4;
   608  alias PDRIVER_INFO_4W PDRIVER_INFO_4;
   609  alias LPDRIVER_INFO_4W LPDRIVER_INFO_4;
   610  // #else
   611  // ...
   612  // #endif // UNICODE
   613  
   614  struct _DRIVER_INFO_5A {
   615    DWORD cVersion;
   616    LPSTR pName;
   617    LPSTR pEnvironment;
   618    LPSTR pDriverPath;
   619    LPSTR pDataFile;
   620    LPSTR pConfigFile;
   621    DWORD dwDriverAttributes;
   622    DWORD dwConfigVersion;
   623    DWORD dwDriverVersion;
   624  }
   625  alias _DRIVER_INFO_5A DRIVER_INFO_5A;
   626  alias _DRIVER_INFO_5A* PDRIVER_INFO_5A;
   627  alias _DRIVER_INFO_5A* LPDRIVER_INFO_5A;
   628  
   629  struct _DRIVER_INFO_5W {
   630    DWORD cVersion;
   631    LPWSTR pName;
   632    LPWSTR pEnvironment;
   633    LPWSTR pDriverPath;
   634    LPWSTR pDataFile;
   635    LPWSTR pConfigFile;
   636    DWORD dwDriverAttributes;
   637    DWORD dwConfigVersion;
   638    DWORD dwDriverVersion;
   639  }
   640  alias _DRIVER_INFO_5W DRIVER_INFO_5W;
   641  alias _DRIVER_INFO_5W* PDRIVER_INFO_5W;
   642  alias _DRIVER_INFO_5W* LPDRIVER_INFO_5W;
   643  
   644  // #ifdef UNICODE
   645  alias DRIVER_INFO_5W DRIVER_INFO_5;
   646  alias PDRIVER_INFO_5W PDRIVER_INFO_5;
   647  alias LPDRIVER_INFO_5W LPDRIVER_INFO_5;
   648  // #else
   649  // ...
   650  // #endif // UNICODE
   651  
   652  struct _DRIVER_INFO_6A {
   653    DWORD cVersion;
   654    LPSTR pName;
   655    LPSTR pEnvironment;
   656    LPSTR pDriverPath;
   657    LPSTR pDataFile;
   658    LPSTR pConfigFile;
   659    LPSTR pHelpFile;
   660    LPSTR pDependentFiles;
   661    LPSTR pMonitorName;
   662    LPSTR pDefaultDataType;
   663    LPSTR pszzPreviousNames;
   664    FILETIME ftDriverDate;
   665    DWORDLONG dwlDriverVersion;
   666    LPSTR pszMfgName;
   667    LPSTR pszOEMUrl;
   668    LPSTR pszHardwareID;
   669    LPSTR pszProvider;
   670  }
   671  alias _DRIVER_INFO_6A DRIVER_INFO_6A;
   672  alias _DRIVER_INFO_6A* PDRIVER_INFO_6A;
   673  alias _DRIVER_INFO_6A* LPDRIVER_INFO_6A;
   674  
   675  struct _DRIVER_INFO_6W {
   676    DWORD cVersion;
   677    LPWSTR pName;
   678    LPWSTR pEnvironment;
   679    LPWSTR pDriverPath;
   680    LPWSTR pDataFile;
   681    LPWSTR pConfigFile;
   682    LPWSTR pHelpFile;
   683    LPWSTR pDependentFiles;
   684    LPWSTR pMonitorName;
   685    LPWSTR pDefaultDataType;
   686    LPWSTR pszzPreviousNames;
   687    FILETIME ftDriverDate;
   688    DWORDLONG dwlDriverVersion;
   689    LPWSTR pszMfgName;
   690    LPWSTR pszOEMUrl;
   691    LPWSTR pszHardwareID;
   692    LPWSTR pszProvider;
   693  }
   694  alias _DRIVER_INFO_6W DRIVER_INFO_6W;
   695  alias _DRIVER_INFO_6W* PDRIVER_INFO_6W;
   696  alias _DRIVER_INFO_6W* LPDRIVER_INFO_6W;
   697  
   698  // #ifdef UNICODE
   699  alias DRIVER_INFO_6W DRIVER_INFO_6;
   700  alias PDRIVER_INFO_6W PDRIVER_INFO_6;
   701  alias LPDRIVER_INFO_6W LPDRIVER_INFO_6;
   702  // #else
   703  // ...
   704  // #endif // UNICODE
   705  
   706  enum : uint { DRIVER_KERNELMODE = 0x00000001 }
   707  enum : uint { DRIVER_USERMODE = 0x00000002 }
   708  
   709  enum : uint { DPD_DELETE_UNUSED_FILES = 0x00000001 }
   710  enum : uint { DPD_DELETE_SPECIFIC_VERSION = 0x00000002 }
   711  enum : uint { DPD_DELETE_ALL_FILES = 0x00000004 }
   712  
   713  enum : uint { APD_STRICT_UPGRADE = 0x00000001 }
   714  enum : uint { APD_STRICT_DOWNGRADE = 0x00000002 }
   715  enum : uint { APD_COPY_ALL_FILES = 0x00000004 }
   716  enum : uint { APD_COPY_NEW_FILES = 0x00000008 }
   717  enum : uint { APD_COPY_FROM_DIRECTORY = 0x00000010 }
   718  
   719  struct _DOC_INFO_1A {
   720    LPSTR pDocName;
   721    LPSTR pOutputFile;
   722    LPSTR pDatatype;
   723  }
   724  alias _DOC_INFO_1A DOC_INFO_1A;
   725  alias _DOC_INFO_1A* PDOC_INFO_1A;
   726  alias _DOC_INFO_1A* LPDOC_INFO_1A;
   727  
   728  struct _DOC_INFO_1W {
   729    LPWSTR pDocName;
   730    LPWSTR pOutputFile;
   731    LPWSTR pDatatype;
   732  }
   733  alias _DOC_INFO_1W DOC_INFO_1W;
   734  alias _DOC_INFO_1W* PDOC_INFO_1W;
   735  alias _DOC_INFO_1W* LPDOC_INFO_1W;
   736  
   737  // #ifdef UNICODE
   738  alias DOC_INFO_1W DOC_INFO_1;
   739  alias PDOC_INFO_1W PDOC_INFO_1;
   740  alias LPDOC_INFO_1W LPDOC_INFO_1;
   741  // #else
   742  // ...
   743  // #endif // UNICODE
   744  
   745  struct _FORM_INFO_1A {
   746    DWORD Flags;
   747    LPSTR pName;
   748    SIZEL Size;
   749    RECTL ImageableArea;
   750  }
   751  alias _FORM_INFO_1A FORM_INFO_1A;
   752  alias _FORM_INFO_1A* PFORM_INFO_1A;
   753  alias _FORM_INFO_1A* LPFORM_INFO_1A;
   754  
   755  struct _FORM_INFO_1W {
   756    DWORD Flags;
   757    LPWSTR pName;
   758    SIZEL Size;
   759    RECTL ImageableArea;
   760  }
   761  alias _FORM_INFO_1W FORM_INFO_1W;
   762  alias _FORM_INFO_1W* PFORM_INFO_1W;
   763  alias _FORM_INFO_1W* LPFORM_INFO_1W;
   764  
   765  // #ifdef UNICODE
   766  alias FORM_INFO_1W FORM_INFO_1;
   767  alias PFORM_INFO_1W PFORM_INFO_1;
   768  alias LPFORM_INFO_1W LPFORM_INFO_1;
   769  // #else
   770  // ...
   771  // #endif // UNICODE
   772  
   773  struct _DOC_INFO_2A {
   774    LPSTR pDocName;
   775    LPSTR pOutputFile;
   776    LPSTR pDatatype;
   777    DWORD dwMode;
   778    DWORD JobId;
   779  }
   780  alias _DOC_INFO_2A DOC_INFO_2A;
   781  alias _DOC_INFO_2A* PDOC_INFO_2A;
   782  alias _DOC_INFO_2A* LPDOC_INFO_2A;
   783  
   784  struct _DOC_INFO_2W {
   785    LPWSTR pDocName;
   786    LPWSTR pOutputFile;
   787    LPWSTR pDatatype;
   788    DWORD dwMode;
   789    DWORD JobId;
   790  }
   791  alias _DOC_INFO_2W DOC_INFO_2W;
   792  alias _DOC_INFO_2W* PDOC_INFO_2W;
   793  alias _DOC_INFO_2W* LPDOC_INFO_2W;
   794  
   795  // #ifdef UNICODE
   796  alias DOC_INFO_2W DOC_INFO_2;
   797  alias PDOC_INFO_2W PDOC_INFO_2;
   798  alias LPDOC_INFO_2W LPDOC_INFO_2;
   799  // #else
   800  // ...
   801  // #endif // UNICODE
   802  
   803  enum : uint { DI_CHANNEL = 1 }
   804  
   805  enum : uint { DI_READ_SPOOL_JOB = 3 }
   806  
   807  struct _DOC_INFO_3A {
   808    LPSTR pDocName;
   809    LPSTR pOutputFile;
   810    LPSTR pDatatype;
   811    DWORD dwFlags;
   812  }
   813  alias _DOC_INFO_3A DOC_INFO_3A;
   814  alias _DOC_INFO_3A* PDOC_INFO_3A;
   815  alias _DOC_INFO_3A* LPDOC_INFO_3A;
   816  
   817  struct _DOC_INFO_3W {
   818    LPWSTR pDocName;
   819    LPWSTR pOutputFile;
   820    LPWSTR pDatatype;
   821    DWORD dwFlags;
   822  }
   823  alias _DOC_INFO_3W DOC_INFO_3W;
   824  alias _DOC_INFO_3W* PDOC_INFO_3W;
   825  alias _DOC_INFO_3W* LPDOC_INFO_3W;
   826  
   827  // #ifdef UNICODE
   828  alias DOC_INFO_3W DOC_INFO_3;
   829  alias PDOC_INFO_3W PDOC_INFO_3;
   830  alias LPDOC_INFO_3W LPDOC_INFO_3;
   831  // #else
   832  // ...
   833  // #endif // UNICODE
   834  
   835  enum : uint { DI_MEMORYMAP_WRITE = 0x00000001 }
   836  
   837  enum : uint { FORM_USER = 0x00000000 }
   838  enum : uint { FORM_BUILTIN = 0x00000001 }
   839  enum : uint { FORM_PRINTER = 0x00000002 }
   840  
   841  struct _PRINTPROCESSOR_INFO_1A {
   842    LPSTR pName;
   843  }
   844  alias _PRINTPROCESSOR_INFO_1A PRINTPROCESSOR_INFO_1A;
   845  alias _PRINTPROCESSOR_INFO_1A* PPRINTPROCESSOR_INFO_1A;
   846  alias _PRINTPROCESSOR_INFO_1A* LPPRINTPROCESSOR_INFO_1A;
   847  
   848  struct _PRINTPROCESSOR_INFO_1W {
   849    LPWSTR pName;
   850  }
   851  alias _PRINTPROCESSOR_INFO_1W PRINTPROCESSOR_INFO_1W;
   852  alias _PRINTPROCESSOR_INFO_1W* PPRINTPROCESSOR_INFO_1W;
   853  alias _PRINTPROCESSOR_INFO_1W* LPPRINTPROCESSOR_INFO_1W;
   854  
   855  // #ifdef UNICODE
   856  alias PRINTPROCESSOR_INFO_1W PRINTPROCESSOR_INFO_1;
   857  alias PPRINTPROCESSOR_INFO_1W PPRINTPROCESSOR_INFO_1;
   858  alias LPPRINTPROCESSOR_INFO_1W LPPRINTPROCESSOR_INFO_1;
   859  // #else
   860  // ...
   861  // #endif // UNICODE
   862  
   863  struct _PRINTPROCESSOR_CAPS_1 {
   864    DWORD dwLevel;
   865    DWORD dwNupOptions;
   866    DWORD dwPageOrderFlags;
   867    DWORD dwNumberOfCopies;
   868  }
   869  alias _PRINTPROCESSOR_CAPS_1 PRINTPROCESSOR_CAPS_1;
   870  alias _PRINTPROCESSOR_CAPS_1* PPRINTPROCESSOR_CAPS_1;
   871  
   872  enum : uint { NORMAL_PRINT = 0x00000000 }
   873  enum : uint { REVERSE_PRINT = 0x00000001 }
   874  
   875  struct _PORT_INFO_1A {
   876    LPSTR pName;
   877  }
   878  alias _PORT_INFO_1A PORT_INFO_1A;
   879  alias _PORT_INFO_1A* PPORT_INFO_1A;
   880  alias _PORT_INFO_1A* LPPORT_INFO_1A;
   881  
   882  struct _PORT_INFO_1W {
   883    LPWSTR pName;
   884  }
   885  alias _PORT_INFO_1W PORT_INFO_1W;
   886  alias _PORT_INFO_1W* PPORT_INFO_1W;
   887  alias _PORT_INFO_1W* LPPORT_INFO_1W;
   888  
   889  // #ifdef UNICODE
   890  alias PORT_INFO_1W PORT_INFO_1;
   891  alias PPORT_INFO_1W PPORT_INFO_1;
   892  alias LPPORT_INFO_1W LPPORT_INFO_1;
   893  // #else
   894  // ...
   895  // #endif // UNICODE
   896  
   897  struct _PORT_INFO_2A {
   898    LPSTR pPortName;
   899    LPSTR pMonitorName;
   900    LPSTR pDescription;
   901    DWORD fPortType;
   902    DWORD Reserved;
   903  }
   904  alias _PORT_INFO_2A PORT_INFO_2A;
   905  alias _PORT_INFO_2A* PPORT_INFO_2A;
   906  alias _PORT_INFO_2A* LPPORT_INFO_2A;
   907  
   908  struct _PORT_INFO_2W {
   909    LPWSTR pPortName;
   910    LPWSTR pMonitorName;
   911    LPWSTR pDescription;
   912    DWORD fPortType;
   913    DWORD Reserved;
   914  }
   915  alias _PORT_INFO_2W PORT_INFO_2W;
   916  alias _PORT_INFO_2W* PPORT_INFO_2W;
   917  alias _PORT_INFO_2W* LPPORT_INFO_2W;
   918  
   919  // #ifdef UNICODE
   920  alias PORT_INFO_2W PORT_INFO_2;
   921  alias PPORT_INFO_2W PPORT_INFO_2;
   922  alias LPPORT_INFO_2W LPPORT_INFO_2;
   923  // #else
   924  // ...
   925  // #endif // UNICODE
   926  
   927  enum : uint { PORT_TYPE_WRITE = 0x0001 }
   928  enum : uint { PORT_TYPE_READ = 0x0002 }
   929  enum : uint { PORT_TYPE_REDIRECTED = 0x0004 }
   930  enum : uint { PORT_TYPE_NET_ATTACHED = 0x0008 }
   931  
   932  struct _PORT_INFO_3A {
   933    DWORD dwStatus;
   934    LPSTR pszStatus;
   935    DWORD dwSeverity;
   936  }
   937  alias _PORT_INFO_3A PORT_INFO_3A;
   938  alias _PORT_INFO_3A* PPORT_INFO_3A;
   939  alias _PORT_INFO_3A* LPPORT_INFO_3A;
   940  
   941  struct _PORT_INFO_3W {
   942    DWORD dwStatus;
   943    LPWSTR pszStatus;
   944    DWORD dwSeverity;
   945  }
   946  alias _PORT_INFO_3W PORT_INFO_3W;
   947  alias _PORT_INFO_3W* PPORT_INFO_3W;
   948  alias _PORT_INFO_3W* LPPORT_INFO_3W;
   949  
   950  // #ifdef UNICODE
   951  alias PORT_INFO_3W PORT_INFO_3;
   952  alias PPORT_INFO_3W PPORT_INFO_3;
   953  alias LPPORT_INFO_3W LPPORT_INFO_3;
   954  // #else
   955  // ...
   956  // #endif // UNICODE
   957  
   958  enum : uint { PORT_STATUS_TYPE_ERROR = 1 }
   959  enum : uint { PORT_STATUS_TYPE_WARNING = 2 }
   960  enum : uint { PORT_STATUS_TYPE_INFO = 3 }
   961  
   962  enum : uint { PORT_STATUS_OFFLINE = 1 }
   963  enum : uint { PORT_STATUS_PAPER_JAM = 2 }
   964  enum : uint { PORT_STATUS_PAPER_OUT = 3 }
   965  enum : uint { PORT_STATUS_OUTPUT_BIN_FULL = 4 }
   966  enum : uint { PORT_STATUS_PAPER_PROBLEM = 5 }
   967  enum : uint { PORT_STATUS_NO_TONER = 6 }
   968  enum : uint { PORT_STATUS_DOOR_OPEN = 7 }
   969  enum : uint { PORT_STATUS_USER_INTERVENTION = 8 }
   970  enum : uint { PORT_STATUS_OUT_OF_MEMORY = 9 }
   971  
   972  enum : uint { PORT_STATUS_TONER_LOW = 10 }
   973  
   974  enum : uint { PORT_STATUS_WARMING_UP = 11 }
   975  enum : uint { PORT_STATUS_POWER_SAVE = 12 }
   976  
   977  struct _MONITOR_INFO_1A {
   978    LPSTR pName;
   979  }
   980  alias _MONITOR_INFO_1A MONITOR_INFO_1A;
   981  alias _MONITOR_INFO_1A* PMONITOR_INFO_1A;
   982  alias _MONITOR_INFO_1A* LPMONITOR_INFO_1A;
   983  
   984  struct _MONITOR_INFO_1W {
   985    LPWSTR pName;
   986  }
   987  alias _MONITOR_INFO_1W MONITOR_INFO_1W;
   988  alias _MONITOR_INFO_1W* PMONITOR_INFO_1W;
   989  alias _MONITOR_INFO_1W* LPMONITOR_INFO_1W;
   990  
   991  // #ifdef UNICODE
   992  alias MONITOR_INFO_1W MONITOR_INFO_1;
   993  alias PMONITOR_INFO_1W PMONITOR_INFO_1;
   994  alias LPMONITOR_INFO_1W LPMONITOR_INFO_1;
   995  // #else
   996  // ...
   997  // #endif // UNICODE
   998  
   999  struct _MONITOR_INFO_2A {
  1000    LPSTR pName;
  1001    LPSTR pEnvironment;
  1002    LPSTR pDLLName;
  1003  }
  1004  alias _MONITOR_INFO_2A MONITOR_INFO_2A;
  1005  alias _MONITOR_INFO_2A* PMONITOR_INFO_2A;
  1006  alias _MONITOR_INFO_2A* LPMONITOR_INFO_2A;
  1007  
  1008  struct _MONITOR_INFO_2W {
  1009    LPWSTR pName;
  1010    LPWSTR pEnvironment;
  1011    LPWSTR pDLLName;
  1012  }
  1013  alias _MONITOR_INFO_2W MONITOR_INFO_2W;
  1014  alias _MONITOR_INFO_2W* PMONITOR_INFO_2W;
  1015  alias _MONITOR_INFO_2W* LPMONITOR_INFO_2W;
  1016  
  1017  // #ifdef UNICODE
  1018  alias MONITOR_INFO_2W MONITOR_INFO_2;
  1019  alias PMONITOR_INFO_2W PMONITOR_INFO_2;
  1020  alias LPMONITOR_INFO_2W LPMONITOR_INFO_2;
  1021  // #else
  1022  // ...
  1023  // #endif // UNICODE
  1024  
  1025  struct _DATATYPES_INFO_1A {
  1026    LPSTR pName;
  1027  }
  1028  alias _DATATYPES_INFO_1A DATATYPES_INFO_1A;
  1029  alias _DATATYPES_INFO_1A* PDATATYPES_INFO_1A;
  1030  alias _DATATYPES_INFO_1A* LPDATATYPES_INFO_1A;
  1031  
  1032  struct _DATATYPES_INFO_1W {
  1033    LPWSTR pName;
  1034  }
  1035  alias _DATATYPES_INFO_1W DATATYPES_INFO_1W;
  1036  alias _DATATYPES_INFO_1W* PDATATYPES_INFO_1W;
  1037  alias _DATATYPES_INFO_1W* LPDATATYPES_INFO_1W;
  1038  
  1039  // #ifdef UNICODE
  1040  alias DATATYPES_INFO_1W DATATYPES_INFO_1;
  1041  alias PDATATYPES_INFO_1W PDATATYPES_INFO_1;
  1042  alias LPDATATYPES_INFO_1W LPDATATYPES_INFO_1;
  1043  // #else
  1044  // ...
  1045  // #endif // UNICODE
  1046  
  1047  struct _PRINTER_DEFAULTSA {
  1048    LPSTR pDatatype;
  1049    LPDEVMODEA pDevMode;
  1050    ACCESS_MASK DesiredAccess;
  1051  }
  1052  alias _PRINTER_DEFAULTSA PRINTER_DEFAULTSA;
  1053  alias _PRINTER_DEFAULTSA* PPRINTER_DEFAULTSA;
  1054  alias _PRINTER_DEFAULTSA* LPPRINTER_DEFAULTSA;
  1055  
  1056  struct _PRINTER_DEFAULTSW {
  1057    LPWSTR pDatatype;
  1058    LPDEVMODEW pDevMode;
  1059    ACCESS_MASK DesiredAccess;
  1060  }
  1061  alias _PRINTER_DEFAULTSW PRINTER_DEFAULTSW;
  1062  alias _PRINTER_DEFAULTSW* PPRINTER_DEFAULTSW;
  1063  alias _PRINTER_DEFAULTSW* LPPRINTER_DEFAULTSW;
  1064  
  1065  // #ifdef UNICODE
  1066  alias PRINTER_DEFAULTSW PRINTER_DEFAULTS;
  1067  alias PPRINTER_DEFAULTSW PPRINTER_DEFAULTS;
  1068  alias LPPRINTER_DEFAULTSW LPPRINTER_DEFAULTS;
  1069  // #else
  1070  // ...
  1071  // #endif // UNICODE
  1072  
  1073  struct _PRINTER_ENUM_VALUESA {
  1074    LPSTR pValueName;
  1075    DWORD cbValueName;
  1076    DWORD dwType;
  1077    LPBYTE pData;
  1078    DWORD cbData;
  1079  }
  1080  alias _PRINTER_ENUM_VALUESA PRINTER_ENUM_VALUESA;
  1081  alias _PRINTER_ENUM_VALUESA* PPRINTER_ENUM_VALUESA;
  1082  alias _PRINTER_ENUM_VALUESA* LPPRINTER_ENUM_VALUESA;
  1083  
  1084  struct _PRINTER_ENUM_VALUESW {
  1085    LPWSTR pValueName;
  1086    DWORD cbValueName;
  1087    DWORD dwType;
  1088    LPBYTE pData;
  1089    DWORD cbData;
  1090  }
  1091  alias _PRINTER_ENUM_VALUESW PRINTER_ENUM_VALUESW;
  1092  alias _PRINTER_ENUM_VALUESW* PPRINTER_ENUM_VALUESW;
  1093  alias _PRINTER_ENUM_VALUESW* LPPRINTER_ENUM_VALUESW;
  1094  
  1095  // #ifdef UNICODE
  1096  alias PRINTER_ENUM_VALUESW PRINTER_ENUM_VALUES;
  1097  alias PPRINTER_ENUM_VALUESW PPRINTER_ENUM_VALUES;
  1098  alias LPPRINTER_ENUM_VALUESW LPPRINTER_ENUM_VALUES;
  1099  // #else
  1100  // ...
  1101  // #endif // UNICODE
  1102  
  1103  extern(Windows) export BOOL EnumPrintersA(
  1104       DWORD   Flags,
  1105       LPSTR Name,
  1106       DWORD   Level,
  1107       LPBYTE  pPrinterEnum,
  1108       DWORD   cbBuf,
  1109       LPDWORD pcbNeeded,
  1110       LPDWORD pcReturned
  1111  );
  1112  extern(Windows) export BOOL EnumPrintersW(
  1113       DWORD   Flags,
  1114       LPWSTR Name,
  1115       DWORD   Level,
  1116       LPBYTE  pPrinterEnum,
  1117       DWORD   cbBuf,
  1118       LPDWORD pcbNeeded,
  1119       LPDWORD pcReturned
  1120  );
  1121  // #ifdef UNICODE
  1122  alias EnumPrintersW EnumPrinters;
  1123  // #else
  1124  // #...
  1125  // #endif // !UNICODE
  1126  
  1127  enum : uint { PRINTER_ENUM_DEFAULT = 0x00000001 }
  1128  enum : uint { PRINTER_ENUM_LOCAL = 0x00000002 }
  1129  enum : uint { PRINTER_ENUM_CONNECTIONS = 0x00000004 }
  1130  enum : uint { PRINTER_ENUM_FAVORITE = 0x00000004 }
  1131  enum : uint { PRINTER_ENUM_NAME = 0x00000008 }
  1132  enum : uint { PRINTER_ENUM_REMOTE = 0x00000010 }
  1133  enum : uint { PRINTER_ENUM_SHARED = 0x00000020 }
  1134  enum : uint { PRINTER_ENUM_NETWORK = 0x00000040 }
  1135  
  1136  enum : uint { PRINTER_ENUM_EXPAND = 0x00004000 }
  1137  enum : uint { PRINTER_ENUM_CONTAINER = 0x00008000 }
  1138  
  1139  enum : uint { PRINTER_ENUM_ICONMASK = 0x00ff0000 }
  1140  enum : uint { PRINTER_ENUM_ICON1 = 0x00010000 }
  1141  enum : uint { PRINTER_ENUM_ICON2 = 0x00020000 }
  1142  enum : uint { PRINTER_ENUM_ICON3 = 0x00040000 }
  1143  enum : uint { PRINTER_ENUM_ICON4 = 0x00080000 }
  1144  enum : uint { PRINTER_ENUM_ICON5 = 0x00100000 }
  1145  enum : uint { PRINTER_ENUM_ICON6 = 0x00200000 }
  1146  enum : uint { PRINTER_ENUM_ICON7 = 0x00400000 }
  1147  enum : uint { PRINTER_ENUM_ICON8 = 0x00800000 }
  1148  enum : uint { PRINTER_ENUM_HIDE = 0x01000000 }
  1149  
  1150  enum : uint { SPOOL_FILE_PERSISTENT = 0x00000001 }
  1151  enum : uint { SPOOL_FILE_TEMPORARY = 0x00000002 }
  1152  
  1153  extern(Windows) export BOOL OpenPrinterA(
  1154      LPSTR    pPrinterName,
  1155      LPHANDLE phPrinter,
  1156      LPPRINTER_DEFAULTSA pDefault
  1157  );
  1158  extern(Windows) export BOOL OpenPrinterW(
  1159      LPWSTR    pPrinterName,
  1160      LPHANDLE phPrinter,
  1161      LPPRINTER_DEFAULTSW pDefault
  1162  );
  1163  // #ifdef UNICODE
  1164  alias OpenPrinterW OpenPrinter;
  1165  // #else
  1166  // #...
  1167  // #endif // !UNICODE
  1168  
  1169  extern(Windows) export BOOL ResetPrinterA(
  1170      HANDLE   hPrinter,
  1171      LPPRINTER_DEFAULTSA pDefault
  1172  );
  1173  extern(Windows) export BOOL ResetPrinterW(
  1174      HANDLE   hPrinter,
  1175      LPPRINTER_DEFAULTSW pDefault
  1176  );
  1177  // #ifdef UNICODE
  1178  alias ResetPrinterW ResetPrinter;
  1179  // #else
  1180  // #...
  1181  // #endif // !UNICODE
  1182  
  1183  extern(Windows) export BOOL SetJobA(
  1184       HANDLE  hPrinter,
  1185       DWORD   JobId,
  1186       DWORD   Level,
  1187       LPBYTE  pJob,
  1188       DWORD   Command
  1189  );
  1190  extern(Windows) export BOOL SetJobW(
  1191       HANDLE  hPrinter,
  1192       DWORD   JobId,
  1193       DWORD   Level,
  1194       LPBYTE  pJob,
  1195       DWORD   Command
  1196  );
  1197  // #ifdef UNICODE
  1198  alias SetJobW SetJob;
  1199  // #else
  1200  // #...
  1201  // #endif // !UNICODE
  1202  
  1203  extern(Windows) export BOOL GetJobA(
  1204      HANDLE   hPrinter,
  1205      DWORD    JobId,
  1206      DWORD    Level,
  1207      LPBYTE   pJob,
  1208      DWORD    cbBuf,
  1209      LPDWORD  pcbNeeded
  1210  );
  1211  extern(Windows) export BOOL GetJobW(
  1212      HANDLE   hPrinter,
  1213      DWORD    JobId,
  1214      DWORD    Level,
  1215      LPBYTE   pJob,
  1216      DWORD    cbBuf,
  1217      LPDWORD  pcbNeeded
  1218  );
  1219  // #ifdef UNICODE
  1220  alias GetJobW GetJob;
  1221  // #else
  1222  // #...
  1223  // #endif // !UNICODE
  1224  
  1225  extern(Windows) export BOOL EnumJobsA(
  1226       HANDLE  hPrinter,
  1227       DWORD   FirstJob,
  1228       DWORD   NoJobs,
  1229       DWORD   Level,
  1230       LPBYTE  pJob,
  1231       DWORD   cbBuf,
  1232       LPDWORD pcbNeeded,
  1233       LPDWORD pcReturned
  1234  );
  1235  extern(Windows) export BOOL EnumJobsW(
  1236       HANDLE  hPrinter,
  1237       DWORD   FirstJob,
  1238       DWORD   NoJobs,
  1239       DWORD   Level,
  1240       LPBYTE  pJob,
  1241       DWORD   cbBuf,
  1242       LPDWORD pcbNeeded,
  1243       LPDWORD pcReturned
  1244  );
  1245  // #ifdef UNICODE
  1246  alias EnumJobsW EnumJobs;
  1247  // #else
  1248  // #...
  1249  // #endif // !UNICODE
  1250  
  1251  extern(Windows) export HANDLE AddPrinterA(
  1252       LPSTR   pName,
  1253       DWORD   Level,
  1254       LPBYTE  pPrinter
  1255  );
  1256  extern(Windows) export HANDLE AddPrinterW(
  1257       LPWSTR   pName,
  1258       DWORD   Level,
  1259       LPBYTE  pPrinter
  1260  );
  1261  // #ifdef UNICODE
  1262  alias AddPrinterW AddPrinter;
  1263  // #else
  1264  // #...
  1265  // #endif // !UNICODE
  1266  
  1267  extern(Windows) export BOOL DeletePrinter(
  1268       HANDLE   hPrinter
  1269  );
  1270  
  1271  extern(Windows) export BOOL SetPrinterA(
  1272       HANDLE  hPrinter,
  1273       DWORD   Level,
  1274       LPBYTE  pPrinter,
  1275       DWORD   Command
  1276  );
  1277  extern(Windows) export BOOL SetPrinterW(
  1278       HANDLE  hPrinter,
  1279       DWORD   Level,
  1280       LPBYTE  pPrinter,
  1281       DWORD   Command
  1282  );
  1283  // #ifdef UNICODE
  1284  alias SetPrinterW SetPrinter;
  1285  // #else
  1286  // #...
  1287  // #endif // !UNICODE
  1288  
  1289  extern(Windows) export BOOL GetPrinterA(
  1290       HANDLE  hPrinter,
  1291       DWORD   Level,
  1292       LPBYTE  pPrinter,
  1293       DWORD   cbBuf,
  1294       LPDWORD pcbNeeded
  1295  );
  1296  extern(Windows) export BOOL GetPrinterW(
  1297       HANDLE  hPrinter,
  1298       DWORD   Level,
  1299       LPBYTE  pPrinter,
  1300       DWORD   cbBuf,
  1301       LPDWORD pcbNeeded
  1302  );
  1303  // #ifdef UNICODE
  1304  alias GetPrinterW GetPrinter;
  1305  // #else
  1306  // #...
  1307  // #endif // !UNICODE
  1308  
  1309  extern(Windows) export BOOL AddPrinterDriverA(
  1310       LPSTR   pName,
  1311        DWORD   Level,
  1312       LPBYTE  pDriverInfo
  1313  );
  1314  extern(Windows) export BOOL AddPrinterDriverW(
  1315       LPWSTR   pName,
  1316        DWORD   Level,
  1317       LPBYTE  pDriverInfo
  1318  );
  1319  // #ifdef UNICODE
  1320  alias AddPrinterDriverW AddPrinterDriver;
  1321  // #else
  1322  // #...
  1323  // #endif // !UNICODE
  1324  
  1325  extern(Windows) export BOOL AddPrinterDriverExA(
  1326       LPSTR   pName,
  1327       DWORD     Level,
  1328        LPBYTE pDriverInfo,
  1329       DWORD     dwFileCopyFlags
  1330  );
  1331  extern(Windows) export BOOL AddPrinterDriverExW(
  1332       LPWSTR   pName,
  1333       DWORD     Level,
  1334        LPBYTE pDriverInfo,
  1335       DWORD     dwFileCopyFlags
  1336  );
  1337  // #ifdef UNICODE
  1338  alias AddPrinterDriverExW AddPrinterDriverEx;
  1339  // #else
  1340  // #...
  1341  // #endif // !UNICODE
  1342  
  1343  extern(Windows) export BOOL EnumPrinterDriversA(
  1344       LPSTR   pName,
  1345       LPSTR   pEnvironment,
  1346       DWORD   Level,
  1347       LPBYTE  pDriverInfo,
  1348       DWORD   cbBuf,
  1349       LPDWORD pcbNeeded,
  1350       LPDWORD pcReturned
  1351  );
  1352  extern(Windows) export BOOL EnumPrinterDriversW(
  1353       LPWSTR   pName,
  1354       LPWSTR   pEnvironment,
  1355       DWORD   Level,
  1356       LPBYTE  pDriverInfo,
  1357       DWORD   cbBuf,
  1358       LPDWORD pcbNeeded,
  1359       LPDWORD pcReturned
  1360  );
  1361  // #ifdef UNICODE
  1362  alias EnumPrinterDriversW EnumPrinterDrivers;
  1363  // #else
  1364  // #...
  1365  // #endif // !UNICODE
  1366  
  1367  extern(Windows) export BOOL GetPrinterDriverA(
  1368       HANDLE  hPrinter,
  1369       LPSTR   pEnvironment,
  1370       DWORD   Level,
  1371       LPBYTE  pDriverInfo,
  1372       DWORD   cbBuf,
  1373       LPDWORD pcbNeeded
  1374  );
  1375  extern(Windows) export BOOL GetPrinterDriverW(
  1376       HANDLE  hPrinter,
  1377       LPWSTR   pEnvironment,
  1378       DWORD   Level,
  1379       LPBYTE  pDriverInfo,
  1380       DWORD   cbBuf,
  1381       LPDWORD pcbNeeded
  1382  );
  1383  // #ifdef UNICODE
  1384  alias GetPrinterDriverW GetPrinterDriver;
  1385  // #else
  1386  // #...
  1387  // #endif // !UNICODE
  1388  
  1389  extern(Windows) export BOOL GetPrinterDriverDirectoryA(
  1390       LPSTR   pName,
  1391       LPSTR   pEnvironment,
  1392       DWORD   Level,
  1393       LPBYTE  pDriverDirectory,
  1394       DWORD   cbBuf,
  1395       LPDWORD pcbNeeded
  1396  );
  1397  extern(Windows) export BOOL GetPrinterDriverDirectoryW(
  1398       LPWSTR   pName,
  1399       LPWSTR   pEnvironment,
  1400       DWORD   Level,
  1401       LPBYTE  pDriverDirectory,
  1402       DWORD   cbBuf,
  1403       LPDWORD pcbNeeded
  1404  );
  1405  // #ifdef UNICODE
  1406  alias GetPrinterDriverDirectoryW GetPrinterDriverDirectory;
  1407  // #else
  1408  // #...
  1409  // #endif // !UNICODE
  1410  
  1411  extern(Windows) export BOOL DeletePrinterDriverA(
  1412      LPSTR    pName,
  1413      LPSTR    pEnvironment,
  1414      LPSTR    pDriverName
  1415  );
  1416  extern(Windows) export BOOL DeletePrinterDriverW(
  1417      LPWSTR    pName,
  1418      LPWSTR    pEnvironment,
  1419      LPWSTR    pDriverName
  1420  );
  1421  // #ifdef UNICODE
  1422  alias DeletePrinterDriverW DeletePrinterDriver;
  1423  // #else
  1424  // #...
  1425  // #endif // !UNICODE
  1426  
  1427  extern(Windows) export BOOL DeletePrinterDriverExA(
  1428      LPSTR    pName,
  1429      LPSTR    pEnvironment,
  1430      LPSTR    pDriverName,
  1431      DWORD      dwDeleteFlag,
  1432      DWORD      dwVersionFlag
  1433  );
  1434  extern(Windows) export BOOL DeletePrinterDriverExW(
  1435      LPWSTR    pName,
  1436      LPWSTR    pEnvironment,
  1437      LPWSTR    pDriverName,
  1438      DWORD      dwDeleteFlag,
  1439      DWORD      dwVersionFlag
  1440  );
  1441  // #ifdef UNICODE
  1442  alias DeletePrinterDriverExW DeletePrinterDriverEx;
  1443  // #else
  1444  // #...
  1445  // #endif // !UNICODE
  1446  
  1447  extern(Windows) export BOOL AddPrintProcessorA(
  1448       LPSTR   pName,
  1449       LPSTR   pEnvironment,
  1450       LPSTR   pPathName,
  1451       LPSTR   pPrintProcessorName
  1452  );
  1453  extern(Windows) export BOOL AddPrintProcessorW(
  1454       LPWSTR   pName,
  1455       LPWSTR   pEnvironment,
  1456       LPWSTR   pPathName,
  1457       LPWSTR   pPrintProcessorName
  1458  );
  1459  // #ifdef UNICODE
  1460  alias AddPrintProcessorW AddPrintProcessor;
  1461  // #else
  1462  // #...
  1463  // #endif // !UNICODE
  1464  
  1465  extern(Windows) export BOOL EnumPrintProcessorsA(
  1466       LPSTR   pName,
  1467       LPSTR   pEnvironment,
  1468       DWORD   Level,
  1469       LPBYTE  pPrintProcessorInfo,
  1470       DWORD   cbBuf,
  1471       LPDWORD pcbNeeded,
  1472       LPDWORD pcReturned
  1473  );
  1474  extern(Windows) export BOOL EnumPrintProcessorsW(
  1475       LPWSTR   pName,
  1476       LPWSTR   pEnvironment,
  1477       DWORD   Level,
  1478       LPBYTE  pPrintProcessorInfo,
  1479       DWORD   cbBuf,
  1480       LPDWORD pcbNeeded,
  1481       LPDWORD pcReturned
  1482  );
  1483  // #ifdef UNICODE
  1484  alias EnumPrintProcessorsW EnumPrintProcessors;
  1485  // #else
  1486  // #...
  1487  // #endif // !UNICODE
  1488  
  1489  extern(Windows) export BOOL GetPrintProcessorDirectoryA(
  1490       LPSTR   pName,
  1491       LPSTR   pEnvironment,
  1492       DWORD   Level,
  1493       LPBYTE  pPrintProcessorInfo,
  1494       DWORD   cbBuf,
  1495       LPDWORD pcbNeeded
  1496  );
  1497  extern(Windows) export BOOL GetPrintProcessorDirectoryW(
  1498       LPWSTR   pName,
  1499       LPWSTR   pEnvironment,
  1500       DWORD   Level,
  1501       LPBYTE  pPrintProcessorInfo,
  1502       DWORD   cbBuf,
  1503       LPDWORD pcbNeeded
  1504  );
  1505  // #ifdef UNICODE
  1506  alias GetPrintProcessorDirectoryW GetPrintProcessorDirectory;
  1507  // #else
  1508  // #...
  1509  // #endif // !UNICODE
  1510  
  1511  extern(Windows) export BOOL EnumPrintProcessorDatatypesA(
  1512       LPSTR   pName,
  1513       LPSTR   pPrintProcessorName,
  1514       DWORD   Level,
  1515       LPBYTE  pDatatypes,
  1516       DWORD   cbBuf,
  1517       LPDWORD pcbNeeded,
  1518       LPDWORD pcReturned
  1519  );
  1520  extern(Windows) export BOOL EnumPrintProcessorDatatypesW(
  1521       LPWSTR   pName,
  1522       LPWSTR   pPrintProcessorName,
  1523       DWORD   Level,
  1524       LPBYTE  pDatatypes,
  1525       DWORD   cbBuf,
  1526       LPDWORD pcbNeeded,
  1527       LPDWORD pcReturned
  1528  );
  1529  // #ifdef UNICODE
  1530  alias EnumPrintProcessorDatatypesW EnumPrintProcessorDatatypes;
  1531  // #else
  1532  // #...
  1533  // #endif // !UNICODE
  1534  
  1535  extern(Windows) export BOOL DeletePrintProcessorA(
  1536       LPSTR   pName,
  1537       LPSTR   pEnvironment,
  1538       LPSTR   pPrintProcessorName
  1539  );
  1540  extern(Windows) export BOOL DeletePrintProcessorW(
  1541       LPWSTR   pName,
  1542       LPWSTR   pEnvironment,
  1543       LPWSTR   pPrintProcessorName
  1544  );
  1545  // #ifdef UNICODE
  1546  alias DeletePrintProcessorW DeletePrintProcessor;
  1547  // #else
  1548  // #...
  1549  // #endif // !UNICODE
  1550  
  1551  extern(Windows) export DWORD StartDocPrinterA(
  1552       HANDLE  hPrinter,
  1553       DWORD   Level,
  1554       LPBYTE  pDocInfo
  1555  );
  1556  extern(Windows) export DWORD StartDocPrinterW(
  1557       HANDLE  hPrinter,
  1558       DWORD   Level,
  1559       LPBYTE  pDocInfo
  1560  );
  1561  // #ifdef UNICODE
  1562  alias StartDocPrinterW StartDocPrinter;
  1563  // #else
  1564  // #...
  1565  // #endif // !UNICODE
  1566  
  1567  extern(Windows) export BOOL StartPagePrinter(
  1568       HANDLE  hPrinter
  1569  );
  1570  
  1571  extern(Windows) export BOOL WritePrinter(
  1572       HANDLE  hPrinter,
  1573       LPVOID  pBuf,
  1574       DWORD   cbBuf,
  1575       LPDWORD pcWritten
  1576  );
  1577  
  1578  extern(Windows) export BOOL FlushPrinter(
  1579       HANDLE   hPrinter,
  1580       LPVOID   pBuf,
  1581       DWORD    cbBuf,
  1582       LPDWORD pcWritten,
  1583       DWORD    cSleep
  1584  );
  1585  
  1586  extern(Windows) export BOOL EndPagePrinter(
  1587      HANDLE   hPrinter
  1588  );
  1589  
  1590  extern(Windows) export BOOL AbortPrinter(
  1591      HANDLE   hPrinter
  1592  );
  1593  
  1594  extern(Windows) export BOOL ReadPrinter(
  1595       HANDLE  hPrinter,
  1596       LPVOID  pBuf,
  1597       DWORD   cbBuf,
  1598       LPDWORD pNoBytesRead
  1599  );
  1600  
  1601  extern(Windows) export BOOL EndDocPrinter(
  1602      HANDLE   hPrinter
  1603  );
  1604  
  1605  extern(Windows) export BOOL AddJobA(
  1606       HANDLE  hPrinter,
  1607       DWORD   Level,
  1608       LPBYTE  pData,
  1609       DWORD   cbBuf,
  1610       LPDWORD pcbNeeded
  1611  );
  1612  extern(Windows) export BOOL AddJobW(
  1613       HANDLE  hPrinter,
  1614       DWORD   Level,
  1615       LPBYTE  pData,
  1616       DWORD   cbBuf,
  1617       LPDWORD pcbNeeded
  1618  );
  1619  // #ifdef UNICODE
  1620  alias AddJobW AddJob;
  1621  // #else
  1622  // #...
  1623  // #endif // !UNICODE
  1624  
  1625  extern(Windows) export BOOL ScheduleJob(
  1626       HANDLE  hPrinter,
  1627       DWORD   JobId
  1628  );
  1629  
  1630  extern(Windows) export BOOL PrinterProperties(
  1631       HWND    hWnd,
  1632       HANDLE  hPrinter
  1633  );
  1634  
  1635  extern(Windows) export LONG DocumentPropertiesA(
  1636       HWND      hWnd,
  1637       HANDLE    hPrinter,
  1638       LPSTR   pDeviceName,
  1639       PDEVMODEA pDevModeOutput,
  1640       PDEVMODEA pDevModeInput,
  1641       DWORD     fMode
  1642  );
  1643  extern(Windows) export LONG DocumentPropertiesW(
  1644       HWND      hWnd,
  1645       HANDLE    hPrinter,
  1646       LPWSTR   pDeviceName,
  1647       PDEVMODEW pDevModeOutput,
  1648       PDEVMODEW pDevModeInput,
  1649       DWORD     fMode
  1650  );
  1651  // #ifdef UNICODE
  1652  alias DocumentPropertiesW DocumentProperties;
  1653  // #else
  1654  // #...
  1655  // #endif // !UNICODE
  1656  
  1657  extern(Windows) export LONG AdvancedDocumentPropertiesA(
  1658       HWND    hWnd,
  1659       HANDLE  hPrinter,
  1660       LPSTR   pDeviceName,
  1661       PDEVMODEA pDevModeOutput,
  1662       PDEVMODEA pDevModeInput
  1663  );
  1664  extern(Windows) export LONG AdvancedDocumentPropertiesW(
  1665       HWND    hWnd,
  1666       HANDLE  hPrinter,
  1667       LPWSTR   pDeviceName,
  1668       PDEVMODEW pDevModeOutput,
  1669       PDEVMODEW pDevModeInput
  1670  );
  1671  // #ifdef UNICODE
  1672  alias AdvancedDocumentPropertiesW AdvancedDocumentProperties;
  1673  // #else
  1674  // #...
  1675  // #endif // !UNICODE
  1676  
  1677  extern(Windows) export DWORD GetPrinterDataA(
  1678       HANDLE   hPrinter,
  1679       LPSTR  pValueName,
  1680       LPDWORD  pType,
  1681       LPBYTE   pData,
  1682       DWORD    nSize,
  1683       LPDWORD  pcbNeeded
  1684  );
  1685  extern(Windows) export DWORD GetPrinterDataW(
  1686       HANDLE   hPrinter,
  1687       LPWSTR  pValueName,
  1688       LPDWORD  pType,
  1689       LPBYTE   pData,
  1690       DWORD    nSize,
  1691       LPDWORD  pcbNeeded
  1692  );
  1693  // #ifdef UNICODE
  1694  alias GetPrinterDataW GetPrinterData;
  1695  // #else
  1696  // #...
  1697  // #endif // !UNICODE
  1698  
  1699  extern(Windows) export DWORD GetPrinterDataExA(
  1700       HANDLE   hPrinter,
  1701       LPCSTR pKeyName,
  1702       LPCSTR pValueName,
  1703       LPDWORD  pType,
  1704       LPBYTE   pData,
  1705       DWORD    nSize,
  1706       LPDWORD  pcbNeeded
  1707  );
  1708  extern(Windows) export DWORD GetPrinterDataExW(
  1709       HANDLE   hPrinter,
  1710       LPCWSTR pKeyName,
  1711       LPCWSTR pValueName,
  1712       LPDWORD  pType,
  1713       LPBYTE   pData,
  1714       DWORD    nSize,
  1715       LPDWORD  pcbNeeded
  1716  );
  1717  // #ifdef UNICODE
  1718  alias GetPrinterDataExW GetPrinterDataEx;
  1719  // #else
  1720  // #...
  1721  // #endif // !UNICODE
  1722  
  1723  extern(Windows) export DWORD EnumPrinterDataA(
  1724       HANDLE   hPrinter,
  1725       DWORD    dwIndex,
  1726       LPSTR  pValueName,
  1727       DWORD    cbValueName,
  1728       LPDWORD  pcbValueName,
  1729       LPDWORD  pType,
  1730       LPBYTE   pData,
  1731       DWORD    cbData,
  1732       LPDWORD  pcbData
  1733  );
  1734  extern(Windows) export DWORD EnumPrinterDataW(
  1735       HANDLE   hPrinter,
  1736       DWORD    dwIndex,
  1737       LPWSTR  pValueName,
  1738       DWORD    cbValueName,
  1739       LPDWORD  pcbValueName,
  1740       LPDWORD  pType,
  1741       LPBYTE   pData,
  1742       DWORD    cbData,
  1743       LPDWORD  pcbData
  1744  );
  1745  // #ifdef UNICODE
  1746  alias EnumPrinterDataW EnumPrinterData;
  1747  // #else
  1748  // #...
  1749  // #endif // !UNICODE
  1750  
  1751  extern(Windows) export DWORD EnumPrinterDataExA(
  1752       HANDLE   hPrinter,
  1753       LPCSTR pKeyName,
  1754       LPBYTE   pEnumValues,
  1755       DWORD    cbEnumValues,
  1756       LPDWORD  pcbEnumValues,
  1757       LPDWORD  pnEnumValues
  1758  );
  1759  extern(Windows) export DWORD EnumPrinterDataExW(
  1760       HANDLE   hPrinter,
  1761       LPCWSTR pKeyName,
  1762       LPBYTE   pEnumValues,
  1763       DWORD    cbEnumValues,
  1764       LPDWORD  pcbEnumValues,
  1765       LPDWORD  pnEnumValues
  1766  );
  1767  // #ifdef UNICODE
  1768  alias EnumPrinterDataExW EnumPrinterDataEx;
  1769  // #else
  1770  // #...
  1771  // #endif // !UNICODE
  1772  
  1773  extern(Windows) export DWORD EnumPrinterKeyA(
  1774       HANDLE   hPrinter,
  1775       LPCSTR pKeyName,
  1776       LPSTR  pSubkey,
  1777       DWORD    cbSubkey,
  1778       LPDWORD  pcbSubkey
  1779  );
  1780  extern(Windows) export DWORD EnumPrinterKeyW(
  1781       HANDLE   hPrinter,
  1782       LPCWSTR pKeyName,
  1783       LPWSTR  pSubkey,
  1784       DWORD    cbSubkey,
  1785       LPDWORD  pcbSubkey
  1786  );
  1787  // #ifdef UNICODE
  1788  alias EnumPrinterKeyW EnumPrinterKey;
  1789  // #else
  1790  // #...
  1791  // #endif // !UNICODE
  1792  
  1793  extern(Windows) export DWORD SetPrinterDataA(
  1794       HANDLE  hPrinter,
  1795       LPSTR pValueName,
  1796       DWORD   Type,
  1797       LPBYTE  pData,
  1798       DWORD   cbData
  1799  );
  1800  extern(Windows) export DWORD SetPrinterDataW(
  1801       HANDLE  hPrinter,
  1802       LPWSTR pValueName,
  1803       DWORD   Type,
  1804       LPBYTE  pData,
  1805       DWORD   cbData
  1806  );
  1807  // #ifdef UNICODE
  1808  alias SetPrinterDataW SetPrinterData;
  1809  // #else
  1810  // #...
  1811  // #endif // !UNICODE
  1812  
  1813  extern(Windows) export DWORD SetPrinterDataExA(
  1814       HANDLE   hPrinter,
  1815       LPCSTR pKeyName,
  1816       LPCSTR pValueName,
  1817       DWORD    Type,
  1818       LPBYTE   pData,
  1819       DWORD    cbData
  1820  );
  1821  extern(Windows) export DWORD SetPrinterDataExW(
  1822       HANDLE   hPrinter,
  1823       LPCWSTR pKeyName,
  1824       LPCWSTR pValueName,
  1825       DWORD    Type,
  1826       LPBYTE   pData,
  1827       DWORD    cbData
  1828  );
  1829  // #ifdef UNICODE
  1830  alias SetPrinterDataExW SetPrinterDataEx;
  1831  // #else
  1832  // #...
  1833  // #endif // !UNICODE
  1834  
  1835  extern(Windows) export DWORD DeletePrinterDataA(
  1836       HANDLE  hPrinter,
  1837       LPSTR pValueName
  1838  );
  1839  extern(Windows) export DWORD DeletePrinterDataW(
  1840       HANDLE  hPrinter,
  1841       LPWSTR pValueName
  1842  );
  1843  // #ifdef UNICODE
  1844  alias DeletePrinterDataW DeletePrinterData;
  1845  // #else
  1846  // #...
  1847  // #endif // !UNICODE
  1848  
  1849  extern(Windows) export DWORD DeletePrinterDataExA(
  1850       HANDLE   hPrinter,
  1851       LPCSTR pKeyName,
  1852       LPCSTR pValueName
  1853  );
  1854  extern(Windows) export DWORD DeletePrinterDataExW(
  1855       HANDLE   hPrinter,
  1856       LPCWSTR pKeyName,
  1857       LPCWSTR pValueName
  1858  );
  1859  // #ifdef UNICODE
  1860  alias DeletePrinterDataExW DeletePrinterDataEx;
  1861  // #else
  1862  // #...
  1863  // #endif // !UNICODE
  1864  
  1865  extern(Windows) export DWORD DeletePrinterKeyA(
  1866       HANDLE   hPrinter,
  1867       LPCSTR pKeyName
  1868  );
  1869  extern(Windows) export DWORD DeletePrinterKeyW(
  1870       HANDLE   hPrinter,
  1871       LPCWSTR pKeyName
  1872  );
  1873  // #ifdef UNICODE
  1874  alias DeletePrinterKeyW DeletePrinterKey;
  1875  // #else
  1876  // #...
  1877  // #endif // !UNICODE
  1878  
  1879  enum : uint { PRINTER_NOTIFY_TYPE = 0x00 }
  1880  enum : uint { JOB_NOTIFY_TYPE = 0x01 }
  1881  
  1882  enum : uint { PRINTER_NOTIFY_FIELD_SERVER_NAME = 0x00 }
  1883  enum : uint { PRINTER_NOTIFY_FIELD_PRINTER_NAME = 0x01 }
  1884  enum : uint { PRINTER_NOTIFY_FIELD_SHARE_NAME = 0x02 }
  1885  enum : uint { PRINTER_NOTIFY_FIELD_PORT_NAME = 0x03 }
  1886  enum : uint { PRINTER_NOTIFY_FIELD_DRIVER_NAME = 0x04 }
  1887  enum : uint { PRINTER_NOTIFY_FIELD_COMMENT = 0x05 }
  1888  enum : uint { PRINTER_NOTIFY_FIELD_LOCATION = 0x06 }
  1889  enum : uint { PRINTER_NOTIFY_FIELD_DEVMODE = 0x07 }
  1890  enum : uint { PRINTER_NOTIFY_FIELD_SEPFILE = 0x08 }
  1891  enum : uint { PRINTER_NOTIFY_FIELD_PRINT_PROCESSOR = 0x09 }
  1892  enum : uint { PRINTER_NOTIFY_FIELD_PARAMETERS = 0x0A }
  1893  enum : uint { PRINTER_NOTIFY_FIELD_DATATYPE = 0x0B }
  1894  enum : uint { PRINTER_NOTIFY_FIELD_SECURITY_DESCRIPTOR = 0x0C }
  1895  enum : uint { PRINTER_NOTIFY_FIELD_ATTRIBUTES = 0x0D }
  1896  enum : uint { PRINTER_NOTIFY_FIELD_PRIORITY = 0x0E }
  1897  enum : uint { PRINTER_NOTIFY_FIELD_DEFAULT_PRIORITY = 0x0F }
  1898  enum : uint { PRINTER_NOTIFY_FIELD_START_TIME = 0x10 }
  1899  enum : uint { PRINTER_NOTIFY_FIELD_UNTIL_TIME = 0x11 }
  1900  enum : uint { PRINTER_NOTIFY_FIELD_STATUS = 0x12 }
  1901  enum : uint { PRINTER_NOTIFY_FIELD_STATUS_STRING = 0x13 }
  1902  enum : uint { PRINTER_NOTIFY_FIELD_CJOBS = 0x14 }
  1903  enum : uint { PRINTER_NOTIFY_FIELD_AVERAGE_PPM = 0x15 }
  1904  enum : uint { PRINTER_NOTIFY_FIELD_TOTAL_PAGES = 0x16 }
  1905  enum : uint { PRINTER_NOTIFY_FIELD_PAGES_PRINTED = 0x17 }
  1906  enum : uint { PRINTER_NOTIFY_FIELD_TOTAL_BYTES = 0x18 }
  1907  enum : uint { PRINTER_NOTIFY_FIELD_BYTES_PRINTED = 0x19 }
  1908  enum : uint { PRINTER_NOTIFY_FIELD_OBJECT_GUID = 0x1A }
  1909  
  1910  enum : uint { JOB_NOTIFY_FIELD_PRINTER_NAME = 0x00 }
  1911  enum : uint { JOB_NOTIFY_FIELD_MACHINE_NAME = 0x01 }
  1912  enum : uint { JOB_NOTIFY_FIELD_PORT_NAME = 0x02 }
  1913  enum : uint { JOB_NOTIFY_FIELD_USER_NAME = 0x03 }
  1914  enum : uint { JOB_NOTIFY_FIELD_NOTIFY_NAME = 0x04 }
  1915  enum : uint { JOB_NOTIFY_FIELD_DATATYPE = 0x05 }
  1916  enum : uint { JOB_NOTIFY_FIELD_PRINT_PROCESSOR = 0x06 }
  1917  enum : uint { JOB_NOTIFY_FIELD_PARAMETERS = 0x07 }
  1918  enum : uint { JOB_NOTIFY_FIELD_DRIVER_NAME = 0x08 }
  1919  enum : uint { JOB_NOTIFY_FIELD_DEVMODE = 0x09 }
  1920  enum : uint { JOB_NOTIFY_FIELD_STATUS = 0x0A }
  1921  enum : uint { JOB_NOTIFY_FIELD_STATUS_STRING = 0x0B }
  1922  enum : uint { JOB_NOTIFY_FIELD_SECURITY_DESCRIPTOR = 0x0C }
  1923  enum : uint { JOB_NOTIFY_FIELD_DOCUMENT = 0x0D }
  1924  enum : uint { JOB_NOTIFY_FIELD_PRIORITY = 0x0E }
  1925  enum : uint { JOB_NOTIFY_FIELD_POSITION = 0x0F }
  1926  enum : uint { JOB_NOTIFY_FIELD_SUBMITTED = 0x10 }
  1927  enum : uint { JOB_NOTIFY_FIELD_START_TIME = 0x11 }
  1928  enum : uint { JOB_NOTIFY_FIELD_UNTIL_TIME = 0x12 }
  1929  enum : uint { JOB_NOTIFY_FIELD_TIME = 0x13 }
  1930  enum : uint { JOB_NOTIFY_FIELD_TOTAL_PAGES = 0x14 }
  1931  enum : uint { JOB_NOTIFY_FIELD_PAGES_PRINTED = 0x15 }
  1932  enum : uint { JOB_NOTIFY_FIELD_TOTAL_BYTES = 0x16 }
  1933  enum : uint { JOB_NOTIFY_FIELD_BYTES_PRINTED = 0x17 }
  1934  
  1935  struct _PRINTER_NOTIFY_OPTIONS_TYPE {
  1936    WORD Type;
  1937    WORD Reserved0;
  1938    DWORD Reserved1;
  1939    DWORD Reserved2;
  1940    DWORD Count;
  1941    PWORD pFields;
  1942  }
  1943  alias _PRINTER_NOTIFY_OPTIONS_TYPE PRINTER_NOTIFY_OPTIONS_TYPE;
  1944  alias _PRINTER_NOTIFY_OPTIONS_TYPE* PPRINTER_NOTIFY_OPTIONS_TYPE;
  1945  alias _PRINTER_NOTIFY_OPTIONS_TYPE* LPPRINTER_NOTIFY_OPTIONS_TYPE;
  1946  
  1947  enum : uint { PRINTER_NOTIFY_OPTIONS_REFRESH = 0x01 }
  1948  
  1949  struct _PRINTER_NOTIFY_OPTIONS {
  1950    DWORD Version;
  1951    DWORD Flags;
  1952    DWORD Count;
  1953    PPRINTER_NOTIFY_OPTIONS_TYPE pTypes;
  1954  }
  1955  alias _PRINTER_NOTIFY_OPTIONS PRINTER_NOTIFY_OPTIONS;
  1956  alias _PRINTER_NOTIFY_OPTIONS* PPRINTER_NOTIFY_OPTIONS;
  1957  alias _PRINTER_NOTIFY_OPTIONS* LPPRINTER_NOTIFY_OPTIONS;
  1958  
  1959  enum : uint { PRINTER_NOTIFY_INFO_DISCARDED = 0x01 }
  1960  
  1961  struct _PRINTER_NOTIFY_INFO_DATA {
  1962    WORD Type;
  1963    WORD Field;
  1964    DWORD Reserved;
  1965    DWORD Id;
  1966  union {
  1967    DWORD adwData[2];
  1968  struct {
  1969    DWORD cbBuf;
  1970    LPVOID pBuf;
  1971  }
  1972  
  1973  }
  1974  
  1975  }
  1976  alias _PRINTER_NOTIFY_INFO_DATA PRINTER_NOTIFY_INFO_DATA;
  1977  alias _PRINTER_NOTIFY_INFO_DATA* PPRINTER_NOTIFY_INFO_DATA;
  1978  alias _PRINTER_NOTIFY_INFO_DATA* LPPRINTER_NOTIFY_INFO_DATA;
  1979  
  1980  struct _PRINTER_NOTIFY_INFO {
  1981    DWORD Version;
  1982    DWORD Flags;
  1983    DWORD Count;
  1984    PRINTER_NOTIFY_INFO_DATA aData[1];
  1985  }
  1986  alias _PRINTER_NOTIFY_INFO PRINTER_NOTIFY_INFO;
  1987  alias _PRINTER_NOTIFY_INFO* PPRINTER_NOTIFY_INFO;
  1988  alias _PRINTER_NOTIFY_INFO* LPPRINTER_NOTIFY_INFO;
  1989  
  1990  struct _BINARY_CONTAINER {
  1991    DWORD cbBuf;
  1992    LPBYTE pData;
  1993  }
  1994  alias _BINARY_CONTAINER BINARY_CONTAINER;
  1995  alias _BINARY_CONTAINER* PBINARY_CONTAINER;
  1996  
  1997  struct _BIDI_DATA {
  1998    DWORD dwBidiType;
  1999  union {
  2000    BOOL bData;
  2001    LONG iData;
  2002    LPWSTR sData;
  2003    FLOAT fData;
  2004    BINARY_CONTAINER biData;
  2005  }
  2006  
  2007  }
  2008  alias _BIDI_DATA BIDI_DATA;
  2009  alias _BIDI_DATA* PBIDI_DATA;
  2010  alias _BIDI_DATA* LPBIDI_DATA;
  2011  
  2012  struct _BIDI_REQUEST_DATA {
  2013    DWORD dwReqNumber;
  2014    LPWSTR pSchema;
  2015    BIDI_DATA data;
  2016  }
  2017  alias _BIDI_REQUEST_DATA BIDI_REQUEST_DATA;
  2018  alias _BIDI_REQUEST_DATA* PBIDI_REQUEST_DATA;
  2019  alias _BIDI_REQUEST_DATA* LPBIDI_REQUEST_DATA;
  2020  
  2021  struct _BIDI_REQUEST_CONTAINER {
  2022    DWORD Version;
  2023    DWORD Flags;
  2024    DWORD Count;
  2025    BIDI_REQUEST_DATA aData[ 1 ];
  2026  }
  2027  alias _BIDI_REQUEST_CONTAINER BIDI_REQUEST_CONTAINER;
  2028  alias _BIDI_REQUEST_CONTAINER* PBIDI_REQUEST_CONTAINER;
  2029  alias _BIDI_REQUEST_CONTAINER* LPBIDI_REQUEST_CONTAINER;
  2030  
  2031  struct _BIDI_RESPONSE_DATA {
  2032    DWORD dwResult;
  2033    DWORD dwReqNumber;
  2034    LPWSTR pSchema;
  2035    BIDI_DATA data;
  2036  }
  2037  alias _BIDI_RESPONSE_DATA BIDI_RESPONSE_DATA;
  2038  alias _BIDI_RESPONSE_DATA* PBIDI_RESPONSE_DATA;
  2039  alias _BIDI_RESPONSE_DATA* LPBIDI_RESPONSE_DATA;
  2040  
  2041  struct _BIDI_RESPONSE_CONTAINER {
  2042    DWORD Version;
  2043    DWORD Flags;
  2044    DWORD Count;
  2045    BIDI_RESPONSE_DATA aData[ 1 ];
  2046  }
  2047  alias _BIDI_RESPONSE_CONTAINER BIDI_RESPONSE_CONTAINER;
  2048  alias _BIDI_RESPONSE_CONTAINER* PBIDI_RESPONSE_CONTAINER;
  2049  alias _BIDI_RESPONSE_CONTAINER* LPBIDI_RESPONSE_CONTAINER;
  2050  
  2051  const wchar[] BIDI_ACTION_ENUM_SCHEMA = "EnumSchema";
  2052  const wchar[] BIDI_ACTION_GET = "Get";
  2053  const wchar[] BIDI_ACTION_SET = "Set";
  2054  const wchar[] BIDI_ACTION_GET_ALL = "GetAll";
  2055  
  2056  enum _0 {
  2057    BIDI_NULL = 0,
  2058    BIDI_INT = 1,
  2059    BIDI_FLOAT = 2,
  2060    BIDI_BOOL = 3,
  2061    BIDI_STRING = 4,
  2062    BIDI_TEXT = 5,
  2063    BIDI_ENUM = 6,
  2064    BIDI_BLOB = 7,
  2065  }
  2066  alias _0 BIDI_TYPE;
  2067  
  2068  enum : uint { BIDI_ACCESS_ADMINISTRATOR = 0x1 }
  2069  enum : uint { BIDI_ACCESS_USER = 0x2 }
  2070  
  2071  enum : uint { ERROR_BIDI_STATUS_OK = 0 }
  2072  alias ERROR_NOT_SUPPORTED ERROR_BIDI_NOT_SUPPORTED;
  2073  
  2074  enum : uint { ERROR_BIDI_ERROR_BASE = 13000 }
  2075  const uint ERROR_BIDI_STATUS_WARNING = ERROR_BIDI_ERROR_BASE + 1;
  2076  const uint ERROR_BIDI_SCHEMA_READ_ONLY = ERROR_BIDI_ERROR_BASE + 2;
  2077  const uint ERROR_BIDI_SERVER_OFFLINE = ERROR_BIDI_ERROR_BASE + 3;
  2078  const uint ERROR_BIDI_DEVICE_OFFLINE = ERROR_BIDI_ERROR_BASE + 4;
  2079  const uint ERROR_BIDI_SCHEMA_NOT_SUPPORTED = ERROR_BIDI_ERROR_BASE + 5;
  2080  
  2081  extern(Windows) export DWORD WaitForPrinterChange(
  2082       HANDLE  hPrinter,
  2083       DWORD   Flags
  2084  );
  2085  
  2086  extern(Windows) export HANDLE FindFirstPrinterChangeNotification(
  2087       HANDLE  hPrinter,
  2088       DWORD   fdwFlags,
  2089       DWORD   fdwOptions,
  2090       LPVOID  pPrinterNotifyOptions
  2091  );
  2092  
  2093  extern(Windows) export BOOL FindNextPrinterChangeNotification(
  2094       HANDLE hChange,
  2095       PDWORD pdwChange,
  2096       LPVOID pvReserved,
  2097       LPVOID *ppPrinterNotifyInfo
  2098  );
  2099  
  2100  extern(Windows) export BOOL FreePrinterNotifyInfo(
  2101       PPRINTER_NOTIFY_INFO pPrinterNotifyInfo
  2102  );
  2103  
  2104  extern(Windows) export BOOL FindClosePrinterChangeNotification(
  2105       HANDLE hChange
  2106  );
  2107  
  2108  enum : uint { PRINTER_CHANGE_ADD_PRINTER = 0x00000001 }
  2109  enum : uint { PRINTER_CHANGE_SET_PRINTER = 0x00000002 }
  2110  enum : uint { PRINTER_CHANGE_DELETE_PRINTER = 0x00000004 }
  2111  enum : uint { PRINTER_CHANGE_FAILED_CONNECTION_PRINTER = 0x00000008 }
  2112  enum : uint { PRINTER_CHANGE_PRINTER = 0x000000FF }
  2113  enum : uint { PRINTER_CHANGE_ADD_JOB = 0x00000100 }
  2114  enum : uint { PRINTER_CHANGE_SET_JOB = 0x00000200 }
  2115  enum : uint { PRINTER_CHANGE_DELETE_JOB = 0x00000400 }
  2116  enum : uint { PRINTER_CHANGE_WRITE_JOB = 0x00000800 }
  2117  enum : uint { PRINTER_CHANGE_JOB = 0x0000FF00 }
  2118  enum : uint { PRINTER_CHANGE_ADD_FORM = 0x00010000 }
  2119  enum : uint { PRINTER_CHANGE_SET_FORM = 0x00020000 }
  2120  enum : uint { PRINTER_CHANGE_DELETE_FORM = 0x00040000 }
  2121  enum : uint { PRINTER_CHANGE_FORM = 0x00070000 }
  2122  enum : uint { PRINTER_CHANGE_ADD_PORT = 0x00100000 }
  2123  enum : uint { PRINTER_CHANGE_CONFIGURE_PORT = 0x00200000 }
  2124  enum : uint { PRINTER_CHANGE_DELETE_PORT = 0x00400000 }
  2125  enum : uint { PRINTER_CHANGE_PORT = 0x00700000 }
  2126  enum : uint { PRINTER_CHANGE_ADD_PRINT_PROCESSOR = 0x01000000 }
  2127  enum : uint { PRINTER_CHANGE_DELETE_PRINT_PROCESSOR = 0x04000000 }
  2128  enum : uint { PRINTER_CHANGE_PRINT_PROCESSOR = 0x07000000 }
  2129  enum : uint { PRINTER_CHANGE_ADD_PRINTER_DRIVER = 0x10000000 }
  2130  enum : uint { PRINTER_CHANGE_SET_PRINTER_DRIVER = 0x20000000 }
  2131  enum : uint { PRINTER_CHANGE_DELETE_PRINTER_DRIVER = 0x40000000 }
  2132  enum : uint { PRINTER_CHANGE_PRINTER_DRIVER = 0x70000000 }
  2133  enum : uint { PRINTER_CHANGE_TIMEOUT = 0x80000000 }
  2134  enum : uint { PRINTER_CHANGE_ALL = 0x7777FFFF }
  2135  
  2136  extern(Windows) export DWORD PrinterMessageBoxA(
  2137       HANDLE  hPrinter,
  2138       DWORD   Error,
  2139       HWND    hWnd,
  2140       LPSTR   pText,
  2141       LPSTR   pCaption,
  2142       DWORD   dwType
  2143  );
  2144  extern(Windows) export DWORD PrinterMessageBoxW(
  2145       HANDLE  hPrinter,
  2146       DWORD   Error,
  2147       HWND    hWnd,
  2148       LPWSTR   pText,
  2149       LPWSTR   pCaption,
  2150       DWORD   dwType
  2151  );
  2152  // #ifdef UNICODE
  2153  alias PrinterMessageBoxW PrinterMessageBox;
  2154  // #else
  2155  // #...
  2156  // #endif // !UNICODE
  2157  
  2158  enum : uint { PRINTER_ERROR_INFORMATION = 0x80000000 }
  2159  enum : uint { PRINTER_ERROR_WARNING = 0x40000000 }
  2160  enum : uint { PRINTER_ERROR_SEVERE = 0x20000000 }
  2161  
  2162  enum : uint { PRINTER_ERROR_OUTOFPAPER = 0x00000001 }
  2163  enum : uint { PRINTER_ERROR_JAM = 0x00000002 }
  2164  enum : uint { PRINTER_ERROR_OUTOFTONER = 0x00000004 }
  2165  
  2166  extern(Windows) export BOOL ClosePrinter(
  2167       HANDLE hPrinter
  2168  );
  2169  
  2170  extern(Windows) export BOOL AddFormA(
  2171       HANDLE  hPrinter,
  2172       DWORD   Level,
  2173       LPBYTE  pForm
  2174  );
  2175  extern(Windows) export BOOL AddFormW(
  2176       HANDLE  hPrinter,
  2177       DWORD   Level,
  2178       LPBYTE  pForm
  2179  );
  2180  // #ifdef UNICODE
  2181  alias AddFormW AddForm;
  2182  // #else
  2183  // #...
  2184  // #endif // !UNICODE
  2185  
  2186  extern(Windows) export BOOL DeleteFormA(
  2187       HANDLE  hPrinter,
  2188       LPSTR   pFormName
  2189  );
  2190  extern(Windows) export BOOL DeleteFormW(
  2191       HANDLE  hPrinter,
  2192       LPWSTR   pFormName
  2193  );
  2194  // #ifdef UNICODE
  2195  alias DeleteFormW DeleteForm;
  2196  // #else
  2197  // #...
  2198  // #endif // !UNICODE
  2199  
  2200  extern(Windows) export BOOL GetFormA(
  2201       HANDLE  hPrinter,
  2202       LPSTR   pFormName,
  2203       DWORD   Level,
  2204       LPBYTE  pForm,
  2205       DWORD   cbBuf,
  2206       LPDWORD pcbNeeded
  2207  );
  2208  extern(Windows) export BOOL GetFormW(
  2209       HANDLE  hPrinter,
  2210       LPWSTR   pFormName,
  2211       DWORD   Level,
  2212       LPBYTE  pForm,
  2213       DWORD   cbBuf,
  2214       LPDWORD pcbNeeded
  2215  );
  2216  // #ifdef UNICODE
  2217  alias GetFormW GetForm;
  2218  // #else
  2219  // #...
  2220  // #endif // !UNICODE
  2221  
  2222  extern(Windows) export BOOL SetFormA(
  2223       HANDLE  hPrinter,
  2224       LPSTR   pFormName,
  2225       DWORD   Level,
  2226       LPBYTE  pForm
  2227  );
  2228  extern(Windows) export BOOL SetFormW(
  2229       HANDLE  hPrinter,
  2230       LPWSTR   pFormName,
  2231       DWORD   Level,
  2232       LPBYTE  pForm
  2233  );
  2234  // #ifdef UNICODE
  2235  alias SetFormW SetForm;
  2236  // #else
  2237  // #...
  2238  // #endif // !UNICODE
  2239  
  2240  extern(Windows) export BOOL EnumFormsA(
  2241       HANDLE  hPrinter,
  2242       DWORD   Level,
  2243       LPBYTE  pForm,
  2244       DWORD   cbBuf,
  2245       LPDWORD pcbNeeded,
  2246       LPDWORD pcReturned
  2247  );
  2248  extern(Windows) export BOOL EnumFormsW(
  2249       HANDLE  hPrinter,
  2250       DWORD   Level,
  2251       LPBYTE  pForm,
  2252       DWORD   cbBuf,
  2253       LPDWORD pcbNeeded,
  2254       LPDWORD pcReturned
  2255  );
  2256  // #ifdef UNICODE
  2257  alias EnumFormsW EnumForms;
  2258  // #else
  2259  // #...
  2260  // #endif // !UNICODE
  2261  
  2262  extern(Windows) export BOOL EnumMonitorsA(
  2263       LPSTR   pName,
  2264       DWORD   Level,
  2265       LPBYTE  pMonitors,
  2266       DWORD   cbBuf,
  2267       LPDWORD pcbNeeded,
  2268       LPDWORD pcReturned
  2269  );
  2270  extern(Windows) export BOOL EnumMonitorsW(
  2271       LPWSTR   pName,
  2272       DWORD   Level,
  2273       LPBYTE  pMonitors,
  2274       DWORD   cbBuf,
  2275       LPDWORD pcbNeeded,
  2276       LPDWORD pcReturned
  2277  );
  2278  // #ifdef UNICODE
  2279  alias EnumMonitorsW EnumMonitors;
  2280  // #else
  2281  // #...
  2282  // #endif // !UNICODE
  2283  
  2284  extern(Windows) export BOOL AddMonitorA(
  2285       LPSTR   pName,
  2286       DWORD   Level,
  2287       LPBYTE  pMonitors
  2288  );
  2289  extern(Windows) export BOOL AddMonitorW(
  2290       LPWSTR   pName,
  2291       DWORD   Level,
  2292       LPBYTE  pMonitors
  2293  );
  2294  // #ifdef UNICODE
  2295  alias AddMonitorW AddMonitor;
  2296  // #else
  2297  // #...
  2298  // #endif // !UNICODE
  2299  
  2300  extern(Windows) export BOOL DeleteMonitorA(
  2301       LPSTR   pName,
  2302       LPSTR   pEnvironment,
  2303       LPSTR   pMonitorName
  2304  );
  2305  extern(Windows) export BOOL DeleteMonitorW(
  2306       LPWSTR   pName,
  2307       LPWSTR   pEnvironment,
  2308       LPWSTR   pMonitorName
  2309  );
  2310  // #ifdef UNICODE
  2311  alias DeleteMonitorW DeleteMonitor;
  2312  // #else
  2313  // #...
  2314  // #endif // !UNICODE
  2315  
  2316  extern(Windows) export BOOL EnumPortsA(
  2317       LPSTR   pName,
  2318       DWORD   Level,
  2319       LPBYTE  pPorts,
  2320       DWORD   cbBuf,
  2321       LPDWORD pcbNeeded,
  2322       LPDWORD pcReturned
  2323  );
  2324  extern(Windows) export BOOL EnumPortsW(
  2325       LPWSTR   pName,
  2326       DWORD   Level,
  2327       LPBYTE  pPorts,
  2328       DWORD   cbBuf,
  2329       LPDWORD pcbNeeded,
  2330       LPDWORD pcReturned
  2331  );
  2332  // #ifdef UNICODE
  2333  alias EnumPortsW EnumPorts;
  2334  // #else
  2335  // #...
  2336  // #endif // !UNICODE
  2337  
  2338  extern(Windows) export BOOL AddPortA(
  2339       LPSTR   pName,
  2340       HWND    hWnd,
  2341       LPSTR   pMonitorName
  2342  );
  2343  extern(Windows) export BOOL AddPortW(
  2344       LPWSTR   pName,
  2345       HWND    hWnd,
  2346       LPWSTR   pMonitorName
  2347  );
  2348  // #ifdef UNICODE
  2349  alias AddPortW AddPort;
  2350  // #else
  2351  // #...
  2352  // #endif // !UNICODE
  2353  
  2354  extern(Windows) export BOOL ConfigurePortA(
  2355       LPSTR   pName,
  2356       HWND    hWnd,
  2357       LPSTR   pPortName
  2358  );
  2359  extern(Windows) export BOOL ConfigurePortW(
  2360       LPWSTR   pName,
  2361       HWND    hWnd,
  2362       LPWSTR   pPortName
  2363  );
  2364  // #ifdef UNICODE
  2365  alias ConfigurePortW ConfigurePort;
  2366  // #else
  2367  // #...
  2368  // #endif // !UNICODE
  2369  
  2370  extern(Windows) export BOOL DeletePortA(
  2371       LPSTR pName,
  2372       HWND    hWnd,
  2373       LPSTR pPortName
  2374  );
  2375  extern(Windows) export BOOL DeletePortW(
  2376       LPWSTR pName,
  2377       HWND    hWnd,
  2378       LPWSTR pPortName
  2379  );
  2380  // #ifdef UNICODE
  2381  alias DeletePortW DeletePort;
  2382  // #else
  2383  // #...
  2384  // #endif // !UNICODE
  2385  
  2386  extern(Windows) export BOOL XcvDataW(
  2387       HANDLE  hXcv,
  2388       PCWSTR  pszDataName,
  2389       PBYTE   pInputData,
  2390       DWORD   cbInputData,
  2391       PBYTE   pOutputData,
  2392       DWORD   cbOutputData,
  2393       PDWORD  pcbOutputNeeded,
  2394       PDWORD  pdwStatus
  2395  );
  2396  alias XcvDataW XcvData;
  2397  
  2398  extern(Windows) export BOOL GetDefaultPrinterA(
  2399       LPSTR   pszBuffer,
  2400       LPDWORD  pcchBuffer
  2401      );
  2402  extern(Windows) export BOOL GetDefaultPrinterW(
  2403       LPWSTR   pszBuffer,
  2404       LPDWORD  pcchBuffer
  2405      );
  2406  // #ifdef UNICODE
  2407  alias GetDefaultPrinterW GetDefaultPrinter;
  2408  // #else
  2409  // #...
  2410  // #endif // !UNICODE
  2411  
  2412  extern(Windows) export BOOL SetDefaultPrinterA(
  2413       LPCSTR pszPrinter
  2414      );
  2415  extern(Windows) export BOOL SetDefaultPrinterW(
  2416       LPCWSTR pszPrinter
  2417      );
  2418  // #ifdef UNICODE
  2419  alias SetDefaultPrinterW SetDefaultPrinter;
  2420  // #else
  2421  // #...
  2422  // #endif // !UNICODE
  2423  
  2424  extern(Windows) export BOOL SetPortA(
  2425       LPSTR     pName,
  2426       LPSTR     pPortName,
  2427       DWORD       dwLevel,
  2428       LPBYTE      pPortInfo
  2429  );
  2430  extern(Windows) export BOOL SetPortW(
  2431       LPWSTR     pName,
  2432       LPWSTR     pPortName,
  2433       DWORD       dwLevel,
  2434       LPBYTE      pPortInfo
  2435  );
  2436  // #ifdef UNICODE
  2437  alias SetPortW SetPort;
  2438  // #else
  2439  // #...
  2440  // #endif // !UNICODE
  2441  
  2442  extern(Windows) export BOOL AddPrinterConnectionA(
  2443       LPSTR   pName
  2444  );
  2445  extern(Windows) export BOOL AddPrinterConnectionW(
  2446       LPWSTR   pName
  2447  );
  2448  // #ifdef UNICODE
  2449  alias AddPrinterConnectionW AddPrinterConnection;
  2450  // #else
  2451  // #...
  2452  // #endif // !UNICODE
  2453  
  2454  extern(Windows) export BOOL DeletePrinterConnectionA(
  2455       LPSTR   pName
  2456  );
  2457  extern(Windows) export BOOL DeletePrinterConnectionW(
  2458       LPWSTR   pName
  2459  );
  2460  // #ifdef UNICODE
  2461  alias DeletePrinterConnectionW DeletePrinterConnection;
  2462  // #else
  2463  // #...
  2464  // #endif // !UNICODE
  2465  
  2466  extern(Windows) export HANDLE ConnectToPrinterDlg(
  2467       HWND    hwnd,
  2468       DWORD   Flags
  2469  );
  2470  
  2471  struct _PROVIDOR_INFO_1A {
  2472    LPSTR pName;
  2473    LPSTR pEnvironment;
  2474    LPSTR pDLLName;
  2475  }
  2476  alias _PROVIDOR_INFO_1A PROVIDOR_INFO_1A;
  2477  alias _PROVIDOR_INFO_1A* PPROVIDOR_INFO_1A;
  2478  alias _PROVIDOR_INFO_1A* LPPROVIDOR_INFO_1A;
  2479  
  2480  struct _PROVIDOR_INFO_1W {
  2481    LPWSTR pName;
  2482    LPWSTR pEnvironment;
  2483    LPWSTR pDLLName;
  2484  }
  2485  alias _PROVIDOR_INFO_1W PROVIDOR_INFO_1W;
  2486  alias _PROVIDOR_INFO_1W* PPROVIDOR_INFO_1W;
  2487  alias _PROVIDOR_INFO_1W* LPPROVIDOR_INFO_1W;
  2488  
  2489  // #ifdef UNICODE
  2490  alias PROVIDOR_INFO_1W PROVIDOR_INFO_1;
  2491  alias PPROVIDOR_INFO_1W PPROVIDOR_INFO_1;
  2492  alias LPPROVIDOR_INFO_1W LPPROVIDOR_INFO_1;
  2493  // #else
  2494  // ...
  2495  // #endif // UNICODE
  2496  
  2497  struct _PROVIDOR_INFO_2A {
  2498    LPSTR pOrder;
  2499  }
  2500  alias _PROVIDOR_INFO_2A PROVIDOR_INFO_2A;
  2501  alias _PROVIDOR_INFO_2A* PPROVIDOR_INFO_2A;
  2502  alias _PROVIDOR_INFO_2A* LPPROVIDOR_INFO_2A;
  2503  
  2504  struct _PROVIDOR_INFO_2W {
  2505    LPWSTR pOrder;
  2506  }
  2507  alias _PROVIDOR_INFO_2W PROVIDOR_INFO_2W;
  2508  alias _PROVIDOR_INFO_2W* PPROVIDOR_INFO_2W;
  2509  alias _PROVIDOR_INFO_2W* LPPROVIDOR_INFO_2W;
  2510  
  2511  // #ifdef UNICODE
  2512  alias PROVIDOR_INFO_2W PROVIDOR_INFO_2;
  2513  alias PPROVIDOR_INFO_2W PPROVIDOR_INFO_2;
  2514  alias LPPROVIDOR_INFO_2W LPPROVIDOR_INFO_2;
  2515  // #else
  2516  // ...
  2517  // #endif // UNICODE
  2518  
  2519  extern(Windows) export BOOL AddPrintProvidorA(
  2520       LPSTR  pName,
  2521       DWORD    level,
  2522       LPBYTE   pProvidorInfo
  2523  );
  2524  extern(Windows) export BOOL AddPrintProvidorW(
  2525       LPWSTR  pName,
  2526       DWORD    level,
  2527       LPBYTE   pProvidorInfo
  2528  );
  2529  // #ifdef UNICODE
  2530  alias AddPrintProvidorW AddPrintProvidor;
  2531  // #else
  2532  // #...
  2533  // #endif // !UNICODE
  2534  
  2535  extern(Windows) export BOOL DeletePrintProvidorA(
  2536       LPSTR   pName,
  2537       LPSTR   pEnvironment,
  2538       LPSTR   pPrintProvidorName
  2539  );
  2540  extern(Windows) export BOOL DeletePrintProvidorW(
  2541       LPWSTR   pName,
  2542       LPWSTR   pEnvironment,
  2543       LPWSTR   pPrintProvidorName
  2544  );
  2545  // #ifdef UNICODE
  2546  alias DeletePrintProvidorW DeletePrintProvidor;
  2547  // #else
  2548  // #...
  2549  // #endif // !UNICODE
  2550  
  2551  const TCHAR[] SPLREG_DEFAULT_SPOOL_DIRECTORY = "DefaultSpoolDirectory";
  2552  const TCHAR[] SPLREG_PORT_THREAD_PRIORITY_DEFAULT = "PortThreadPriorityDefault";
  2553  const TCHAR[] SPLREG_PORT_THREAD_PRIORITY = "PortThreadPriority";
  2554  const TCHAR[] SPLREG_SCHEDULER_THREAD_PRIORITY_DEFAULT = "SchedulerThreadPriorityDefault";
  2555  const TCHAR[] SPLREG_SCHEDULER_THREAD_PRIORITY = "SchedulerThreadPriority";
  2556  const TCHAR[] SPLREG_BEEP_ENABLED = "BeepEnabled";
  2557  const TCHAR[] SPLREG_NET_POPUP = "NetPopup";
  2558  const TCHAR[] SPLREG_RETRY_POPUP = "RetryPopup";
  2559  const TCHAR[] SPLREG_NET_POPUP_TO_COMPUTER = "NetPopupToComputer";
  2560  const TCHAR[] SPLREG_EVENT_LOG = "EventLog";
  2561  const TCHAR[] SPLREG_MAJOR_VERSION = "MajorVersion";
  2562  const TCHAR[] SPLREG_MINOR_VERSION = "MinorVersion";
  2563  const TCHAR[] SPLREG_ARCHITECTURE = "Architecture";
  2564  const TCHAR[] SPLREG_OS_VERSION = "OSVersion";
  2565  const TCHAR[] SPLREG_OS_VERSIONEX = "OSVersionEx";
  2566  const TCHAR[] SPLREG_DS_PRESENT = "DsPresent";
  2567  const TCHAR[] SPLREG_DS_PRESENT_FOR_USER = "DsPresentForUser";
  2568  const TCHAR[] SPLREG_REMOTE_FAX = "RemoteFax";
  2569  const TCHAR[] SPLREG_RESTART_JOB_ON_POOL_ERROR = "RestartJobOnPoolError";
  2570  const TCHAR[] SPLREG_RESTART_JOB_ON_POOL_ENABLED = "RestartJobOnPoolEnabled";
  2571  const TCHAR[] SPLREG_DNS_MACHINE_NAME = "DNSMachineName";
  2572  
  2573  enum : uint { SERVER_ACCESS_ADMINISTER = 0x00000001 }
  2574  enum : uint { SERVER_ACCESS_ENUMERATE = 0x00000002 }
  2575  
  2576  enum : uint { PRINTER_ACCESS_ADMINISTER = 0x00000004 }
  2577  enum : uint { PRINTER_ACCESS_USE = 0x00000008 }
  2578  
  2579  enum : uint { JOB_ACCESS_ADMINISTER = 0x00000010 }
  2580  
  2581  const uint SERVER_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SERVER_ACCESS_ADMINISTER | SERVER_ACCESS_ENUMERATE;
  2582  
  2583  const uint SERVER_READ = STANDARD_RIGHTS_READ | SERVER_ACCESS_ENUMERATE;
  2584  
  2585  const uint SERVER_WRITE = STANDARD_RIGHTS_WRITE | SERVER_ACCESS_ADMINISTER | SERVER_ACCESS_ENUMERATE;
  2586  
  2587  const uint SERVER_EXECUTE = STANDARD_RIGHTS_EXECUTE | SERVER_ACCESS_ENUMERATE;
  2588  
  2589  const uint PRINTER_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | PRINTER_ACCESS_ADMINISTER | PRINTER_ACCESS_USE;
  2590  
  2591  const uint PRINTER_READ = STANDARD_RIGHTS_READ | PRINTER_ACCESS_USE;
  2592  
  2593  const uint PRINTER_WRITE = STANDARD_RIGHTS_WRITE | PRINTER_ACCESS_USE;
  2594  
  2595  const uint PRINTER_EXECUTE = STANDARD_RIGHTS_EXECUTE | PRINTER_ACCESS_USE;
  2596  
  2597  const uint JOB_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | JOB_ACCESS_ADMINISTER;
  2598  
  2599  const uint JOB_READ = STANDARD_RIGHTS_READ | JOB_ACCESS_ADMINISTER;
  2600  
  2601  const uint JOB_WRITE = STANDARD_RIGHTS_WRITE | JOB_ACCESS_ADMINISTER;
  2602  
  2603  const uint JOB_EXECUTE = STANDARD_RIGHTS_EXECUTE | JOB_ACCESS_ADMINISTER;
  2604  
  2605  const TCHAR[] SPLDS_SPOOLER_KEY = "DsSpooler";
  2606  const TCHAR[] SPLDS_DRIVER_KEY = "DsDriver";
  2607  const TCHAR[] SPLDS_USER_KEY = "DsUser";
  2608  
  2609  const TCHAR[] SPLDS_ASSET_NUMBER = "assetNumber";
  2610  const TCHAR[] SPLDS_BYTES_PER_MINUTE = "bytesPerMinute";
  2611  const TCHAR[] SPLDS_DESCRIPTION = "description";
  2612  const TCHAR[] SPLDS_DRIVER_NAME = "driverName";
  2613  const TCHAR[] SPLDS_DRIVER_VERSION = "driverVersion";
  2614  const TCHAR[] SPLDS_LOCATION = "location";
  2615  const TCHAR[] SPLDS_PORT_NAME = "portName";
  2616  const TCHAR[] SPLDS_PRINT_ATTRIBUTES = "printAttributes";
  2617  const TCHAR[] SPLDS_PRINT_BIN_NAMES = "printBinNames";
  2618  const TCHAR[] SPLDS_PRINT_COLLATE = "printCollate";
  2619  const TCHAR[] SPLDS_PRINT_COLOR = "printColor";
  2620  const TCHAR[] SPLDS_PRINT_DUPLEX_SUPPORTED = "printDuplexSupported";
  2621  const TCHAR[] SPLDS_PRINT_END_TIME = "printEndTime";
  2622  const TCHAR[] SPLDS_PRINTER_CLASS = "printQueue";
  2623  const TCHAR[] SPLDS_PRINTER_NAME = "printerName";
  2624  const TCHAR[] SPLDS_PRINT_KEEP_PRINTED_JOBS = "printKeepPrintedJobs";
  2625  const TCHAR[] SPLDS_PRINT_LANGUAGE = "printLanguage";
  2626  const TCHAR[] SPLDS_PRINT_MAC_ADDRESS = "printMACAddress";
  2627  const TCHAR[] SPLDS_PRINT_MAX_X_EXTENT = "printMaxXExtent";
  2628  const TCHAR[] SPLDS_PRINT_MAX_Y_EXTENT = "printMaxYExtent";
  2629  const TCHAR[] SPLDS_PRINT_MAX_RESOLUTION_SUPPORTED = "printMaxResolutionSupported";
  2630  const TCHAR[] SPLDS_PRINT_MEDIA_READY = "printMediaReady";
  2631  const TCHAR[] SPLDS_PRINT_MEDIA_SUPPORTED = "printMediaSupported";
  2632  const TCHAR[] SPLDS_PRINT_MEMORY = "printMemory";
  2633  const TCHAR[] SPLDS_PRINT_MIN_X_EXTENT = "printMinXExtent";
  2634  const TCHAR[] SPLDS_PRINT_MIN_Y_EXTENT = "printMinYExtent";
  2635  const TCHAR[] SPLDS_PRINT_NETWORK_ADDRESS = "printNetworkAddress";
  2636  const TCHAR[] SPLDS_PRINT_NOTIFY = "printNotify";
  2637  const TCHAR[] SPLDS_PRINT_NUMBER_UP = "printNumberUp";
  2638  const TCHAR[] SPLDS_PRINT_ORIENTATIONS_SUPPORTED = "printOrientationsSupported";
  2639  const TCHAR[] SPLDS_PRINT_OWNER = "printOwner";
  2640  const TCHAR[] SPLDS_PRINT_PAGES_PER_MINUTE = "printPagesPerMinute";
  2641  const TCHAR[] SPLDS_PRINT_RATE = "printRate";
  2642  const TCHAR[] SPLDS_PRINT_RATE_UNIT = "printRateUnit";
  2643  const TCHAR[] SPLDS_PRINT_SEPARATOR_FILE = "printSeparatorFile";
  2644  const TCHAR[] SPLDS_PRINT_SHARE_NAME = "printShareName";
  2645  const TCHAR[] SPLDS_PRINT_SPOOLING = "printSpooling";
  2646  const TCHAR[] SPLDS_PRINT_STAPLING_SUPPORTED = "printStaplingSupported";
  2647  const TCHAR[] SPLDS_PRINT_START_TIME = "printStartTime";
  2648  const TCHAR[] SPLDS_PRINT_STATUS = "printStatus";
  2649  const TCHAR[] SPLDS_PRIORITY = "priority";
  2650  const TCHAR[] SPLDS_SERVER_NAME = "serverName";
  2651  const TCHAR[] SPLDS_SHORT_SERVER_NAME = "shortServerName";
  2652  const TCHAR[] SPLDS_UNC_NAME = "uNCName";
  2653  const TCHAR[] SPLDS_URL = "url";
  2654  const TCHAR[] SPLDS_FLAGS = "flags";
  2655  const TCHAR[] SPLDS_VERSION_NUMBER = "versionNumber";
  2656  
  2657  const TCHAR[] SPLDS_PRINTER_NAME_ALIASES = "printerNameAliases";
  2658  const TCHAR[] SPLDS_PRINTER_LOCATIONS = "printerLocations";
  2659  const TCHAR[] SPLDS_PRINTER_MODEL = "printerModel";
  2660  
  2661  // #ifdef __cplusplus
  2662  // }
  2663  // #endif
  2664  
  2665  // #endif // _WINSPOOL_