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.

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