summaryrefslogtreecommitdiffstats
path: root/private/unimodem/inc/rovdi.h
blob: 66be0a0ed2860223f789dd4cc19bb5658c9ab313 (plain) (blame)
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__