/*++ Copyright (c) 1994 - 1995 Microsoft Corporation Module Name: Drv.c Abstract: Test driver installation Author: Revision History: --*/ #define NOMINMAX #include #include #include #include #include #include #include #include #include "..\splsetup.h" BOOL Dbg1 = TRUE; void DumpSelectedDriver( HDEVINFO hDevInfo ); BOOL Dbg2 = TRUE; void DumpDriverInfo3( LPDRIVER_INFO_3 p3 ); BOOL Dbg3 = TRUE; void InstallDriver( HDEVINFO hDevInfo, HANDLE h ); HDEVINFO hDevInfo; int #if !defined(_MIPS_) && !defined(_ALPHA_) && !defined(_PPC_) _cdecl #endif main (argc, argv) int argc; char *argv[]; { DWORD dwLastError; hDevInfo = PSetupCreatePrinterDeviceInfoList(0); if ( hDevInfo == INVALID_HANDLE_VALUE ) { printf("%s: PSetupCreatePrinterDeviceInfoList fails with %d\n", argv[0], GetLastError()); return 0; } do { PSetupSelectDriver(hDevInfo); dwLastError = GetLastError(); if ( !dwLastError ) DumpSelectedDriver(hDevInfo); if ( !PSetupRefreshDriverList(hDevInfo) ) { printf("%s: PSetupRefreshDriverList fails with %d\n", argv[0], GetLastError()); } } while ( dwLastError == ERROR_SUCCESS); printf("%s: Exiting because of last error %d\n", argv[0], GetLastError()); PSetupDestroyPrinterDeviceInfoList(hDevInfo); } void DumpSelectedDriver( HDEVINFO hDevInfo ) { HANDLE h; DRIVER_FIELD DrvField; if ( !Dbg1 ) return; h = PSetupGetSelectedDriverInfo(hDevInfo); if ( !h ) { printf("PSetupBuildDriverInfo fails with %d\n", GetLastError()); return; } DrvField.Index = DRV_INFO_3; if ( !PSetupGetLocalDataField(h, PSetupThisPlatform(), &DrvField) ) { printf("PSetupGetLocalDataField fails with %d\n", GetLastError()); return; } DumpDriverInfo3(DrvField.pDriverInfo3); InstallDriver(hDevInfo, h); Cleanup: PSetupFreeDrvField(&DrvField); PSetupDestroySelectedDriverInfo(h); } void DumpDriverInfo3( LPDRIVER_INFO_3 p3 ) { LPTSTR pp; printf("\tDriverInfo3:\n"); printf("\t----------------------------------------------------------\n"); printf("Driver Name : %ws\n", p3->pName); printf("Driver File : %ws\n", p3->pDriverPath); printf("Config File : %ws\n", p3->pConfigFile); printf("Data File : %ws\n", p3->pDataFile); printf("Help File : %ws\n", p3->pHelpFile); if ( p3->pDependentFiles && *p3->pDependentFiles ) { printf("Dependent File : "); for ( pp = p3->pDependentFiles; pp && *pp ; pp += wcslen(pp) + 1 ) printf("%ws ", pp); printf("\n"); } else printf("Dependent File : %ws\n", p3->pDependentFiles); printf("Monitor Name : %ws\n", p3->pMonitorName); printf("DefaultData : %ws\n", p3->pDefaultDataType); } void InstallDriver( HDEVINFO hDevInfo, HANDLE h ) { DWORD dwLastError; if ( !Dbg3 ) return; dwLastError = PSetupInstallPrinterDriver(hDevInfo, h, PlatformX86, 3, NULL, 0, L"X86", NULL); if ( dwLastError ) { printf(":PSetupeInstallPrinterDriver fails with %d\n", GetLastError()); } dwLastError = PSetupInstallPrinterDriver(hDevInfo, h, PlatformMIPS, 3, NULL, 0, L"MIPS", NULL); if ( dwLastError ) { printf(":PSetupeInstallPrinterDriver fails with %d\n", GetLastError()); } dwLastError = PSetupInstallPrinterDriver(hDevInfo, h, PlatformAlpha, 3, NULL, 0, L"Alpha", NULL); if ( dwLastError ) { printf(":PSetupeInstallPrinterDriver fails with %d\n", GetLastError()); } }