|
|
1.1 root 1: /****************************************************************************
2: *
3: * registry.h
4: *
5: * Copyright (c) 1992 Microsoft Corporation. All Rights Reserved.
6: *
7: * This file contains public definitions for maintaining registry information
8: * for drivers managing kernel driver registry related data.
9: ****************************************************************************/
10:
11:
12: /****************************************************************************
13:
14: Our registry access data
15:
16: ****************************************************************************/
17:
18: typedef struct {
19: SC_HANDLE ServiceManagerHandle; // Handle to the service controller
20: // SC_HANDLE ServiceHandle; // Handle to our particular service
21: // HKEY NodeHandle; // Handle to device's key
22: LPTSTR DriverName; // Name of driver
23: } REG_ACCESS, *PREG_ACCESS;
24:
25: /****************************************************************************
26:
27: Test if configuration etc can be supported
28:
29: ****************************************************************************/
30:
31: #define DrvAccess(RegAccess) ((RegAccess)->ServiceManagerHandle != NULL)
32:
33:
34: /****************************************************************************
35:
36: Driver types
37:
38: ****************************************************************************/
39:
40: typedef enum {
41: SoundDriverTypeNormal = 1,
42: SoundDriverTypeSynth /* Go in the synth group */
43: } SOUND_KERNEL_MODE_DRIVER_TYPE;
44:
45: /****************************************************************************
46:
47: Function prototypes
48:
49: ****************************************************************************/
50:
51: /*
52: * Create a services node for our driver if there isn't one already,
53: * otherwise open the existing one. Returns ERROR_SUCCESS if OK.
54: */
55: BOOL
56: DrvCreateServicesNode(PTCHAR DriverName,
57: SOUND_KERNEL_MODE_DRIVER_TYPE DriverType,
58: PREG_ACCESS RegAccess,
59: BOOL Create);
60:
61: /*
62: * Close down our connection to the services manager
63: */
64:
65: VOID
66: DrvCloseServiceManager(
67: PREG_ACCESS RegAccess);
68: /*
69: * Delete the services node for our driver
70: */
71:
72: BOOL
73: DrvDeleteServicesNode(
74: PREG_ACCESS RegAccess);
75:
76: /*
77: * Create the 'Parameters' subkey
78: */
79: LONG
80: DrvCreateParamsKey(
81: PREG_ACCESS RegAccess);
82:
83: /*
84: * Set a device parameter
85: */
86: LONG
87: DrvSetDeviceParameter(
88: PREG_ACCESS RegAccess,
89: PTCHAR ValueName,
90: DWORD Value);
91:
92: /*
93: * Read current parameter setting
94: */
95:
96: LONG
97: DrvQueryDeviceParameter(
98: PREG_ACCESS RegAccess,
99: PTCHAR ValueName,
100: PDWORD pValue);
101:
102:
103: /*
104: * Try loading a kernel driver
105: */
106: BOOL
107: DrvLoadKernelDriver(
108: PREG_ACCESS RegAccess);
109: /*
110: * Try unloading a kernel driver
111: */
112:
113: BOOL
114: DrvUnloadKernelDriver(
115: PREG_ACCESS RegAccess);
116:
117: /*
118: * See if driver is loaded
119: */
120:
121: BOOL
122: DrvIsDriverLoaded(
123: PREG_ACCESS RegAccess);
124:
125: /*
126: * Do driver (installation+) configuration
127: */
128:
129: BOOL DrvConfigureDriver(
130: PREG_ACCESS RegAccess,
131: LPTSTR DriverName,
132: SOUND_KERNEL_MODE_DRIVER_TYPE
133: DriverType,
134: BOOL (* SetParms )(PVOID),
135: PVOID Context);
136:
137:
138: /*
139: * Remove a driver
140: */
141:
142: LRESULT DrvRemoveDriver(
143: PREG_ACCESS RegAccess);
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.