xpmgr/BuildTools/Include/newdev.h

180 lines
4.6 KiB
C

/*++
Copyright (c) Microsoft Corporation. All rights reserved.
Module Name:
newdev.h
Abstract:
Public header file for Windows NT Driver Installation DLL.
--*/
#ifndef _INC_NEWDEV
#define _INC_NEWDEV
#include <pshpack1.h> // Assume byte packing throughout
#include <setupapi.h> // for HDEVINFO, PSP_DEVINFO_DATA, and PSP_DRVINFO_DATA
#ifdef __cplusplus
extern "C" {
#endif
//
// Flags for UpdateDriverForPlugAndPlayDevices
//
#define INSTALLFLAG_FORCE 0x00000001 // Force the installation of the specified driver
#define INSTALLFLAG_READONLY 0x00000002 // Do a read-only install (no file copy)
#define INSTALLFLAG_NONINTERACTIVE 0x00000004 // No UI shown at all. API will fail if any UI must be shown.
#define INSTALLFLAG_BITS 0x00000007
#if (WINVER >= _WIN32_WINNT_WIN2K)
BOOL
WINAPI
UpdateDriverForPlugAndPlayDevicesA(
__in_opt HWND hwndParent,
__in LPCSTR HardwareId,
__in LPCSTR FullInfPath,
__in DWORD InstallFlags,
__out_opt PBOOL bRebootRequired
);
BOOL
WINAPI
UpdateDriverForPlugAndPlayDevicesW(
__in_opt HWND hwndParent,
__in LPCWSTR HardwareId,
__in LPCWSTR FullInfPath,
__in DWORD InstallFlags,
__out_opt PBOOL bRebootRequired
);
#ifdef UNICODE
#define UpdateDriverForPlugAndPlayDevices UpdateDriverForPlugAndPlayDevicesW
#else
#define UpdateDriverForPlugAndPlayDevices UpdateDriverForPlugAndPlayDevicesA
#endif
#endif // (WINVER >= _WIN32_WINNT_WIN2K)
#if (WINVER >= _WIN32_WINNT_LONGHORN)
//
// Flags for DiInstallDevice
//
#define DIIDFLAG_SHOWSEARCHUI 0x00000001 // Show search UI if no drivers can be found.
#define DIIDFLAG_NOFINISHINSTALLUI 0x00000002 // Do NOT show the finish install UI.
#define DIIDFLAG_INSTALLNULLDRIVER 0x00000004 // Install the NULL driver on this device.
#define DIIDFLAG_BITS 0x00000007
BOOL
WINAPI
DiInstallDevice(
__in_opt HWND hwndParent,
__in HDEVINFO DeviceInfoSet,
__in PSP_DEVINFO_DATA DeviceInfoData,
__in_opt PSP_DRVINFO_DATA DriverInfoData,
__in DWORD Flags,
__out_opt PBOOL NeedReboot
);
#endif // (WINVER >= _WIN32_WINNT_LONGHORN)
#if (WINVER >= _WIN32_WINNT_LONGHORN)
//
// Flags for DiInstallDriver
//
#define DIIRFLAG_INF_ALREADY_COPIED 0x00000001 // Don't copy inf, it has been published
#define DIIRFLAG_FORCE_INF 0x00000002 // use the inf as if users picked it.
#define DIIRFLAG_HW_USING_THE_INF 0x00000004 // limit installs on hw using the inf
#define DIIRFLAG_HOTPATCH 0x00000008 // Perform a hotpatch service pack install
#define DIIRFLAG_NOBACKUP 0x00000010 // install w/o backup and no rollback
#define DIIRFLAG_BITS ( DIIRFLAG_FORCE_INF | DIIRFLAG_HOTPATCH)
#define DIIRFLAG_SYSTEM_BITS ( DIIRFLAG_INF_ALREADY_COPIED |\
DIIRFLAG_FORCE_INF |\
DIIRFLAG_HW_USING_THE_INF |\
DIIRFLAG_HOTPATCH |\
DIIRFLAG_NOBACKUP )
BOOL
WINAPI
DiInstallDriverW(
__in_opt HWND hwndParent,
__in LPCWSTR InfPath,
__in DWORD Flags,
__out_opt PBOOL NeedReboot
);
BOOL
WINAPI
DiInstallDriverA(
__in_opt HWND hwndParent,
__in LPCSTR InfPath,
__in DWORD Flags,
__out_opt PBOOL NeedReboot
);
#ifdef UNICODE
#define DiInstallDriver DiInstallDriverW
#else
#define DiInstallDriver DiInstallDriverA
#endif
#endif // (WINVER >= _WIN32_WINNT_LONGHORN)
#if (WINVER >= _WIN32_WINNT_WIN7)
BOOL
WINAPI
DiUninstallDevice(
__in HWND hwndParent,
__in HDEVINFO DeviceInfoSet,
__in PSP_DEVINFO_DATA DeviceInfoData,
__in DWORD Flags,
__out_opt PBOOL NeedReboot
);
#endif // (WINVER >= _WIN32_WINNT_WIN7)
#if (WINVER >= _WIN32_WINNT_LONGHORN)
BOOL
WINAPI
DiShowUpdateDevice(
__in_opt HWND hwndParent,
__in HDEVINFO DeviceInfoSet,
__in PSP_DEVINFO_DATA DeviceInfoData,
__in DWORD Flags,
__out_opt PBOOL NeedReboot
);
//
// DiRollbackDriver Flag values
//
#define ROLLBACK_FLAG_NO_UI 0x00000001 // don't show any UI (this could cause failures if UI must be displayed)
#define ROLLBACK_BITS 0x00000001
BOOL
WINAPI
DiRollbackDriver(
__in HDEVINFO DeviceInfoSet,
__in PSP_DEVINFO_DATA DeviceInfoData,
__in_opt HWND hwndParent,
__in DWORD Flags,
__out_opt PBOOL NeedReboot
);
#endif // (WINVER >= _WIN32_WINNT_LONGHORN)
#ifdef __cplusplus
}
#endif
#include <poppack.h>
#endif // _INC_NEWDEV