Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

824 lines
19 KiB

  1. /*++
  2. Copyright (c) 1990-1994 Microsoft Corporation
  3. Module Name:
  4. SplApiP.h
  5. Abstract:
  6. Header file for Private Print APIs
  7. For use in stress
  8. Author:
  9. Matthew Felton (MattFe) 4-Mar-1994
  10. Revision History:
  11. --*/
  12. #ifndef SPLAPIP_H_
  13. #define SPLAPIP_H_
  14. #ifdef __cplusplus
  15. extern "C" {
  16. #endif
  17. #include "lmon.h"
  18. // Internal Used to report Stress test results
  19. #define STRESSINFOLEVEL 0
  20. // W A R N I N G
  21. //
  22. // Do not alter the size of this structure it will break NT interop with older releases if you do.
  23. typedef struct _PRINTER_INFO_STRESSA {
  24. LPSTR pPrinterName; // Printer Name locally "Printername" remotely "\\servername\printername"
  25. LPSTR pServerName; // Server Name
  26. DWORD cJobs; // Number of Jobs currently in Print Queue
  27. DWORD cTotalJobs; // Total Number of Jobs spooled
  28. DWORD cTotalBytes; // Total Bytes Printed (LOW DWORD)
  29. SYSTEMTIME stUpTime; // Time printed data structure crated UTC
  30. DWORD MaxcRef; // Maximum number of cRef
  31. DWORD cTotalPagesPrinted; // Total number of pages printed
  32. DWORD dwGetVersion; // OS version
  33. DWORD fFreeBuild; // TRUE for free build
  34. DWORD cSpooling; // Number of jobs actively spooling
  35. DWORD cMaxSpooling; // Maximum number of cSpooling
  36. DWORD cRef; // Printer object reference count (opened)
  37. DWORD cErrorOutOfPaper; // Total Number of Out Of Paper Errors
  38. DWORD cErrorNotReady; // Total Number of Error Not Ready
  39. DWORD cJobError; // Total number of Job Errors
  40. DWORD dwNumberOfProcessors; // Number of Processors on computer
  41. DWORD dwProcessorType; // Processor Type of computer
  42. DWORD dwHighPartTotalBytes; // Total Bytes Printed (HIGH DWORD)
  43. DWORD cChangeID; // Count of Changes to Printer Config
  44. DWORD dwLastError; // Last Error
  45. DWORD Status; // Current Printer Status
  46. DWORD cEnumerateNetworkPrinters; // Count How Many Times Browse List Requested
  47. DWORD cAddNetPrinters; // Count of NetPrinters Added ( Browser )
  48. WORD wProcessorArchitecture; // Processor Architecture of computer
  49. WORD wProcessorLevel; // Processor Level of computer
  50. DWORD cRefIC; // Count of open IC handles
  51. DWORD dwReserved2; // Reserved for Future Use
  52. DWORD dwReserved3;
  53. } PRINTER_INFO_STRESSA, *PPRINTER_INFO_STRESSA, *LPPRINTER_INFO_STRESSA;
  54. typedef struct _PRINTER_INFO_STRESSW {
  55. LPWSTR pPrinterName; // Printer Name locally "Printername" remotely "\\servername\printername"
  56. LPWSTR pServerName; // Server Name
  57. DWORD cJobs; // Number of Jobs currently in Print Queue
  58. DWORD cTotalJobs; // Total Number of Jobs spooled
  59. DWORD cTotalBytes; // Total Bytes Printed (LOW DWORD)
  60. SYSTEMTIME stUpTime; // Time printed data structure crated UTC
  61. DWORD MaxcRef; // Maximum number of cRef
  62. DWORD cTotalPagesPrinted; // Total number of pages printed
  63. DWORD dwGetVersion; // OS version
  64. DWORD fFreeBuild; // TRUE for free build
  65. DWORD cSpooling; // Number of jobs actively spooling
  66. DWORD cMaxSpooling; // Maximum number of cSpooling
  67. DWORD cRef; // Printer object reference count (opened)
  68. DWORD cErrorOutOfPaper; // Total Number of Out Of Paper Errors
  69. DWORD cErrorNotReady; // Total Number of Error Not Ready
  70. DWORD cJobError; // Total number of Job Errors
  71. DWORD dwNumberOfProcessors; // Number of Processors on computer
  72. DWORD dwProcessorType; // Processor Type of computer
  73. DWORD dwHighPartTotalBytes; // Total Bytes Printed (HIGH DWORD)
  74. DWORD cChangeID; // Count of Changes to Printer Config
  75. DWORD dwLastError; // Last Error
  76. DWORD Status; // Current Printer Status
  77. DWORD cEnumerateNetworkPrinters; // Count How Many Times Browse List Requested
  78. DWORD cAddNetPrinters; // Count of NetPrinters Added ( Browser )
  79. WORD wProcessorArchitecture; // Processor Architecture of computer
  80. WORD wProcessorLevel; // Processor Level of computer
  81. DWORD cRefIC; // Count of open IC handles
  82. DWORD dwReserved2; // Reserved for Future Use
  83. DWORD dwReserved3;
  84. } PRINTER_INFO_STRESSW, *PPRINTER_INFO_STRESSW, *LPPRINTER_INFO_STRESSW;
  85. typedef struct _DRIVER_UPGRADE_INFO_1W {
  86. LPWSTR pPrinterName; // Printer Name being upgraded
  87. LPWSTR pOldDriverDirectory; // fully qualified path to old printer driver
  88. } DRIVER_UPGRADE_INFO_1W, *PDRIVER_UPGRADE_INFO_1W, *LPDRIVER_UPGRADE_INFO_1W;
  89. #ifdef UNICODE
  90. #define PRINTER_INFO_STRESS PRINTER_INFO_STRESSW
  91. #define PPRINTER_INFO_STRESS PPRINTER_INFO_STRESSW
  92. #define LPPRINTER_INFO_STRESS LPPRINTER_INFO_STRESSW
  93. #else
  94. #define PRINTER_INFO_STRESS PRINTER_INFO_STRESSA
  95. #define PPRINTER_INFO_STRESS PPRINTER_INFO_STRESSA
  96. #define LPPRINTER_INFO_STRESS LPPRINTER_INFO_STRESSA
  97. #endif // UNICODE
  98. BOOL
  99. AddPortExW(
  100. LPWSTR pName,
  101. DWORD Level,
  102. LPBYTE lpBuffer,
  103. LPWSTR lpMonitorName
  104. );
  105. BOOL
  106. AddPortExA(
  107. LPSTR pName,
  108. DWORD Level,
  109. LPBYTE lpBuffer,
  110. LPSTR lpMonitorName
  111. );
  112. BOOL
  113. SetAllocFailCount(
  114. HANDLE hPrinter,
  115. DWORD dwFailCount,
  116. LPDWORD lpdwAllocCount,
  117. LPDWORD lpdwFreeCount,
  118. LPDWORD lpdwFailCountHit
  119. );
  120. #ifdef UNICODE
  121. #define AddPortEx AddPortExW
  122. #else
  123. #define AddPortEx AddPortExA
  124. #endif // !UNICODE
  125. //
  126. // Interfaces to Spooler APIs
  127. //
  128. HANDLE
  129. SplAddPrinter(
  130. LPWSTR pName,
  131. DWORD Level,
  132. LPBYTE pPrinter,
  133. HANDLE pIniSpooler,
  134. LPBYTE pExtraData,
  135. LPBYTE pSplClientInfo,
  136. DWORD dwLevel
  137. );
  138. BOOL
  139. SplDeletePrinter(
  140. HANDLE hPrinter
  141. );
  142. BOOL
  143. SplEnumPrinters(
  144. DWORD Flags,
  145. LPWSTR Name,
  146. DWORD Level,
  147. LPBYTE pPrinter,
  148. DWORD cbBuf,
  149. LPDWORD pcbNeeded,
  150. LPDWORD pcReturned,
  151. HANDLE pIniSpooler
  152. );
  153. DWORD
  154. SplOpenPrinter(
  155. LPWSTR pPrinterName,
  156. LPHANDLE phPrinter,
  157. LPPRINTER_DEFAULTS pDefault,
  158. HANDLE pIniSpooler,
  159. LPBYTE pSplClientInfo,
  160. DWORD dwLevel
  161. );
  162. BOOL
  163. SplDeletePrinterDriver(
  164. LPWSTR pName,
  165. LPWSTR pEnvironment,
  166. LPWSTR pDriverName,
  167. HANDLE pIniSpooler
  168. );
  169. BOOL
  170. SplDeletePrinterDriverEx(
  171. LPWSTR pName,
  172. LPWSTR pEnvironment,
  173. LPWSTR pDriverName,
  174. HANDLE pIniSpooler,
  175. DWORD dwDeleteFlag,
  176. DWORD dwVersionNum
  177. );
  178. BOOL
  179. SplGetPrintProcessorDirectory(
  180. LPWSTR pName,
  181. LPWSTR pEnvironment,
  182. DWORD Level,
  183. LPBYTE pPrintProcessorInfo,
  184. DWORD cbBuf,
  185. LPDWORD pcbNeeded,
  186. HANDLE pIniSpooler
  187. );
  188. BOOL
  189. SplGetPrinterDriverDirectory(
  190. LPWSTR pName,
  191. LPWSTR pEnvironment,
  192. DWORD Level,
  193. LPBYTE pDriverInfo,
  194. DWORD cbBuf,
  195. LPDWORD pcbNeeded,
  196. HANDLE pIniSpooler
  197. );
  198. BOOL
  199. SplAddPort(
  200. LPWSTR pName,
  201. HWND hWnd,
  202. LPWSTR pMonitorName,
  203. HANDLE pIniSpooler
  204. );
  205. BOOL
  206. SplAddPortEx(
  207. LPWSTR pName,
  208. DWORD Level,
  209. LPVOID pBuffer,
  210. LPWSTR pMonitorName,
  211. HANDLE pIniSpooler
  212. );
  213. BOOL
  214. SplAddPrinterDriver(
  215. LPWSTR pName,
  216. DWORD Level,
  217. LPBYTE pDriverInfo,
  218. HANDLE pIniSpooler,
  219. BOOL bUseScratchDir,
  220. BOOL bImpersonateOnCreate
  221. );
  222. BOOL
  223. SplAddPrinterDriverEx(
  224. LPWSTR pName,
  225. DWORD Level,
  226. LPBYTE pDriverInfo,
  227. DWORD dwFileCopyFlags,
  228. HANDLE pIniSpooler,
  229. BOOL bUseScratchDir,
  230. BOOL bImpersonateOnCreate
  231. );
  232. BOOL
  233. SplAddDriverCatalog(
  234. HANDLE hPrinter,
  235. DWORD dwLevel,
  236. VOID *pvDriverInfCatInfo,
  237. DWORD dwCatalogCopyFlags
  238. );
  239. BOOL
  240. SplDeleteMonitor(
  241. LPWSTR pName,
  242. LPWSTR pEnvironment,
  243. LPWSTR pMonitorName,
  244. HANDLE pIniSpooler
  245. );
  246. BOOL
  247. SplDeletePrintProcessor(
  248. LPWSTR pName,
  249. LPWSTR pEnvironment,
  250. LPWSTR pPrintProcessorName,
  251. HANDLE pIniSpooler
  252. );
  253. BOOL
  254. SplAddPrintProcessor(
  255. LPWSTR pName,
  256. LPWSTR pEnvironment,
  257. LPWSTR pPathName,
  258. LPWSTR pPrintProcessorName,
  259. HANDLE pIniSpooler
  260. );
  261. BOOL
  262. SplAddMonitor(
  263. LPWSTR pName,
  264. DWORD Level,
  265. LPBYTE pMonitorInfo,
  266. HANDLE pIniSpooler
  267. );
  268. BOOL
  269. SplMonitorIsInstalled(
  270. LPWSTR pMonitorName
  271. );
  272. BOOL
  273. SplDeletePort(
  274. LPWSTR pName,
  275. HWND hWnd,
  276. LPWSTR pPortName,
  277. HANDLE pIniSpooler
  278. );
  279. BOOL
  280. SplEnumPorts(
  281. LPWSTR pName,
  282. DWORD Level,
  283. LPBYTE pPorts,
  284. DWORD cbBuf,
  285. LPDWORD pcbNeeded,
  286. LPDWORD pcReturned,
  287. HANDLE pIniSpooler
  288. );
  289. BOOL
  290. SplConfigurePort(
  291. LPWSTR pName,
  292. HWND hWnd,
  293. LPWSTR pPortName,
  294. HANDLE pIniSpooler
  295. );
  296. BOOL
  297. SplXcvData(
  298. HANDLE hXcv,
  299. LPCWSTR pszDataName,
  300. PBYTE pInputData,
  301. DWORD cbInputData,
  302. PBYTE pOutputData,
  303. DWORD cbOutputData,
  304. PDWORD pcbOutputNeeded,
  305. PDWORD pdwStatus,
  306. HANDLE pIniSpooler
  307. );
  308. BOOL
  309. SplEnumMonitors(
  310. LPWSTR pName,
  311. DWORD Level,
  312. LPBYTE pMonitors,
  313. DWORD cbBuf,
  314. LPDWORD pcbNeeded,
  315. LPDWORD pcReturned,
  316. HANDLE pIniSpooler
  317. );
  318. BOOL
  319. SplEnumPrinterDrivers(
  320. LPWSTR pName,
  321. LPWSTR pEnvironment,
  322. DWORD Level,
  323. LPBYTE pDriverInfo,
  324. DWORD cbBuf,
  325. LPDWORD pcbNeeded,
  326. LPDWORD pcReturned,
  327. HANDLE pIniSpooler
  328. );
  329. BOOL
  330. SplEnumPrintProcessors(
  331. LPWSTR pName,
  332. LPWSTR pEnvironment,
  333. DWORD Level,
  334. LPBYTE pPrintProcessorInfo,
  335. DWORD cbBuf,
  336. LPDWORD pcbNeeded,
  337. LPDWORD pcReturned,
  338. HANDLE pIniSpooler
  339. );
  340. BOOL
  341. SplEnumPrintProcessorDatatypes(
  342. LPWSTR pName,
  343. LPWSTR pPrintProcessorName,
  344. DWORD Level,
  345. LPBYTE pDatatypes,
  346. DWORD cbBuf,
  347. LPDWORD pcbNeeded,
  348. LPDWORD pcReturned,
  349. HANDLE pIniSpooler
  350. );
  351. VOID
  352. SplBroadcastChange(
  353. HANDLE hPrinter,
  354. DWORD Message,
  355. WPARAM wParam,
  356. LPARAM lParam
  357. );
  358. typedef struct _SPOOLER_INFO_1 {
  359. LPWSTR pDir;
  360. LPWSTR pDefaultSpoolDir;
  361. LPWSTR pszRegistryRoot;
  362. LPWSTR pszRegistryPrinters;
  363. LPWSTR pszRegistryMonitors;
  364. LPWSTR pszRegistryEnvironments;
  365. LPWSTR pszRegistryEventLog;
  366. LPWSTR pszRegistryProviders;
  367. LPWSTR pszEventLogMsgFile;
  368. LPWSTR pszDriversShare;
  369. LPWSTR pszRegistryForms;
  370. DWORD SpoolerFlags;
  371. FARPROC pfnReadRegistryExtra;
  372. FARPROC pfnWriteRegistryExtra;
  373. FARPROC pfnFreePrinterExtra;
  374. } SPOOLER_INFO_1, *PSPOOLER_INFO_1, *LPSPOOLER_INFO_1;
  375. typedef struct _SPOOLER_INFO_2 {
  376. LPWSTR pDir;
  377. LPWSTR pDefaultSpoolDir;
  378. LPWSTR pszRegistryRoot;
  379. LPWSTR pszRegistryPrinters;
  380. LPWSTR pszRegistryMonitors;
  381. LPWSTR pszRegistryEnvironments;
  382. LPWSTR pszRegistryEventLog;
  383. LPWSTR pszRegistryProviders;
  384. LPWSTR pszEventLogMsgFile;
  385. LPWSTR pszDriversShare;
  386. LPWSTR pszRegistryForms;
  387. DWORD SpoolerFlags;
  388. FARPROC pfnReadRegistryExtra;
  389. FARPROC pfnWriteRegistryExtra;
  390. FARPROC pfnFreePrinterExtra;
  391. LPWSTR pszResource;
  392. LPWSTR pszName;
  393. LPWSTR pszAddress;
  394. LPWSTR pszClusResID;
  395. LPWSTR pszClusResDriveLetter;
  396. } SPOOLER_INFO_2, *PSPOOLER_INFO_2, *LPSPOOLER_INFO_2;
  397. #define SPL_UPDATE_WININI_DEVICES 0x00000001
  398. #define SPL_PRINTER_CHANGES 0x00000002
  399. #define SPL_LOG_EVENTS 0x00000004
  400. #define SPL_FORMS_CHANGE 0x00000008
  401. #define SPL_BROADCAST_CHANGE 0x00000010
  402. #define SPL_SECURITY_CHECK 0x00000020
  403. #define SPL_OPEN_CREATE_PORTS 0x00000040
  404. #define SPL_FAIL_OPEN_PRINTERS_PENDING_DELETION 0x00000080
  405. #define SPL_REMOTE_HANDLE_CHECK 0x00000100
  406. #define SPL_PRINTER_DRIVER_EVENT 0x00000200
  407. #define SPL_ALWAYS_CREATE_DRIVER_SHARE 0x00000400
  408. #define SPL_NO_UPDATE_PRINTERINI 0x00000800
  409. #define SPL_NO_UPDATE_JOBSHD 0x00001000
  410. #define SPL_CLUSTER_REG 0x00002000
  411. #define SPL_OFFLINE 0x00004000
  412. #define SPL_PENDING_DELETION 0x00008000
  413. #define SPL_SERVER_THREAD 0x00010000
  414. #define SPL_PRINT 0x00020000
  415. #define SPL_NON_RAW_TO_MASQ_PRINTERS 0x00040000
  416. #define SPL_OPEN_EXISTING_ONLY 0x00080000
  417. #define SPL_TYPE 0xff000000
  418. #define SPL_TYPE_LOCAL 0x01000000
  419. #define SPL_TYPE_CLUSTER 0x02000000
  420. #define SPL_TYPE_CACHE 0x04000000
  421. HANDLE
  422. SplCreateSpooler(
  423. LPWSTR pMachineName,
  424. DWORD Level,
  425. PBYTE pSpooler,
  426. LPBYTE pReserved
  427. );
  428. BOOL
  429. SplDeleteSpooler(
  430. HANDLE hSpooler
  431. );
  432. BOOL
  433. SplCloseSpooler(
  434. HANDLE hSpooler
  435. );
  436. BOOL
  437. SplEnumForms(
  438. HANDLE hPrinter,
  439. DWORD Level,
  440. LPBYTE pForm,
  441. DWORD cbBuf,
  442. LPDWORD pcbNeeded,
  443. LPDWORD pcReturned
  444. );
  445. BOOL
  446. SplAddForm(
  447. HANDLE hPrinter,
  448. DWORD Level,
  449. LPBYTE pForm
  450. );
  451. BOOL
  452. SplDeleteForm(
  453. HANDLE hPrinter,
  454. LPWSTR pFormName
  455. );
  456. BOOL
  457. SplGetForm(
  458. HANDLE hPrinter,
  459. LPWSTR pFormName,
  460. DWORD Level,
  461. LPBYTE pForm,
  462. DWORD cbBuf,
  463. LPDWORD pcbNeeded
  464. );
  465. BOOL
  466. SplSetForm(
  467. HANDLE hPrinter,
  468. LPWSTR pFormName,
  469. DWORD Level,
  470. LPBYTE pForm
  471. );
  472. BOOL
  473. SplClosePrinter(
  474. HANDLE hPrinter
  475. );
  476. DWORD
  477. SplGetPrinterData(
  478. HANDLE hPrinter,
  479. LPWSTR pValueName,
  480. LPDWORD pType,
  481. LPBYTE pData,
  482. DWORD nSize,
  483. LPDWORD pcbNeeded
  484. );
  485. DWORD
  486. SplGetPrinterDataEx(
  487. HANDLE hPrinter,
  488. LPCWSTR pKeyName,
  489. LPCWSTR pValueName,
  490. LPDWORD pType,
  491. LPBYTE pData,
  492. DWORD nSize,
  493. LPDWORD pcbNeeded
  494. );
  495. DWORD
  496. SplEnumPrinterData(
  497. HANDLE hPrinter,
  498. DWORD dwIndex, // index of value to query
  499. LPWSTR pValueName, // address of buffer for value string
  500. DWORD cbValueName, // size of buffer for value string
  501. LPDWORD pcbValueName, // address for size of value buffer
  502. LPDWORD pType, // address of buffer for type code
  503. LPBYTE pData, // address of buffer for value data
  504. DWORD cbData, // size of buffer for value data
  505. LPDWORD pcbData // address for size of data buffer
  506. );
  507. DWORD
  508. SplEnumPrinterDataEx(
  509. HANDLE hPrinter,
  510. LPCWSTR pKeyName,
  511. LPBYTE pEnumValues,
  512. DWORD cbEnumValues,
  513. LPDWORD pcbEnumValues,
  514. LPDWORD pnEnumValues
  515. );
  516. DWORD
  517. SplEnumPrinterKey(
  518. HANDLE hPrinter,
  519. LPCWSTR pKeyName,
  520. LPWSTR pSubkey, // address of buffer for value string
  521. DWORD cbSubkey, // size of buffer for value string
  522. LPDWORD pcbSubkey // address for size of value buffer
  523. );
  524. DWORD
  525. SplDeletePrinterData(
  526. HANDLE hPrinter,
  527. LPWSTR pValueName
  528. );
  529. DWORD
  530. SplDeletePrinterDataEx(
  531. HANDLE hPrinter,
  532. LPCWSTR pKeyName,
  533. LPCWSTR pValueName
  534. );
  535. DWORD
  536. SplDeletePrinterKey(
  537. HANDLE hPrinter,
  538. LPCWSTR pKeyName
  539. );
  540. DWORD
  541. SplSetPrinterData(
  542. HANDLE hPrinter,
  543. LPWSTR pValueName,
  544. DWORD Type,
  545. LPBYTE pData,
  546. DWORD cbData
  547. );
  548. DWORD
  549. SplSetPrinterDataEx(
  550. HANDLE hPrinter,
  551. LPCWSTR pKeyName,
  552. LPCWSTR pValueName,
  553. DWORD Type,
  554. LPBYTE pData,
  555. DWORD cbData
  556. );
  557. BOOL
  558. SplGetPrinterDriver(
  559. HANDLE hPrinter,
  560. LPWSTR pEnvironment,
  561. DWORD Level,
  562. LPBYTE pDriverInfo,
  563. DWORD cbBuf,
  564. LPDWORD pcbNeeded
  565. );
  566. BOOL
  567. SplGetPrinterDriverEx(
  568. HANDLE hPrinter,
  569. LPWSTR pEnvironment,
  570. DWORD Level,
  571. LPBYTE pDriverInfo,
  572. DWORD cbBuf,
  573. LPDWORD pcbNeeded,
  574. DWORD dwClientMajorVersion,
  575. DWORD dwClientMinorVersion,
  576. PDWORD pdwServerMajorVersion,
  577. PDWORD pdwServerMinorVersion
  578. );
  579. BOOL
  580. SplResetPrinter(
  581. HANDLE hPrinter,
  582. LPPRINTER_DEFAULTSW pDefault
  583. );
  584. BOOL
  585. SplGetPrinter(
  586. HANDLE hPrinter,
  587. DWORD Level,
  588. LPBYTE pPrinter,
  589. DWORD cbBuf,
  590. LPDWORD pcbNeeded
  591. );
  592. BOOL
  593. SplSetPrinter(
  594. HANDLE hPrinter,
  595. DWORD Level,
  596. LPBYTE pPrinterInfo,
  597. DWORD Command
  598. );
  599. BOOL
  600. SplSetPrinterExtra(
  601. HANDLE hPrinter,
  602. LPBYTE pExtraData
  603. );
  604. BOOL
  605. SplGetPrinterExtra(
  606. HANDLE hPrinter,
  607. PBYTE *ppExtraData
  608. );
  609. BOOL
  610. SplSetPrinterExtraEx(
  611. HANDLE hPrinter,
  612. DWORD dwPrivateFlag
  613. );
  614. BOOL
  615. SplGetPrinterExtraEx(
  616. HANDLE hPrinter,
  617. LPDWORD pdwPrivateFlag
  618. );
  619. BOOL
  620. SplDriverEvent(
  621. LPWSTR pName,
  622. INT PrinterEvent,
  623. LPARAM lParam,
  624. DWORD *pdwReturnedError
  625. );
  626. BOOL
  627. SplCopyNumberOfFiles(
  628. LPWSTR pszPrinterName,
  629. LPWSTR *ppszSourceFileNames,
  630. DWORD dwCount,
  631. LPWSTR pszTargetDir,
  632. LPBOOL pbFilesAddedOrUpdated
  633. );
  634. BOOL
  635. SplGetDriverDir(
  636. HANDLE hIniSpooler,
  637. LPWSTR pszDir,
  638. LPDWORD pcchDir
  639. );
  640. HMODULE
  641. SplLoadLibraryTheCopyFileModule(
  642. HANDLE hPrinter,
  643. LPWSTR pszModule
  644. );
  645. BOOL
  646. SplCopyFileEvent(
  647. HANDLE hPrinter,
  648. LPWSTR pszKey,
  649. DWORD dwCopyFileEvent
  650. );
  651. VOID
  652. SplDriverUnloadComplete(
  653. LPWSTR pDriverFile
  654. );
  655. BOOL
  656. SplGetSpoolFileInfo(
  657. HANDLE hPrinter,
  658. HANDLE hAppProcess,
  659. DWORD dwLevel,
  660. LPBYTE pSpoolFileInfo,
  661. DWORD cbBuf,
  662. LPDWORD pcbNeeded
  663. );
  664. BOOL
  665. SplCommitSpoolData(
  666. HANDLE hPrinter,
  667. HANDLE hAppProcess,
  668. DWORD cbCommit,
  669. DWORD dwLevel,
  670. LPBYTE pSpoolFileInfo,
  671. DWORD cbBuf,
  672. LPDWORD pcbNeeded
  673. );
  674. BOOL
  675. SplCloseSpoolFileHandle(
  676. HANDLE hPrinter
  677. );
  678. BOOL
  679. bGetDevModePerUser(
  680. HKEY hKeyUser,
  681. LPCWSTR pszPrinter,
  682. PDEVMODE *ppDevMode
  683. );
  684. BOOL
  685. bSetDevModePerUser(
  686. HKEY hKeyUser,
  687. LPCWSTR pszPrinter,
  688. PDEVMODE pDevMode
  689. );
  690. DWORD
  691. SendRecvBidiData(
  692. IN HANDLE hPrinter,
  693. IN LPCWSTR pAction,
  694. IN PBIDI_REQUEST_CONTAINER pReqData,
  695. OUT PBIDI_RESPONSE_CONTAINER* ppResData
  696. );
  697. #ifdef __cplusplus
  698. }
  699. #endif
  700. #endif