1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
|
//
// Copyright (c) Microsoft Corporation 1993-1996
//
// rovdi.h
//
// History:
// 11-13-95 ScottH Separated from NT modem class installer
//
#ifndef __ROVDI_H__
#define __ROVDI_H__
#ifdef WINNT
#include <setupapi.h>
//------------------------------------------------------------------------
//------------------------------------------------------------------------
//
// Enumerate ports
//
DECLARE_HANDLE32(HPORTDATA);
typedef BOOL (WINAPI FAR * ENUMPORTPROC)(HPORTDATA hportdata, LPARAM lParam);
DWORD
APIENTRY
EnumeratePorts(
IN ENUMPORTPROC pfnDevice,
IN LPARAM lParam); OPTIONAL
typedef struct tagPORTDATA_A
{
DWORD cbSize;
DWORD nSubclass;
CHAR szPort[MAX_BUF];
CHAR szFriendly[MAX_BUF];
} PORTDATA_A, FAR * LPPORTDATA_A;
typedef struct tagPORTDATA_W
{
DWORD cbSize;
DWORD nSubclass;
WCHAR szPort[MAX_BUF];
WCHAR szFriendly[MAX_BUF];
} PORTDATA_W, FAR * LPPORTDATA_W;
#ifdef UNICODE
#define PORTDATA PORTDATA_W
#define LPPORTDATA LPPORTDATA_W
#else
#define PORTDATA PORTDATA_A
#define LPPORTDATA LPPORTDATA_A
#endif
// Port subclass values
#define PORT_SUBCLASS_PARALLEL 0
#define PORT_SUBCLASS_SERIAL 1
BOOL
APIENTRY
PortData_GetPropertiesW(
IN HPORTDATA hportdata,
OUT LPPORTDATA_W pdataBuf);
BOOL
APIENTRY
PortData_GetPropertiesA(
IN HPORTDATA hportdata,
OUT LPPORTDATA_A pdataBuf);
#ifdef UNICODE
#define PortData_GetProperties PortData_GetPropertiesW
#else
#define PortData_GetProperties PortData_GetPropertiesA
#endif
//
// These set of routines map friendly names of ports to
// (non-friendly) port names, and vice-versa.
//
DECLARE_HANDLE32(HPORTMAP);
BOOL
APIENTRY
PortMap_Create(
OUT HPORTMAP FAR * phportmap);
DWORD
APIENTRY
PortMap_GetCount(
IN HPORTMAP hportmap);
BOOL
APIENTRY
PortMap_GetFriendlyW(
IN HPORTMAP hportmap,
IN LPCWSTR pwszPortName,
OUT LPWSTR pwszBuf,
IN DWORD cchBuf);
BOOL
APIENTRY
PortMap_GetFriendlyA(
IN HPORTMAP hportmap,
IN LPCSTR pszPortName,
OUT LPSTR pszBuf,
IN DWORD cchBuf);
#ifdef UNICODE
#define PortMap_GetFriendly PortMap_GetFriendlyW
#else
#define PortMap_GetFriendly PortMap_GetFriendlyA
#endif
BOOL
APIENTRY
PortMap_GetPortNameW(
IN HPORTMAP hportmap,
IN LPCWSTR pwszFriendly,
OUT LPWSTR pwszBuf,
IN DWORD cchBuf);
BOOL
APIENTRY
PortMap_GetPortNameA(
IN HPORTMAP hportmap,
IN LPCSTR pszFriendly,
OUT LPSTR pszBuf,
IN DWORD cchBuf);
#ifdef UNICODE
#define PortMap_GetPortName PortMap_GetPortNameW
#else
#define PortMap_GetPortName PortMap_GetPortNameA
#endif
BOOL
APIENTRY
PortMap_Free(
IN HPORTMAP hportmap);
//-----------------------------------------------------------------------------------
// Wrappers to insulate us a little bit if we need it. We need it.
//-----------------------------------------------------------------------------------
#define CplDiCreateDeviceInfoList SetupDiCreateDeviceInfoList
#define CplDiGetDeviceInfoListClass SetupDiGetDeviceInfoListClass
#define CplDiCreateDeviceInfo SetupDiCreateDeviceInfo
#define CplDiOpenDeviceInfo SetupDiOpenDeviceInfo
#define CplDiGetDeviceInstanceId SetupDiGetDeviceInstanceId
#define CplDiDeleteDeviceInfo SetupDiDeleteDeviceInfo
#define CplDiEnumDeviceInfo SetupDiEnumDeviceInfo
#define CplDiDestroyDeviceInfoList SetupDiDestroyDeviceInfoList
#define CplDiRegisterDeviceInfo SetupDiRegisterDeviceInfo
#define CplDiBuildDriverInfoList SetupDiBuildDriverInfoList
#define CplDiEnumDriverInfo SetupDiEnumDriverInfo
#define CplDiGetSelectedDriver SetupDiGetSelectedDriver
#define CplDiSetSelectedDriver SetupDiSetSelectedDriver
#define CplDiGetDriverInfoDetail SetupDiGetDriverInfoDetail
#define CplDiDestroyDriverInfoList SetupDiDestroyDriverInfoList
#define CplDiGetClassDevs SetupDiGetClassDevs
#define CplDiGetClassDescription SetupDiGetClassDescription
#define CplDiOpenClassRegKey SetupDiOpenClassRegKey
#define CplDiCreateDevRegKey SetupDiCreateDevRegKey
#define CplDiOpenDevRegKey SetupDiOpenDevRegKey
#define CplDiGetHwProfileList SetupDiGetHwProfileList
#define CplDiGetDeviceRegistryProperty SetupDiGetDeviceRegistryProperty
#define CplDiSetDeviceRegistryProperty SetupDiSetDeviceRegistryProperty
#define CplDiGetClassInstallParams SetupDiGetClassInstallParams
#define CplDiSetClassInstallParams SetupDiSetClassInstallParams
#define CplDiGetDeviceInstallParams SetupDiGetDeviceInstallParams
#define CplDiSetDeviceInstallParams SetupDiSetDeviceInstallParams
#define CplDiGetDriverInstallParams SetupDiGetDriverInstallParams
#define CplDiSetDriverInstallParams SetupDiSetDriverInstallParams
#define CplDiClassNameFromGuid SetupDiClassNameFromGuid
#define CplDiClassGuidsFromName SetupDiClassGuidsFromName
#define CplDiGetHwProfileFriendlyName SetupDiGetHwProfileFriendlyName
#define CplDiGetWizardPage SetupDiGetWizardPage
#define CplDiGetSelectedDevice SetupDiGetSelectedDevice
#define CplDiSetSelectedDevice SetupDiSetSelectedDevice
#define CplDiInstallDevice SetupDiInstallDevice
#define CplDiCallClassInstaller SetupDiCallClassInstaller
#define CplDiRemoveDevice SetupDiRemoveDevice
#define CplDiGetActualSectionToInstall SetupDiGetActualSectionToInstall
// Private modem properties structure
typedef struct tagMODEM_PRIV_PROP
{
DWORD cbSize;
DWORD dwMask;
TCHAR szFriendlyName[MAX_BUF_REG];
DWORD nDeviceType;
TCHAR szPort[MAX_BUF_REG];
} MODEM_PRIV_PROP, FAR * PMODEM_PRIV_PROP;
// Mask bitfield for MODEM_PRIV_PROP
#define MPPM_FRIENDLY_NAME 0x00000001
#define MPPM_DEVICE_TYPE 0x00000002
#define MPPM_PORT 0x00000004
BOOL
PUBLIC
CplDiGetPrivateProperties(
IN HDEVINFO hdi,
IN PSP_DEVINFO_DATA pdevData,
OUT PMODEM_PRIV_PROP pmpp);
// These ordinal values are bus types for CplDiGetBusType
#define BUS_TYPE_ROOT 1
#define BUS_TYPE_PCMCIA 2
#define BUS_TYPE_SERENUM 3
#define BUS_TYPE_LPTENUM 4
#define BUS_TYPE_OTHER 5
BOOL
PUBLIC
CplDiGetBusType(
IN HDEVINFO hdi,
IN PSP_DEVINFO_DATA pdevData, OPTIONAL
OUT LPDWORD pdwBusType);
// Functions to support common device Responses key:
// Common key flags for OpenCommonResponseskey() and OpenCommonDriverKey().
typedef enum
{
CKFLAG_OPEN = 0x0001,
CKFLAG_CREATE = 0x0002
} CKFLAGS;
BOOL
PUBLIC
OpenCommonDriverKey(
IN HKEY hkeyDrv, OPTIONAL
IN PSP_DRVINFO_DATA pdrvData, OPTIONAL
IN REGSAM samAccess,
OUT PHKEY phkeyComDrv);
BOOL
PUBLIC
OpenCommonResponsesKey(
IN HKEY hkeyDrv,
IN CKFLAGS ckFlags,
IN REGSAM samAccess,
OUT PHKEY phkeyResp,
OUT LPDWORD lpdwExisted);
BOOL
PUBLIC
OpenResponsesKey(
IN HKEY hkeyDrv,
OUT PHKEY phkeyResp);
BOOL
PUBLIC
FindCommonDriverKeyName(
IN HKEY hkeyDrv,
IN DWORD cbKeyName,
OUT LPTSTR pszKeyName);
BOOL
PUBLIC
GetCommonDriverKeyName(
IN HKEY hkeyDrv, OPTIONAL
IN PSP_DRVINFO_DATA pdrvData, OPTIONAL
IN DWORD cbKeyName,
OUT LPTSTR pszKeyName);
BOOL
PUBLIC
DeleteCommonDriverKey(
IN HKEY hkeyDrv);
BOOL
PUBLIC
DeleteCommonDriverKeyByName(
IN LPTSTR pszKeyName);
#endif // WINNT
#endif __ROVDI_H__
|