diff options
Diffstat (limited to 'setup/DIFxAPI/AppDrv/AppDrvDepend.c')
| -rw-r--r-- | setup/DIFxAPI/AppDrv/AppDrvDepend.c | 147 |
1 files changed, 0 insertions, 147 deletions
diff --git a/setup/DIFxAPI/AppDrv/AppDrvDepend.c b/setup/DIFxAPI/AppDrv/AppDrvDepend.c deleted file mode 100644 index 27180f00..00000000 --- a/setup/DIFxAPI/AppDrv/AppDrvDepend.c +++ /dev/null @@ -1,147 +0,0 @@ -/*++ - -Copyright (c) Microsoft Corporation - - -Description: - -This sample demonstrates how to use the application-to-driver dependency -feature of the Driver Install Frameworks (DIFx) API. The DriverPackageInstall -and the DriverPackageUninstall APIs allow the calling application to register -and remove dependencies on a driver package. In order to register or remove -a dependency on a driver package, the calling application needs to populate -the fields of an INSTALLERINFO structure with information about itself. It -then needs to pass in this structure as a parameter to the DIFx APIs, as -shown in this sample. - ---*/ -#include <windows.h> -#include <stdio.h> -#include <difxapi.h> - -int __cdecl -wmain( int argc, WCHAR* argv[] ) -{ - WCHAR *InfPath = NULL; - INSTALLERINFO AppInfo; - BOOL Result; - BOOL NeedReboot; - - if (argc < 7) { - wprintf( TEXT("USAGE: AppDrv.exe <option> <full path to the inf file> <Application ID> <Product display name> <Product name> <Manufacturer name>\n") ); - wprintf( TEXT("<option> can be one of the following -\n") ); - wprintf( TEXT("/i - Install the driver\n") ); - wprintf( TEXT("/u - Uninstall the driver\n") ); - return 0; - } - - // - // Initialization - // - NeedReboot = FALSE; - - // - // Get the path to the INF file - // - InfPath = argv[2]; - - // - // Fill in the fields of the INSTALLERINFO structure with information about - // the application performing the install. - // - - // - // The application ID should be some random string unique to this - // application. - // - AppInfo.pApplicationId = argv[3]; - AppInfo.pDisplayName = argv[4]; - AppInfo.pProductName = argv[5]; - AppInfo.pMfgName = argv[6]; - - // - // The option parameter should be present and be exactly two characters. - // - if ((argv[1] == NULL) || - (argv[1][0] == TEXT('\0')) || - (argv[1][1] == TEXT('\0')) || - (argv[1][2] != TEXT('\0'))) { - wprintf( TEXT("ERROR: An invalid command line option %ws was passed in!\n"), argv[1] ); - goto clean0; - } - - if ((argv[1][0] == TEXT('/')) && - ((argv[1][1] == TEXT('i')) || - (argv[1][1] == TEXT('I')))) { - // - // Install the driver package, passing in the INSTALLERINFO structure with - // information about the application performing the install. By passing in - // this structure, the "MySoftware" application is expressing a dependency - // on the driver being installed. - // - wprintf( TEXT("INFO: Attempting to install the driver package %ws.\n"), InfPath ); - - Result = DriverPackageInstall(InfPath, - 0, // flags - &AppInfo, // dependency information - &NeedReboot); - - if (ERROR_SUCCESS == Result) { - wprintf( TEXT("SUCCESS: installed driver package %ws.\n"), InfPath ); - } else if (ERROR_NO_MORE_ITEMS == Result) { - wprintf( TEXT("INFO: the driver package %ws was successfully staged on the machine.\n"), InfPath ); - wprintf( TEXT("INFO: All devices found already have a better driver than what is contained in the specified inf file.\n")); - } else if (ERROR_NO_SUCH_DEVINST == Result) { - wprintf( TEXT("INFO: the driver package %ws was successfully staged on the machine.\n"), InfPath ); - wprintf( TEXT("INFO: There aren't any live devnodes with the device ID contained in the INF.\n")); - } else if (ERROR_NO_DEVICE_ID == Result) { - wprintf( TEXT("INFO: the driver package %ws was successfully staged on the machine.\n"), InfPath ); - wprintf( TEXT("INFO: No device IDs found in INF '%ws' for current platform.\n"), InfPath); - } else { - wprintf( TEXT("ERROR: An error occurred while installing driver package %ws. Error code - 0x%X.\n"), InfPath, Result); - goto clean0; - } - - if (NeedReboot){ - wprintf( TEXT("INFO: Machine will have to be rebooted to complete install.\n")); - } - - } else if ((argv[1][0] == TEXT('/')) && - ((argv[1][1] == TEXT('u')) || - (argv[1][1] == TEXT('U')))) { - // - // Uninstall the driver package, passing in the INSTALLERINFO structure - // with information about the application performing the uninstall. By - // passing in this structure, the "MySoftware" application is removing - // its dependency on the driver. The driver will actually be - // uninstalled only if there are no other applications dependent on it. - // If there are other applications depending on the driver, then the call - // to DriverPackageUninstall will simply remove the dependency of the - // "MySoftware" application on the driver, and return - // ERROR_DEPENDENT_APPLICATIONS_EXIST. - // - wprintf( TEXT("INFO: Attempting to uninstall the driver package %ws.\n"), InfPath ); - - Result = DriverPackageUninstall(InfPath, - 0, // flags - &AppInfo, // dependency information - &NeedReboot); - if (ERROR_SUCCESS != Result) { - if (ERROR_DEPENDENT_APPLICATIONS_EXIST == Result) { - wprintf( TEXT("INFO: The driver package %ws was not uninstalled because there were some applications still depending on it.\n"), InfPath); - } else { - wprintf( TEXT("ERROR: An error occurred while uninstalling driver package %ws\n."), InfPath); - goto clean0; - } - } else { - wprintf( TEXT("SUCCESS: Uninstalled driver package %ws.\n"), InfPath ); - } - } else { - wprintf( TEXT("ERROR: An invalid command line option %ws was passed in!\n"), argv[1] ); - } - - clean0: - return 0; -} - - |
