1 /*
2  * newdev.h
3  *
4  * Driver installation DLL interface
5  *
6  * This file is part of the w32api package.
7  *
8  * Contributors:
9  *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
10  *
11  * THIS SOFTWARE IS NOT COPYRIGHTED
12  *
13  * This source code is offered for use in the public domain. You may
14  * use, modify or distribute it freely.
15  *
16  * This code is distributed in the hope that it will be useful but
17  * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
18  * DISCLAIMED. This includes but is not limited to warranties of
19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
20  *
21  */
22 
23 #pragma once
24 
25 #include <setupapi.h>
26 
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30 
31 #include <pshpack1.h>
32 
33 /* UpdateDriverForPlugAndPlayDevices.InstallFlags constants */
34 #define INSTALLFLAG_FORCE                 0x00000001
35 #define INSTALLFLAG_READONLY              0x00000002
36 #define INSTALLFLAG_NONINTERACTIVE        0x00000004
37 #define INSTALLFLAG_BITS                  0x00000007
38 
39 #if (WINVER >= _WIN32_WINNT_WIN2K)
40 
41 WINBOOL
42 WINAPI
43 UpdateDriverForPlugAndPlayDevicesA(
44   HWND hwndParent,
45   LPCSTR HardwareId,
46   LPCSTR FullInfPath,
47   DWORD InstallFlags,
48   PBOOL bRebootRequired OPTIONAL);
49 
50 WINBOOL
51 WINAPI
52 UpdateDriverForPlugAndPlayDevicesW(
53   HWND hwndParent,
54   LPCWSTR HardwareId,
55   LPCWSTR FullInfPath,
56   DWORD InstallFlags,
57   PBOOL bRebootRequired OPTIONAL);
58 
59 #ifdef UNICODE
60 #define UpdateDriverForPlugAndPlayDevices UpdateDriverForPlugAndPlayDevicesW
61 #else
62 #define UpdateDriverForPlugAndPlayDevices UpdateDriverForPlugAndPlayDevicesA
63 #endif /* UNICODE */
64 
65 #endif /* (WINVER >= _WIN32_WINNT_WIN2K) */
66 
67 #if (WINVER >= _WIN32_WINNT_VISTA)
68 
69 #define DIIDFLAG_SHOWSEARCHUI             0x00000001
70 #define DIIDFLAG_NOFINISHINSTALLUI        0x00000002
71 #define DIIDFLAG_INSTALLNULLDRIVER        0x00000004
72 #define DIIDFLAG_BITS                     0x00000007
73 
74 #define DIIRFLAG_INF_ALREADY_COPIED       0x00000001
75 #define DIIRFLAG_FORCE_INF                0x00000002
76 #define DIIRFLAG_HW_USING_THE_INF         0x00000004
77 #define DIIRFLAG_HOTPATCH                 0x00000008
78 #define DIIRFLAG_NOBACKUP                 0x00000010
79 #define DIIRFLAG_BITS ( DIIRFLAG_FORCE_INF | DIIRFLAG_HOTPATCH)
80 #define DIIRFLAG_SYSTEM_BITS ( DIIRFLAG_INF_ALREADY_COPIED |\
81                                DIIRFLAG_FORCE_INF |\
82                                DIIRFLAG_HW_USING_THE_INF |\
83                                DIIRFLAG_HOTPATCH |\
84                                DIIRFLAG_NOBACKUP )
85 
86 #define ROLLBACK_FLAG_NO_UI               0x00000001
87 #define ROLLBACK_BITS                     0x00000001
88 
89 WINBOOL
90 WINAPI
91 DiInstallDevice(
92   HWND hwndParent OPTIONAL,
93   HDEVINFO DeviceInfoSet,
94   PSP_DEVINFO_DATA DeviceInfoData,
95   PSP_DRVINFO_DATA DriverInfoData OPTIONAL,
96   DWORD Flags,
97   PBOOL NeedReboot OPTIONAL);
98 
99 WINBOOL
100 WINAPI
101 DiShowUpdateDevice(
102   HWND hwndParent OPTIONAL,
103   HDEVINFO DeviceInfoSet,
104   PSP_DEVINFO_DATA DeviceInfoData,
105   DWORD Flags,
106   PBOOL NeedReboot OPTIONAL);
107 
108 WINBOOL
109 WINAPI
110 DiRollbackDriver(
111   HDEVINFO DeviceInfoSet,
112   PSP_DEVINFO_DATA DeviceInfoData,
113   HWND hwndParent OPTIONAL,
114   DWORD Flags,
115   PBOOL NeedReboot OPTIONAL);
116 
117 WINBOOL
118 WINAPI
119 DiInstallDriverW(
120   HWND hwndParent OPTIONAL,
121   LPCWSTR InfPath,
122   DWORD Flags,
123   PBOOL NeedReboot OPTIONAL);
124 
125 WINBOOL
126 WINAPI
127 DiInstallDriverA(
128   HWND hwndParent OPTIONAL,
129   LPCSTR InfPath,
130   DWORD Flags,
131   PBOOL NeedReboot OPTIONAL);
132 
133 
134 #ifdef UNICODE
135 #define DiInstallDriver DiInstallDriverW
136 #else
137 #define DiInstallDriver DiInstallDriverA
138 #endif
139 
140 #endif /* (WINVER >= _WIN32_WINNT_VISTA) */
141 
142 #if (WINVER >= _WIN32_WINNT_WIN7)
143 WINBOOL
144 WINAPI
145 DiUninstallDevice(
146   HWND hwndParent,
147   HDEVINFO DeviceInfoSet,
148   PSP_DEVINFO_DATA DeviceInfoData,
149   DWORD Flags,
150   PBOOL NeedReboot OPTIONAL);
151 #endif /* (WINVER >= _WIN32_WINNT_WIN7) */
152 
153 #include <poppack.h>
154 
155 #ifdef __cplusplus
156 }
157 #endif
158