Source code of Windows XP (NT5)
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.

821 lines
18 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. } SPOOLER_INFO_2, *PSPOOLER_INFO_2, *LPSPOOLER_INFO_2;
  395. #define SPL_UPDATE_WININI_DEVICES 0x00000001
  396. #define SPL_PRINTER_CHANGES 0x00000002
  397. #define SPL_LOG_EVENTS 0x00000004
  398. #define SPL_FORMS_CHANGE 0x00000008
  399. #define SPL_BROADCAST_CHANGE 0x00000010
  400. #define SPL_SECURITY_CHECK 0x00000020
  401. #define SPL_OPEN_CREATE_PORTS 0x00000040
  402. #define SPL_FAIL_OPEN_PRINTERS_PENDING_DELETION 0x00000080
  403. #define SPL_REMOTE_HANDLE_CHECK 0x00000100
  404. #define SPL_PRINTER_DRIVER_EVENT 0x00000200
  405. #define SPL_ALWAYS_CREATE_DRIVER_SHARE 0x00000400
  406. #define SPL_NO_UPDATE_PRINTERINI 0x00000800
  407. #define SPL_NO_UPDATE_JOBSHD 0x00001000
  408. #define SPL_CLUSTER_REG 0x00002000
  409. #define SPL_OFFLINE 0x00004000
  410. #define SPL_PENDING_DELETION 0x00008000
  411. #define SPL_SERVER_THREAD 0x00010000
  412. #define SPL_PRINT 0x00020000
  413. #define SPL_NON_RAW_TO_MASQ_PRINTERS 0x00040000
  414. #define SPL_OPEN_EXISTING_ONLY 0x00080000
  415. #define SPL_TYPE 0xff000000
  416. #define SPL_TYPE_LOCAL 0x01000000
  417. #define SPL_TYPE_CLUSTER 0x02000000
  418. #define SPL_TYPE_CACHE 0x04000000
  419. HANDLE
  420. SplCreateSpooler(
  421. LPWSTR pMachineName,
  422. DWORD Level,
  423. PBYTE pSpooler,
  424. LPBYTE pReserved
  425. );
  426. BOOL
  427. SplDeleteSpooler(
  428. HANDLE hSpooler
  429. );
  430. BOOL
  431. SplCloseSpooler(
  432. HANDLE hSpooler
  433. );
  434. BOOL
  435. SplEnumForms(
  436. HANDLE hPrinter,
  437. DWORD Level,
  438. LPBYTE pForm,
  439. DWORD cbBuf,
  440. LPDWORD pcbNeeded,
  441. LPDWORD pcReturned
  442. );
  443. BOOL
  444. SplAddForm(
  445. HANDLE hPrinter,
  446. DWORD Level,
  447. LPBYTE pForm
  448. );
  449. BOOL
  450. SplDeleteForm(
  451. HANDLE hPrinter,
  452. LPWSTR pFormName
  453. );
  454. BOOL
  455. SplGetForm(
  456. HANDLE hPrinter,
  457. LPWSTR pFormName,
  458. DWORD Level,
  459. LPBYTE pForm,
  460. DWORD cbBuf,
  461. LPDWORD pcbNeeded
  462. );
  463. BOOL
  464. SplSetForm(
  465. HANDLE hPrinter,
  466. LPWSTR pFormName,
  467. DWORD Level,
  468. LPBYTE pForm
  469. );
  470. BOOL
  471. SplClosePrinter(
  472. HANDLE hPrinter
  473. );
  474. DWORD
  475. SplGetPrinterData(
  476. HANDLE hPrinter,
  477. LPWSTR pValueName,
  478. LPDWORD pType,
  479. LPBYTE pData,
  480. DWORD nSize,
  481. LPDWORD pcbNeeded
  482. );
  483. DWORD
  484. SplGetPrinterDataEx(
  485. HANDLE hPrinter,
  486. LPCWSTR pKeyName,
  487. LPCWSTR pValueName,
  488. LPDWORD pType,
  489. LPBYTE pData,
  490. DWORD nSize,
  491. LPDWORD pcbNeeded
  492. );
  493. DWORD
  494. SplEnumPrinterData(
  495. HANDLE hPrinter,
  496. DWORD dwIndex, // index of value to query
  497. LPWSTR pValueName, // address of buffer for value string
  498. DWORD cbValueName, // size of buffer for value string
  499. LPDWORD pcbValueName, // address for size of value buffer
  500. LPDWORD pType, // address of buffer for type code
  501. LPBYTE pData, // address of buffer for value data
  502. DWORD cbData, // size of buffer for value data
  503. LPDWORD pcbData // address for size of data buffer
  504. );
  505. DWORD
  506. SplEnumPrinterDataEx(
  507. HANDLE hPrinter,
  508. LPCWSTR pKeyName,
  509. LPBYTE pEnumValues,
  510. DWORD cbEnumValues,
  511. LPDWORD pcbEnumValues,
  512. LPDWORD pnEnumValues
  513. );
  514. DWORD
  515. SplEnumPrinterKey(
  516. HANDLE hPrinter,
  517. LPCWSTR pKeyName,
  518. LPWSTR pSubkey, // address of buffer for value string
  519. DWORD cbSubkey, // size of buffer for value string
  520. LPDWORD pcbSubkey // address for size of value buffer
  521. );
  522. DWORD
  523. SplDeletePrinterData(
  524. HANDLE hPrinter,
  525. LPWSTR pValueName
  526. );
  527. DWORD
  528. SplDeletePrinterDataEx(
  529. HANDLE hPrinter,
  530. LPCWSTR pKeyName,
  531. LPCWSTR pValueName
  532. );
  533. DWORD
  534. SplDeletePrinterKey(
  535. HANDLE hPrinter,
  536. LPCWSTR pKeyName
  537. );
  538. DWORD
  539. SplSetPrinterData(
  540. HANDLE hPrinter,
  541. LPWSTR pValueName,
  542. DWORD Type,
  543. LPBYTE pData,
  544. DWORD cbData
  545. );
  546. DWORD
  547. SplSetPrinterDataEx(
  548. HANDLE hPrinter,
  549. LPCWSTR pKeyName,
  550. LPCWSTR pValueName,
  551. DWORD Type,
  552. LPBYTE pData,
  553. DWORD cbData
  554. );
  555. BOOL
  556. SplGetPrinterDriver(
  557. HANDLE hPrinter,
  558. LPWSTR pEnvironment,
  559. DWORD Level,
  560. LPBYTE pDriverInfo,
  561. DWORD cbBuf,
  562. LPDWORD pcbNeeded
  563. );
  564. BOOL
  565. SplGetPrinterDriverEx(
  566. HANDLE hPrinter,
  567. LPWSTR pEnvironment,
  568. DWORD Level,
  569. LPBYTE pDriverInfo,
  570. DWORD cbBuf,
  571. LPDWORD pcbNeeded,
  572. DWORD dwClientMajorVersion,
  573. DWORD dwClientMinorVersion,
  574. PDWORD pdwServerMajorVersion,
  575. PDWORD pdwServerMinorVersion
  576. );
  577. BOOL
  578. SplResetPrinter(
  579. HANDLE hPrinter,
  580. LPPRINTER_DEFAULTSW pDefault
  581. );
  582. BOOL
  583. SplGetPrinter(
  584. HANDLE hPrinter,
  585. DWORD Level,
  586. LPBYTE pPrinter,
  587. DWORD cbBuf,
  588. LPDWORD pcbNeeded
  589. );
  590. BOOL
  591. SplSetPrinter(
  592. HANDLE hPrinter,
  593. DWORD Level,
  594. LPBYTE pPrinterInfo,
  595. DWORD Command
  596. );
  597. BOOL
  598. SplSetPrinterExtra(
  599. HANDLE hPrinter,
  600. LPBYTE pExtraData
  601. );
  602. BOOL
  603. SplGetPrinterExtra(
  604. HANDLE hPrinter,
  605. PBYTE *ppExtraData
  606. );
  607. BOOL
  608. SplSetPrinterExtraEx(
  609. HANDLE hPrinter,
  610. DWORD dwPrivateFlag
  611. );
  612. BOOL
  613. SplGetPrinterExtraEx(
  614. HANDLE hPrinter,
  615. LPDWORD pdwPrivateFlag
  616. );
  617. BOOL
  618. SplDriverEvent(
  619. LPWSTR pName,
  620. INT PrinterEvent,
  621. LPARAM lParam
  622. );
  623. BOOL
  624. SplCopyNumberOfFiles(
  625. LPWSTR pszPrinterName,
  626. LPWSTR *ppszSourceFileNames,
  627. DWORD dwCount,
  628. LPWSTR pszTargetDir,
  629. LPBOOL pbFilesAddedOrUpdated
  630. );
  631. BOOL
  632. SplGetDriverDir(
  633. HANDLE hIniSpooler,
  634. LPWSTR pszDir,
  635. LPDWORD pcchDir
  636. );
  637. HMODULE
  638. SplLoadLibraryTheCopyFileModule(
  639. HANDLE hPrinter,
  640. LPWSTR pszModule
  641. );
  642. BOOL
  643. SplCopyFileEvent(
  644. HANDLE hPrinter,
  645. LPWSTR pszKey,
  646. DWORD dwCopyFileEvent
  647. );
  648. VOID
  649. SplDriverUnloadComplete(
  650. LPWSTR pDriverFile
  651. );
  652. BOOL
  653. SplGetSpoolFileInfo(
  654. HANDLE hPrinter,
  655. HANDLE hAppProcess,
  656. DWORD dwLevel,
  657. LPBYTE pSpoolFileInfo,
  658. DWORD cbBuf,
  659. LPDWORD pcbNeeded
  660. );
  661. BOOL
  662. SplCommitSpoolData(
  663. HANDLE hPrinter,
  664. HANDLE hAppProcess,
  665. DWORD cbCommit,
  666. DWORD dwLevel,
  667. LPBYTE pSpoolFileInfo,
  668. DWORD cbBuf,
  669. LPDWORD pcbNeeded
  670. );
  671. BOOL
  672. SplCloseSpoolFileHandle(
  673. HANDLE hPrinter
  674. );
  675. BOOL
  676. bGetDevModePerUser(
  677. HKEY hKeyUser,
  678. LPCWSTR pszPrinter,
  679. PDEVMODE *ppDevMode
  680. );
  681. BOOL
  682. bSetDevModePerUser(
  683. HKEY hKeyUser,
  684. LPCWSTR pszPrinter,
  685. PDEVMODE pDevMode
  686. );
  687. DWORD
  688. SendRecvBidiData(
  689. IN HANDLE hPrinter,
  690. IN LPCWSTR pAction,
  691. IN PBIDI_REQUEST_CONTAINER pReqData,
  692. OUT PBIDI_RESPONSE_CONTAINER* ppResData
  693. );
  694. #ifdef __cplusplus
  695. }
  696. #endif
  697. #endif