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.

849 lines
20 KiB

  1. /*++
  2. Copyright (c) 1995-97 Microsoft Corporation
  3. All rights reserved.
  4. Module Name:
  5. local.h
  6. Abstract:
  7. Holds spooler install headers.
  8. Author:
  9. Muhunthan Sivapragasam (MuhuntS) 20-Oct-1995
  10. Revision History:
  11. --*/
  12. #if defined(__cplusplus)
  13. extern "C"
  14. {
  15. #endif
  16. #define MAX_SETUP_LEN 250
  17. #define MAX_SETUP_ALLOC_STRING_LEN 4000 // in characters, used in GetLongStringFromRcFile
  18. #define MAX_SECT_NAME_LEN 256
  19. #define MAX_DWORD 0xFFFFFFFF
  20. #define IDS_PRINTERWIZARD 1001
  21. #define IDS_WINNTDEV_INSTRUCT 1002
  22. #define IDS_WIN95DEV_INSTRUCT 1003
  23. #define IDS_SELECTDEV_LABEL 1004
  24. #define IDS_DRIVERS_FOR_PLATFORM 1005
  25. #define IDS_INSTALLING_PORT_MONITOR 1006
  26. #define IDS_WRONG_ARCHITECTURE 1007
  27. #define IDS_INVALID_DRIVER 1008
  28. #define IDS_PROMPT_PORT_MONITOR 1009
  29. #define IDS_ERROR_INST_PORT_MONITOR 1010
  30. #define IDS_WIN95_FLATSHARE 1021
  31. #define IDS_WINNT_40_CD 1022
  32. #define IDS_WINNT_SERVER_CD 1023
  33. #define IDS_WINNT_X86_SERVER_CD 1024
  34. #define IDS_WINNT_ALPHA_SERVER_CD 1025
  35. #define IDS_WINNT_IA64_SERVER_CD 1026
  36. #define IDS_PROMPT_ALT_PLATFORM_DRIVER 1027
  37. #define IDS_WARN_NO_ALT_PLATFORM_DRIVER 1028
  38. #define IDS_WARN_NO_DRIVER_FOUND 1029
  39. #define IDS_DRIVERS_FOR_WIN95 1031
  40. #define IDS_DRIVERS_FOR_NT4_X86 1032
  41. #define IDS_DRIVERS_FOR_NT4_ALPHA 1033
  42. #define IDS_DRIVERS_FOR_NT4_MIPS 1034
  43. #define IDS_DRIVERS_FOR_NT4_PPC 1035
  44. #define IDS_DRIVERS_FOR_X86 1036
  45. #define IDS_DRIVERS_FOR_IA64 1037
  46. //
  47. // Setuplog entried used during upgrade
  48. //
  49. #define IDS_UPGRADE_FAILED 1051
  50. #define IDS_DRIVER_UPGRADE_FAILED 1052
  51. #define IDS_PRINTER_UPGRADE_FAILED 1053
  52. #define IDS_PRINTER_DELETED 1054
  53. #define IDS_DRIVER_CHANGED 1055
  54. #define IDS_CONNECTION_DELETED 1056
  55. //
  56. // entries for printupg warnings
  57. //
  58. #define IDS_TITLE_BSP_WARN 1060
  59. #define IDS_TITLE_BSP_ERROR 1061
  60. #define IDS_BSP_WARN_NO_INBOX 1062
  61. #define IDS_BSP_WARN_WITH_INBOX 1063
  62. #define IDS_BSP_BLOCK_NO_INBOX 1064
  63. #define IDS_BSP_BLOCK_WITH_INBOX 1065
  64. #define IDS_BSP_WARN_UNSIGNED_DRIVER 1066
  65. #define IDT_STATIC 100
  66. #define IDD_BILLBOARD 101
  67. #define IDI_SETUP 102
  68. #define SETUP_ICON 103
  69. //
  70. // Printer driver directory set in ntprint.inf
  71. //
  72. #define PRINTER_DRIVER_DIRECTORY_ID 66000
  73. #define PRINT_PROC_DIRECTORY_ID 66001
  74. #define SYSTEM_DIRECTORY_ID_ONLY_FOR_NATIVE_ARCHITECTURE 66002
  75. #define ICM_PROFILE_DIRECTORY_ID 66003
  76. #define WEBPAGE_DIRECTORY_ID 66004
  77. #define PSETUP_SIGNATURE 0x9585
  78. // Defines for the columns in the Architecture Platform Table for Driver Signing & CDM
  79. #define OS_PLATFORM 0
  80. #define PROCESSOR_ARCH 1
  81. #ifdef UNICODE
  82. #define lstrchr wcschr
  83. #define lstrncmp wcsncmp
  84. #define lstrncmpi _wcsnicmp
  85. #else
  86. #define lstrchr strchr
  87. #define lstrtok strtok
  88. #define lstrncmp strncmp
  89. #define lstrncmpi _strnicmp
  90. #endif
  91. #define SIZECHARS(x) (sizeof((x))/sizeof(*x))
  92. //
  93. // Type definitions
  94. //
  95. typedef struct _SPLPLATFORMINFO {
  96. LPTSTR pszName;
  97. } SPLPLATFORMINFO, *PSPLPLATFORMINFO;
  98. typedef struct _SELECTED_DRV_INFO {
  99. LPTSTR pszInfName;
  100. LPTSTR pszModelName;
  101. LPTSTR pszDriverSection;
  102. PSP_DEVINFO_DATA pDevInfoData;
  103. LPTSTR pszHardwareID;
  104. LPTSTR pszManufacturer;
  105. LPTSTR pszOEMUrl;
  106. LPTSTR pszProvider;
  107. FILETIME ftDriverDate;
  108. DWORDLONG dwlDriverVersion;
  109. DWORD Flags;
  110. LPTSTR pszzPreviousNames;
  111. } SELECTED_DRV_INFO, *PSELECTED_DRV_INFO;
  112. #define SDFLAG_PREVNAME_SECTION_FOUND 0x00000001
  113. #define SDFLAG_CDM_DRIVER 0x00000002
  114. typedef struct _PARSEINF_INFO {
  115. PLATFORM platform;
  116. LPTSTR pszInstallSection; // Can be platform dependent
  117. LPTSTR pszzICMFiles;
  118. LPTSTR pszPrintProc;
  119. LPTSTR pszVendorSetup;
  120. LPTSTR pszVendorInstaller;
  121. DWORD cbDriverInfo6;
  122. DRIVER_INFO_6 DriverInfo6;
  123. } PARSEINF_INFO, *PPARSEINF_INFO;
  124. typedef struct _PNP_INFO {
  125. LPTSTR pszPortName;
  126. LPTSTR pszDeviceInstanceId;
  127. } PNP_INFO, *PPNP_INFO;
  128. #define VALID_INF_INFO 0x00000001
  129. #define VALID_PNP_INFO 0x00000002
  130. //
  131. // Set if the installation files are copied into a directory whose name is derived from
  132. // the pnp ID. Since the spooler copies files around, setupapi can't find the files anymore
  133. // when the device is re-pnp'd and prompts the user for them. We copy the files into this directory
  134. // and don't delete it, that way setupapi can find them.
  135. //
  136. #define LOCALDATAFLAG_PNP_DIR_INSTALL 0x00000004
  137. typedef struct _PSETUP_LOCAL_DATA {
  138. SELECTED_DRV_INFO DrvInfo;
  139. DWORD signature;
  140. DWORD Flags;
  141. PARSEINF_INFO InfInfo;
  142. PNP_INFO PnPInfo;
  143. } PSETUP_LOCAL_DATA;
  144. //
  145. // Global data
  146. //
  147. extern OSVERSIONINFO OsVersionInfo;
  148. extern LCID lcid;
  149. extern DWORD dwThisMajorVersion;
  150. extern TCHAR sComma;
  151. extern TCHAR sZero;
  152. extern const GUID GUID_DEVCLASS_PRINTER;
  153. extern PLATFORM MyPlatform;
  154. extern HINSTANCE ghInst;
  155. extern SPLPLATFORMINFO PlatformEnv[], PlatformOverride[];
  156. extern DWORD PlatformArch[][2];
  157. extern TCHAR cszNtprintInf[];
  158. extern TCHAR cszDataSection[];
  159. extern TCHAR cszComma[];
  160. extern ULONG_PTR DriverInfo6Offsets[];
  161. extern ULONG_PTR LocalDataOffsets[];
  162. extern ULONG_PTR InfInfoOffsets[];
  163. extern ULONG_PTR SharedInfInfoOffsets[];
  164. extern ULONG_PTR PnPInfoOffsets[];
  165. extern TCHAR cszWebNTPrintPkg[];
  166. extern PCODEDOWNLOADINFO gpCodeDownLoadInfo;
  167. extern TCHAR cszCatExt[];
  168. extern TCHAR cszInfExt[];
  169. extern CRITICAL_SECTION CDMCritSect;
  170. extern CRITICAL_SECTION SkipCritSect;
  171. extern LPTSTR gpszSkipDir;
  172. extern TCHAR cszHardwareID[];
  173. extern TCHAR cszBestDriverInbox[];
  174. extern TCHAR cszPnPKey[];
  175. extern TCHAR cszDeviceInstanceId[];
  176. extern TCHAR cszMonitorKey[];
  177. //
  178. // Function prototypes
  179. //
  180. VOID
  181. GetDriverPath(
  182. IN HDEVINFO hDevInfo,
  183. IN PPSETUP_LOCAL_DATA pLocalData,
  184. OUT TCHAR szDriverPath[MAX_PATH]
  185. );
  186. DWORD
  187. InvokeSetup(
  188. IN HWND hwnd,
  189. IN LPCTSTR pszOption,
  190. IN LPCTSTR pszInfFile,
  191. IN LPCTSTR pszSourcePath,
  192. IN LPCTSTR pszServerName OPTIONAL
  193. );
  194. PVOID
  195. LocalAllocMem(
  196. IN UINT cbSize
  197. );
  198. VOID
  199. LocalFreeMem(
  200. IN PVOID pMem
  201. );
  202. LPTSTR
  203. AllocStr(
  204. IN LPCTSTR pszStr
  205. );
  206. DWORD
  207. InstallWin95Driver(
  208. IN HWND hwnd,
  209. IN LPCTSTR pszModel,
  210. IN LPCTSTR pszzPreviousNames,
  211. IN BOOL bPreviousNamesSection,
  212. IN LPCTSTR pszServerName,
  213. IN OUT LPTSTR pszInfPath,
  214. IN LPCTSTR pszDiskName,
  215. IN DWORD dwInstallFlags,
  216. IN DWORD dwAddDrvFlags
  217. );
  218. VOID
  219. InfGetString(
  220. IN PINFCONTEXT pInfContext,
  221. IN DWORD dwFieldIndex,
  222. OUT LPTSTR *ppszField,
  223. IN OUT LPDWORD pcchCopied,
  224. IN OUT LPBOOL pbFail
  225. );
  226. LPTSTR
  227. GetStringFromRcFile(
  228. UINT uId
  229. );
  230. LPTSTR
  231. GetLongStringFromRcFile(
  232. UINT uId
  233. );
  234. BOOL
  235. SetSelectDevParams(
  236. IN HDEVINFO hDevInfo,
  237. IN PSP_DEVINFO_DATA pDevInfoData,
  238. IN BOOL bWin95,
  239. IN LPCTSTR pszModel OPTIONAL
  240. );
  241. BOOL
  242. SetDevInstallParams(
  243. IN HDEVINFO hDevInfo,
  244. IN PSP_DEVINFO_DATA pDevInfoData,
  245. IN LPCTSTR pszDriverPath OPTIONAL
  246. );
  247. HDEVINFO
  248. CreatePrinterDeviceInfoList(
  249. IN HWND hwnd
  250. );
  251. LPDRIVER_INFO_6
  252. Win95DriverInfo6FromName(
  253. IN HDEVINFO hDevInfo,
  254. IN PPSETUP_LOCAL_DATA* ppLocalData,
  255. IN LPCTSTR pszModel,
  256. IN LPCTSTR pszzPreviousNames
  257. );
  258. BOOL
  259. CopyPrinterDriverFiles(
  260. IN LPDRIVER_INFO_6 pDriverInfo6,
  261. IN LPCTSTR pszInfName,
  262. IN LPCTSTR pszSourcePath,
  263. IN LPCTSTR pszDiskName,
  264. IN LPCTSTR pszTargetPath,
  265. IN HWND hwnd,
  266. IN DWORD dwInstallFlags,
  267. IN BOOL bForgetSource
  268. );
  269. BOOL
  270. ParseInf(
  271. IN HDEVINFO hDevInfo,
  272. IN PPSETUP_LOCAL_DATA pLocalData,
  273. IN PLATFORM platform,
  274. IN LPCTSTR pszServerName,
  275. IN DWORD dwInstallFlags
  276. );
  277. BOOL
  278. BuildClassDriverList(
  279. IN HDEVINFO hDevInfo
  280. );
  281. DWORD
  282. InstallDriverFromCurrentInf(
  283. IN HDEVINFO hDevInfo,
  284. IN PPSETUP_LOCAL_DATA pLocalData,
  285. IN HWND hwnd,
  286. IN PLATFORM platform,
  287. IN DWORD dwVersion,
  288. IN LPCTSTR pszServerName,
  289. IN HSPFILEQ CopyQueue,
  290. IN PVOID QueueContext,
  291. IN PSP_FILE_CALLBACK InstallMsgHandler,
  292. IN DWORD Flags,
  293. IN LPCTSTR pszSource,
  294. IN DWORD dwInstallFlags,
  295. IN DWORD dwAddDrvFlags,
  296. IN LPCTSTR pszFileSrcPath, // can be different from INF source in case we had to decompress NT4 CD-ROM inf
  297. OUT LPTSTR *ppszNewModelName,
  298. OUT PDWORD pBlockingInfo
  299. );
  300. HRESULT
  301. IsProductType(
  302. IN BYTE ProductType,
  303. IN BYTE Comparison
  304. );
  305. #if 0
  306. BOOL
  307. CopyOEMInfFileAndGiveUniqueName(
  308. IN HDEVINFO hDevInfo,
  309. IN PSP_DEVINFO_DATA pDevInfoData,
  310. IN LPTSTR pszInfFile
  311. );
  312. #endif
  313. BOOL
  314. AddPrintMonitor(
  315. IN LPCTSTR pszName,
  316. IN LPCTSTR pszDllName
  317. );
  318. BOOL
  319. FindPathOnSource(
  320. IN LPCTSTR pszFileName,
  321. IN HINF MasterInf,
  322. IN OUT LPTSTR pszPathOnSource,
  323. IN DWORD dwLen,
  324. OUT LPTSTR *ppszMediaDescription, OPTIONAL
  325. OUT LPTSTR *ppszTagFile OPTIONAL
  326. );
  327. VOID
  328. DestroyLocalData(
  329. IN PPSETUP_LOCAL_DATA pLocalData
  330. );
  331. LPDRIVER_INFO_6
  332. CloneDriverInfo6(
  333. IN LPDRIVER_INFO_6 pSourceDriverInfo6,
  334. IN DWORD cbDriverInfo6
  335. );
  336. PPSETUP_LOCAL_DATA
  337. BuildInternalData(
  338. IN HDEVINFO hDevInfo,
  339. IN PSP_DEVINFO_DATA pSpDevInfoData
  340. );
  341. VOID
  342. PackDriverInfo6(
  343. IN LPDRIVER_INFO_6 pSourceDriverInfo6,
  344. IN LPDRIVER_INFO_6 pTargetDriverInfo6,
  345. IN DWORD cbDriverInfo6
  346. );
  347. BOOL
  348. InfGetDependentFilesAndICMFiles(
  349. IN HDEVINFO hDevInfo,
  350. IN HINF hInf,
  351. IN BOOL bWin95,
  352. IN PPSETUP_LOCAL_DATA pLocalData,
  353. IN PLATFORM platform,
  354. IN LPCTSTR pszServerName,
  355. IN DWORD dwInstallFlags,
  356. IN LPCTSTR pszSectionNameWithExt,
  357. IN OUT LPDWORD pcchSize
  358. );
  359. BOOL
  360. IdenticalDriverInfo6(
  361. IN LPDRIVER_INFO_6 p1,
  362. IN LPDRIVER_INFO_6 p2
  363. );
  364. BOOL
  365. DeleteAllFilesInDirectory(
  366. LPCTSTR pszDir,
  367. BOOL bDeleteDir
  368. );
  369. LPTSTR
  370. FileNamePart(
  371. IN LPCTSTR pszFullName
  372. );
  373. HDEVINFO
  374. GetInfAndBuildDrivers(
  375. IN HWND hwnd,
  376. IN DWORD dwTitleId,
  377. IN DWORD dwDiskId,
  378. IN TCHAR szInfPath[MAX_PATH],
  379. IN DWORD dwInstallFlags,
  380. IN PLATFORM platform,
  381. IN DWORD dwVersion,
  382. IN LPCTSTR pszDriverName, OPTIONAL
  383. OUT PPSETUP_LOCAL_DATA *ppLocalData, OPTIONAL
  384. OUT LPTSTR *ppFileSrcPath OPTIONAL
  385. );
  386. BOOL
  387. MyName(
  388. IN LPCTSTR pszServerName
  389. );
  390. BOOL
  391. CreateDevNodeForPrinter(
  392. IN HDEVINFO hDevInfo,
  393. IN PPSETUP_LOCAL_DATA pLocalData,
  394. IN LPCTSTR pszPrinterName,
  395. IN HANDLE hPrinter
  396. );
  397. VOID
  398. FreeStructurePointers(
  399. LPBYTE pStruct,
  400. PULONG_PTR pOffSets,
  401. BOOL bFreeStruct
  402. );
  403. BOOL
  404. AddPrinterDriverUsingCorrectLevel(
  405. IN LPCTSTR pszServerName,
  406. IN DRIVER_INFO_6 *pDriverInfo6,
  407. IN DWORD dwAddDrvFlags
  408. );
  409. BOOL
  410. AddPrinterDriverUsingCorrectLevelWithPrintUpgRetry(
  411. IN LPCTSTR pszServerName, OPTIONAL
  412. IN DRIVER_INFO_6 *pDriverInfo6,
  413. IN DWORD dwAddDrvFlags,
  414. IN BOOL bIsDriverPathFullPath,
  415. IN BOOL bOfferReplacement,
  416. IN BOOL bPopupUI,
  417. OUT LPTSTR *ppszReplacementDriver,
  418. OUT DWORD *pdwBlockingStatus
  419. );
  420. BOOL
  421. BlockedDriverPrintUpgUI(
  422. IN LPCTSTR pszServer, OPTIONAL
  423. IN DRIVER_INFO_6 *pDriverInfo6,
  424. IN BOOL bIsDriverPathFullPath,
  425. IN BOOL bOfferReplacement,
  426. IN BOOL bPopupUI,
  427. OUT LPTSTR *ppszReplacementDriver,
  428. OUT DWORD *pdwBlockingStatus
  429. );
  430. BOOL
  431. InfIsCompatibleDriver(
  432. IN LPCTSTR pszDriverModel,
  433. IN LPCTSTR pszDriverPath, // main rendering driver dll
  434. IN LPCTSTR pszEnvironment,
  435. IN HINF hInf,
  436. OUT DWORD *pdwBlockingStatus,
  437. OUT LPTSTR *ppszReplacementDriver OPTIONAL // caller must free it.
  438. );
  439. BOOL
  440. FileExists(
  441. IN LPCTSTR pszFileName
  442. );
  443. BOOL
  444. SetPnPInfoForPrinter(
  445. IN HANDLE hPrinter,
  446. IN LPCTSTR pszDeviceInstanceId,
  447. IN LPCTSTR pszHardwareID,
  448. IN LPCTSTR pszManufacturer,
  449. IN LPCTSTR pszOEMUrl
  450. );
  451. BOOL
  452. IsRunningNtServer(
  453. VOID
  454. );
  455. BOOL
  456. InstallAllInfSections(
  457. IN PPSETUP_LOCAL_DATA pLocalData,
  458. IN PLATFORM platform,
  459. IN LPCTSTR pszServerName,
  460. IN HSPFILEQ CopyQueue,
  461. IN LPCTSTR pszSource,
  462. IN DWORD dwInstallFlags,
  463. IN HINF hInf,
  464. IN LPCTSTR pszInstallSection
  465. );
  466. LPTSTR
  467. CheckForCatalogFile(
  468. IN HINF hInf,
  469. IN BOOL bOnlyFromINF,
  470. IN LPCTSTR pszSource
  471. );
  472. BOOL
  473. SetTargetDirectories(
  474. IN PPSETUP_LOCAL_DATA pLocalData,
  475. IN PLATFORM platform,
  476. IN LPCTSTR pszServerName,
  477. IN HINF hInf,
  478. IN DWORD dwInstallFlags
  479. );
  480. BOOL
  481. IsMonitorFound(
  482. IN LPVOID pBuf,
  483. IN DWORD dwReturned,
  484. IN LPTSTR pszName
  485. );
  486. BOOL
  487. IsMonitorInstalled(
  488. IN LPTSTR pszMonitorName
  489. );
  490. BOOL
  491. IsLanguageMonitorInstalled(
  492. IN PCTSTR pszMonitorName
  493. );
  494. BOOL
  495. CleanupUniqueScratchDirectory(
  496. IN LPCTSTR pszServerName,
  497. IN PLATFORM platform
  498. );
  499. BOOL
  500. CleanupScratchDirectory(
  501. IN LPCTSTR pszServerName,
  502. IN PLATFORM platform
  503. );
  504. BOOL
  505. InitCodedownload(
  506. HWND hwnd
  507. );
  508. VOID
  509. DestroyCodedownload(
  510. PCODEDOWNLOADINFO pCodeDownLoadInfo
  511. );
  512. BOOL
  513. DestroyOnlyPrinterDeviceInfoList(
  514. IN HDEVINFO hDevInfo
  515. );
  516. LPTSTR
  517. GetSystemInstallPath(
  518. VOID
  519. );
  520. PPSETUP_LOCAL_DATA
  521. RebuildDeviceInfo(
  522. IN HDEVINFO hDevInfo,
  523. IN PPSETUP_LOCAL_DATA pLocalData,
  524. IN LPCTSTR pszSource
  525. );
  526. BOOL
  527. SetupSkipDir(
  528. IN PLATFORM platform,
  529. IN LPCTSTR pszServerName
  530. );
  531. void
  532. CleanupSkipDir(
  533. VOID
  534. );
  535. LPTSTR
  536. AllocAndCatStr(
  537. IN LPCTSTR pszStr1,
  538. IN LPCTSTR pszStr2
  539. );
  540. LPTSTR
  541. AllocAndCatStr2(
  542. IN LPCTSTR pszStr1,
  543. IN LPCTSTR pszStr2,
  544. IN LPCTSTR pszStr3
  545. );
  546. LPTSTR
  547. AllocStrWCtoTC(
  548. IN LPWSTR lpStr
  549. );
  550. VOID
  551. PSetupKillBadUserConnections(
  552. VOID
  553. );
  554. DWORD
  555. PSetupInstallInboxDriverSilently(
  556. IN LPCTSTR pszDriverName
  557. );
  558. BOOL
  559. PruneInvalidFilesIfNotAdmin(
  560. IN HWND hWnd,
  561. IN OUT HSPFILEQ CopyQueue
  562. );
  563. BOOL
  564. AddDirectoryTag(
  565. IN LPTSTR pszDir,
  566. IN DWORD dwSize
  567. );
  568. BOOL
  569. AddPnpDirTag(
  570. IN LPTSTR pszHardwareId,
  571. IN OUT LPTSTR pszDir,
  572. IN DWORD dwSize
  573. );
  574. BOOL
  575. AddDirToDriverInfo(
  576. IN LPTSTR pszDir,
  577. IN LPDRIVER_INFO_6 pDriverInfo6
  578. );
  579. VOID
  580. GetCDRomDrive(
  581. TCHAR szDrive[5]
  582. );
  583. BOOL
  584. IsSystemUpgradeInProgress(
  585. VOID
  586. );
  587. BOOL
  588. IsSystemSetupInProgress(
  589. VOID
  590. );
  591. BOOL
  592. IsSpoolerRunning(
  593. VOID
  594. );
  595. LPTSTR
  596. GetMyTempDir(
  597. VOID
  598. );
  599. BOOL
  600. IsNTPrintInf(
  601. IN LPCTSTR pszInfName
  602. );
  603. BOOL
  604. IsSystemNTPrintInf(
  605. IN LPCTSTR pszInfName
  606. );
  607. PVOID
  608. SetupDriverSigning(
  609. IN HDEVINFO hDevInfo,
  610. IN LPCTSTR pszServerName,
  611. IN LPTSTR pszInfName,
  612. IN LPCTSTR pszSource,
  613. IN PLATFORM platform,
  614. IN DWORD dwVersion,
  615. IN HSPFILEQ CopyQueue,
  616. IN BOOL bWeb
  617. );
  618. BOOL
  619. IsLocalAdmin(
  620. OUT BOOL *pbAdmin
  621. );
  622. BOOL
  623. GetCatalogFile(
  624. IN HANDLE hDriverSigning,
  625. OUT PCWSTR *ppszCat
  626. );
  627. BOOL
  628. DrvSigningIsLocalAdmin(
  629. IN HANDLE hDriverSigning,
  630. OUT BOOL *pbIsLocalAdmin
  631. );
  632. BOOL
  633. AddDriverCatalogIfNotAdmin(
  634. IN PCWSTR pszServer,
  635. IN HANDLE hDriverSigningInfo,
  636. IN PCWSTR pszInfPath,
  637. IN PCWSTR pszSrcLoc,
  638. IN DWORD dwMediaType,
  639. IN DWORD dwCopyStyle
  640. );
  641. BOOL
  642. CleanupDriverSigning(
  643. IN PVOID pDSInfo
  644. );
  645. BOOL
  646. CheckForCatalogFileInInf(
  647. IN LPCTSTR pszInfName,
  648. OUT LPTSTR *lppszCatFile OPTIONAL
  649. );
  650. BOOL
  651. IsCatInInf(
  652. IN PVOID pDSInfo
  653. );
  654. BOOL
  655. GetOSVersion(
  656. IN LPCTSTR pszServerName,
  657. OUT POSVERSIONINFO pOSVer
  658. );
  659. BOOL
  660. GetOSVersionEx(
  661. IN LPCTSTR pszServerName,
  662. OUT POSVERSIONINFOEX pOSVerEx
  663. );
  664. BOOL
  665. GetArchitecture(
  666. IN LPCTSTR pszServerName,
  667. OUT LPTSTR pszArch,
  668. IN OUT LPDWORD pcArchSize
  669. );
  670. DWORD
  671. InstallDriverSilently(
  672. IN LPCTSTR pszInfFile,
  673. IN LPCTSTR pszDriverName,
  674. IN LPCTSTR pszSource
  675. );
  676. BOOL
  677. IsInWow64(
  678. );
  679. BOOL
  680. IsWhistlerOrAbove(
  681. IN LPCTSTR pszServerName
  682. );
  683. DWORD
  684. InstallReplacementDriver(
  685. IN HWND hwnd,
  686. IN LPCTSTR pszServerName,
  687. IN LPCTSTR pszModelName,
  688. IN PLATFORM platform,
  689. IN DWORD version,
  690. IN DWORD dwInstallFlags,
  691. IN DWORD dwAddDrvFlags
  692. );
  693. HMODULE LoadLibraryUsingFullPath(
  694. LPCTSTR lpFileName
  695. );
  696. BOOL
  697. CheckAndKeepPreviousNames(
  698. IN LPCTSTR pszServer,
  699. IN PDRIVER_INFO_6 pDriverInfo6,
  700. IN PLATFORM platform
  701. );
  702. BOOL
  703. IsTheSamePlatform(
  704. IN LPCTSTR pszServer,
  705. IN PLATFORM platform
  706. );
  707. LPTSTR
  708. GetArchitectureName(
  709. IN LPCTSTR pszServerName
  710. );
  711. #if defined(__cplusplus)
  712. }
  713. #endif