|
|
1.1 root 1: /*++ BUILD Version: 0001 // Increment this if a change has global effects
2:
3: Copyright (c) 1991 Microsoft Corporation
4:
5: Module Name:
6:
7: Winreg.h
8:
9: Abstract:
10:
11: This module contains the function prototypes and constant, type and
12: structure definitions for the Windows 32-Bit Registry API.
13:
14: Author:
15:
16: David J. Gilman (davegi) 07-Nov-1991
17:
18: --*/
19:
20: #ifndef _WINREG_
21: #define _WINREG_
22:
23: //
24: // Requested Key access mask type.
25: //
26:
27: typedef ACCESS_MASK REGSAM;
28:
29: //
30: // Type definitions.
31: //
32:
33: typedef HANDLE HKEY, *PHKEY;
34:
35: //
36: // Reserved Key Handles.
37: //
38:
39: #define HKEY_CLASSES_ROOT (( HKEY ) 0x80000000 )
40: #define HKEY_CURRENT_USER (( HKEY ) 0x80000001 )
41: #define HKEY_LOCAL_MACHINE (( HKEY ) 0x80000002 )
42: #define HKEY_USERS (( HKEY ) 0x80000003 )
43: #define HKEY_PERFORMANCE_DATA (( HKEY ) 0x80000004 )
44:
45: //
46: // Default values for parameters that do not exist in the Win 3.1
47: // compatible APIs.
48: //
49:
50: #define WIN31_CLASS NULL
51:
52: //
53: // API Prototypes.
54: //
55:
56:
57: LONG
58: APIENTRY
59: RegCloseKey (
60: HKEY hKey
61: );
62:
63: LONG
64: APIENTRY
65: RegConnectRegistryA (
66: LPSTR lpMachineName,
67: HKEY hKey,
68: PHKEY phkResult
69: );
70: LONG
71: APIENTRY
72: RegConnectRegistryW (
73: LPWSTR lpMachineName,
74: HKEY hKey,
75: PHKEY phkResult
76: );
77: #ifdef UNICODE
78: #define RegConnectRegistry RegConnectRegistryW
79: #else
80: #define RegConnectRegistry RegConnectRegistryA
81: #endif // !UNICODE
82:
83: LONG
84: APIENTRY
85: RegCreateKeyA (
86: HKEY hKey,
87: LPSTR lpSubKey,
88: PHKEY phkResult
89: );
90: LONG
91: APIENTRY
92: RegCreateKeyW (
93: HKEY hKey,
94: LPWSTR lpSubKey,
95: PHKEY phkResult
96: );
97: #ifdef UNICODE
98: #define RegCreateKey RegCreateKeyW
99: #else
100: #define RegCreateKey RegCreateKeyA
101: #endif // !UNICODE
102:
103: LONG
104: APIENTRY
105: RegCreateKeyExA (
106: HKEY hKey,
107: LPSTR lpSubKey,
108: DWORD Reserved,
109: LPSTR lpClass,
110: DWORD dwOptions,
111: REGSAM samDesired,
112: LPSECURITY_ATTRIBUTES lpSecurityAttributes,
113: PHKEY phkResult,
114: LPDWORD lpdwDisposition
115: );
116: LONG
117: APIENTRY
118: RegCreateKeyExW (
119: HKEY hKey,
120: LPWSTR lpSubKey,
121: DWORD Reserved,
122: LPWSTR lpClass,
123: DWORD dwOptions,
124: REGSAM samDesired,
125: LPSECURITY_ATTRIBUTES lpSecurityAttributes,
126: PHKEY phkResult,
127: LPDWORD lpdwDisposition
128: );
129: #ifdef UNICODE
130: #define RegCreateKeyEx RegCreateKeyExW
131: #else
132: #define RegCreateKeyEx RegCreateKeyExA
133: #endif // !UNICODE
134:
135: LONG
136: APIENTRY
137: RegDeleteKeyA (
138: HKEY hKey,
139: LPSTR lpSubKey
140: );
141: LONG
142: APIENTRY
143: RegDeleteKeyW (
144: HKEY hKey,
145: LPWSTR lpSubKey
146: );
147: #ifdef UNICODE
148: #define RegDeleteKey RegDeleteKeyW
149: #else
150: #define RegDeleteKey RegDeleteKeyA
151: #endif // !UNICODE
152:
153: LONG
154: APIENTRY
155: RegDeleteValueA (
156: HKEY hKey,
157: LPSTR lpValueName
158: );
159: LONG
160: APIENTRY
161: RegDeleteValueW (
162: HKEY hKey,
163: LPWSTR lpValueName
164: );
165: #ifdef UNICODE
166: #define RegDeleteValue RegDeleteValueW
167: #else
168: #define RegDeleteValue RegDeleteValueA
169: #endif // !UNICODE
170:
171: LONG
172: APIENTRY
173: RegEnumKeyA (
174: HKEY hKey,
175: DWORD dwIndex,
176: LPSTR lpName,
177: DWORD cbName
178: );
179: LONG
180: APIENTRY
181: RegEnumKeyW (
182: HKEY hKey,
183: DWORD dwIndex,
184: LPWSTR lpName,
185: DWORD cbName
186: );
187: #ifdef UNICODE
188: #define RegEnumKey RegEnumKeyW
189: #else
190: #define RegEnumKey RegEnumKeyA
191: #endif // !UNICODE
192:
193: LONG
194: APIENTRY
195: RegEnumKeyExA (
196: HKEY hKey,
197: DWORD dwIndex,
198: LPSTR lpName,
199: LPDWORD lpcbName,
200: LPDWORD lpReserved,
201: LPSTR lpClass,
202: LPDWORD lpcbClass,
203: PFILETIME lpftLastWriteTime
204: );
205: LONG
206: APIENTRY
207: RegEnumKeyExW (
208: HKEY hKey,
209: DWORD dwIndex,
210: LPWSTR lpName,
211: LPDWORD lpcbName,
212: LPDWORD lpReserved,
213: LPWSTR lpClass,
214: LPDWORD lpcbClass,
215: PFILETIME lpftLastWriteTime
216: );
217: #ifdef UNICODE
218: #define RegEnumKeyEx RegEnumKeyExW
219: #else
220: #define RegEnumKeyEx RegEnumKeyExA
221: #endif // !UNICODE
222:
223: LONG
224: APIENTRY
225: RegEnumValueA (
226: HKEY hKey,
227: DWORD dwIndex,
228: LPSTR lpValueName,
229: LPDWORD lpcbValueName,
230: LPDWORD lpReserved,
231: LPDWORD lpType,
232: LPBYTE lpData,
233: LPDWORD lpcbData
234: );
235: LONG
236: APIENTRY
237: RegEnumValueW (
238: HKEY hKey,
239: DWORD dwIndex,
240: LPWSTR lpValueName,
241: LPDWORD lpcbValueName,
242: LPDWORD lpReserved,
243: LPDWORD lpType,
244: LPBYTE lpData,
245: LPDWORD lpcbData
246: );
247: #ifdef UNICODE
248: #define RegEnumValue RegEnumValueW
249: #else
250: #define RegEnumValue RegEnumValueA
251: #endif // !UNICODE
252:
253: LONG
254: APIENTRY
255: RegFlushKey (
256: HKEY hKey
257: );
258:
259: LONG
260: APIENTRY
261: RegGetKeySecurity (
262: HKEY hKey,
263: SECURITY_INFORMATION SecurityInformation,
264: PSECURITY_DESCRIPTOR pSecurityDescriptor,
265: LPDWORD lpcbSecurityDescriptor
266: );
267:
268: LONG
269: APIENTRY
270: RegLoadKeyA (
271: HKEY hKey,
272: LPSTR lpSubKey,
273: LPSTR lpFile
274: );
275: LONG
276: APIENTRY
277: RegLoadKeyW (
278: HKEY hKey,
279: LPWSTR lpSubKey,
280: LPWSTR lpFile
281: );
282: #ifdef UNICODE
283: #define RegLoadKey RegLoadKeyW
284: #else
285: #define RegLoadKey RegLoadKeyA
286: #endif // !UNICODE
287:
288: LONG
289: APIENTRY
290: RegNotifyChangeKeyValue (
291: HKEY hKey,
292: BOOL bWatchSubtree,
293: DWORD dwNotifyFilter,
294: HANDLE hEvent,
295: BOOL fAsynchronus
296: );
297:
298: LONG
299: APIENTRY
300: RegOpenKeyA (
301: HKEY hKey,
302: LPSTR lpSubKey,
303: PHKEY phkResult
304: );
305: LONG
306: APIENTRY
307: RegOpenKeyW (
308: HKEY hKey,
309: LPWSTR lpSubKey,
310: PHKEY phkResult
311: );
312: #ifdef UNICODE
313: #define RegOpenKey RegOpenKeyW
314: #else
315: #define RegOpenKey RegOpenKeyA
316: #endif // !UNICODE
317:
318: LONG
319: APIENTRY
320: RegOpenKeyExA (
321: HKEY hKey,
322: LPSTR lpSubKey,
323: DWORD ulOptions,
324: REGSAM samDesired,
325: PHKEY phkResult
326: );
327: LONG
328: APIENTRY
329: RegOpenKeyExW (
330: HKEY hKey,
331: LPWSTR lpSubKey,
332: DWORD ulOptions,
333: REGSAM samDesired,
334: PHKEY phkResult
335: );
336: #ifdef UNICODE
337: #define RegOpenKeyEx RegOpenKeyExW
338: #else
339: #define RegOpenKeyEx RegOpenKeyExA
340: #endif // !UNICODE
341:
342: LONG
343: APIENTRY
344: RegQueryInfoKeyA (
345: HKEY hKey,
346: LPSTR lpClass,
347: LPDWORD lpcbClass,
348: LPDWORD lpReserved,
349: LPDWORD lpcSubKeys,
350: LPDWORD lpcbMaxSubKeyLen,
351: LPDWORD lpcbMaxClassLen,
352: LPDWORD lpcValues,
353: LPDWORD lpcbMaxValueNameLen,
354: LPDWORD lpcbMaxValueLen,
355: LPDWORD lpcbSecurityDescriptor,
356: PFILETIME lpftLastWriteTime
357: );
358: LONG
359: APIENTRY
360: RegQueryInfoKeyW (
361: HKEY hKey,
362: LPWSTR lpClass,
363: LPDWORD lpcbClass,
364: LPDWORD lpReserved,
365: LPDWORD lpcSubKeys,
366: LPDWORD lpcbMaxSubKeyLen,
367: LPDWORD lpcbMaxClassLen,
368: LPDWORD lpcValues,
369: LPDWORD lpcbMaxValueNameLen,
370: LPDWORD lpcbMaxValueLen,
371: LPDWORD lpcbSecurityDescriptor,
372: PFILETIME lpftLastWriteTime
373: );
374: #ifdef UNICODE
375: #define RegQueryInfoKey RegQueryInfoKeyW
376: #else
377: #define RegQueryInfoKey RegQueryInfoKeyA
378: #endif // !UNICODE
379:
380: LONG
381: APIENTRY
382: RegQueryValueA (
383: HKEY hKey,
384: LPSTR lpSubKey,
385: LPSTR lpValue,
386: LPDWORD lpcbValue
387: );
388: LONG
389: APIENTRY
390: RegQueryValueW (
391: HKEY hKey,
392: LPWSTR lpSubKey,
393: LPSTR lpValue,
394: LPDWORD lpcbValue
395: );
396: #ifdef UNICODE
397: #define RegQueryValue RegQueryValueW
398: #else
399: #define RegQueryValue RegQueryValueA
400: #endif // !UNICODE
401:
402: LONG
403: APIENTRY
404: RegQueryValueExA (
405: HKEY hKey,
406: LPSTR lpValueName,
407: LPDWORD lpReserved,
408: LPDWORD lpType,
409: LPBYTE lpData,
410: LPDWORD lpcbData
411: );
412: LONG
413: APIENTRY
414: RegQueryValueExW (
415: HKEY hKey,
416: LPWSTR lpValueName,
417: LPDWORD lpReserved,
418: LPDWORD lpType,
419: LPBYTE lpData,
420: LPDWORD lpcbData
421: );
422: #ifdef UNICODE
423: #define RegQueryValueEx RegQueryValueExW
424: #else
425: #define RegQueryValueEx RegQueryValueExA
426: #endif // !UNICODE
427:
428: LONG
429: APIENTRY
430: RegReplaceKeyA (
431: HKEY hKey,
432: LPSTR lpSubKey,
433: LPSTR lpNewFile,
434: LPSTR lpOldFile
435: );
436: LONG
437: APIENTRY
438: RegReplaceKeyW (
439: HKEY hKey,
440: LPWSTR lpSubKey,
441: LPWSTR lpNewFile,
442: LPWSTR lpOldFile
443: );
444: #ifdef UNICODE
445: #define RegReplaceKey RegReplaceKeyW
446: #else
447: #define RegReplaceKey RegReplaceKeyA
448: #endif // !UNICODE
449:
450: LONG
451: APIENTRY
452: RegRestoreKeyA (
453: HKEY hKey,
454: LPSTR lpFile,
455: DWORD dwFlags
456: );
457: LONG
458: APIENTRY
459: RegRestoreKeyW (
460: HKEY hKey,
461: LPWSTR lpFile,
462: DWORD dwFlags
463: );
464: #ifdef UNICODE
465: #define RegRestoreKey RegRestoreKeyW
466: #else
467: #define RegRestoreKey RegRestoreKeyA
468: #endif // !UNICODE
469:
470: LONG
471: APIENTRY
472: RegSaveKeyA (
473: HKEY hKey,
474: LPSTR lpFile,
475: LPSECURITY_ATTRIBUTES lpSecurityAttributes
476: );
477: LONG
478: APIENTRY
479: RegSaveKeyW (
480: HKEY hKey,
481: LPWSTR lpFile,
482: LPSECURITY_ATTRIBUTES lpSecurityAttributes
483: );
484: #ifdef UNICODE
485: #define RegSaveKey RegSaveKeyW
486: #else
487: #define RegSaveKey RegSaveKeyA
488: #endif // !UNICODE
489:
490: LONG
491: APIENTRY
492: RegSetKeySecurity (
493: HKEY hKey,
494: SECURITY_INFORMATION SecurityInformation,
495: PSECURITY_DESCRIPTOR pSecurityDescriptor
496: );
497:
498: LONG
499: APIENTRY
500: RegSetValueA (
501: HKEY hKey,
502: LPSTR lpSubKey,
503: DWORD dwType,
504: LPSTR lpData,
505: DWORD cbData
506: );
507: LONG
508: APIENTRY
509: RegSetValueW (
510: HKEY hKey,
511: LPWSTR lpSubKey,
512: DWORD dwType,
513: LPSTR lpData,
514: DWORD cbData
515: );
516: #ifdef UNICODE
517: #define RegSetValue RegSetValueW
518: #else
519: #define RegSetValue RegSetValueA
520: #endif // !UNICODE
521:
522:
523: LONG
524: APIENTRY
525: RegSetValueExA (
526: HKEY hKey,
527: LPSTR lpValueName,
528: DWORD Reserved,
529: DWORD dwType,
530: LPBYTE lpData,
531: DWORD cbData
532: );
533: LONG
534: APIENTRY
535: RegSetValueExW (
536: HKEY hKey,
537: LPWSTR lpValueName,
538: DWORD Reserved,
539: DWORD dwType,
540: LPBYTE lpData,
541: DWORD cbData
542: );
543: #ifdef UNICODE
544: #define RegSetValueEx RegSetValueExW
545: #else
546: #define RegSetValueEx RegSetValueExA
547: #endif // !UNICODE
548:
549: LONG
550: APIENTRY
551: RegUnLoadKeyA (
552: HKEY hKey,
553: LPSTR lpSubKey
554: );
555: LONG
556: APIENTRY
557: RegUnLoadKeyW (
558: HKEY hKey,
559: LPWSTR lpSubKey
560: );
561: #ifdef UNICODE
562: #define RegUnLoadKey RegUnLoadKeyW
563: #else
564: #define RegUnLoadKey RegUnLoadKeyA
565: #endif // !UNICODE
566:
567: //
568: // Remoteable System Shutdown APIs
569: //
570:
571: BOOL
572: APIENTRY
573: InitiateSystemShutdownA(
574: LPSTR lpMachineName,
575: LPSTR lpMessage,
576: DWORD dwTimeout,
577: BOOL bForceAppsClosed,
578: BOOL bRebootAfterShutdown
579: );
580: BOOL
581: APIENTRY
582: InitiateSystemShutdownW(
583: LPWSTR lpMachineName,
584: LPWSTR lpMessage,
585: DWORD dwTimeout,
586: BOOL bForceAppsClosed,
587: BOOL bRebootAfterShutdown
588: );
589: #ifdef UNICODE
590: #define InitiateSystemShutdown InitiateSystemShutdownW
591: #else
592: #define InitiateSystemShutdown InitiateSystemShutdownA
593: #endif // !UNICODE
594:
595:
596: BOOL
597: APIENTRY
598: AbortSystemShutdownA(
599: LPSTR lpMachineName
600: );
601: BOOL
602: APIENTRY
603: AbortSystemShutdownW(
604: LPWSTR lpMachineName
605: );
606: #ifdef UNICODE
607: #define AbortSystemShutdown AbortSystemShutdownW
608: #else
609: #define AbortSystemShutdown AbortSystemShutdownA
610: #endif // !UNICODE
611:
612:
613: #endif // _WINREG_
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.