[PRINTING]
[reactos.git] / reactos / sdk / include / ndk / cmfuncs.h
1 /*++ NDK Version: 0098
2
3 Copyright (c) Alex Ionescu. All rights reserved.
4
5 Header Name:
6
7 cmfuncs.h
8
9 Abstract:
10
11 Function definitions for the Configuration Manager.
12
13 Author:
14
15 Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006
16
17 --*/
18
19 #ifndef _CMFUNCS_H
20 #define _CMFUNCS_H
21
22 //
23 // Dependencies
24 //
25 #include <umtypes.h>
26 #include <cmtypes.h>
27
28 //
29 // Native calls
30 //
31 NTSTATUS
32 NTAPI
33 NtCompactKeys(
34 _In_ ULONG Count,
35 _In_reads_(Count) PHANDLE KeyArray
36 );
37
38 NTSTATUS
39 NTAPI
40 NtCompressKey(
41 _In_ HANDLE Key
42 );
43
44 _IRQL_requires_max_(PASSIVE_LEVEL)
45 NTSYSAPI
46 NTSTATUS
47 NTAPI
48 NtCreateKey(
49 _Out_ PHANDLE KeyHandle,
50 _In_ ACCESS_MASK DesiredAccess,
51 _In_ POBJECT_ATTRIBUTES ObjectAttributes,
52 _Reserved_ ULONG TitleIndex,
53 _In_opt_ PUNICODE_STRING Class,
54 _In_ ULONG CreateOptions,
55 _Out_opt_ PULONG Disposition
56 );
57
58 NTSYSCALLAPI
59 NTSTATUS
60 NTAPI
61 NtDeleteKey(
62 _In_ HANDLE KeyHandle
63 );
64
65 NTSYSCALLAPI
66 NTSTATUS
67 NTAPI
68 NtDeleteValueKey(
69 _In_ HANDLE KeyHandle,
70 _In_ PUNICODE_STRING ValueName
71 );
72
73 NTSYSCALLAPI
74 NTSTATUS
75 NTAPI
76 NtEnumerateKey(
77 _In_ HANDLE KeyHandle,
78 _In_ ULONG Index,
79 _In_ KEY_INFORMATION_CLASS KeyInformationClass,
80 _Out_bytecap_(Length) PVOID KeyInformation,
81 _In_ ULONG Length,
82 _Out_ PULONG ResultLength
83 );
84
85 _IRQL_requires_max_(PASSIVE_LEVEL)
86 _When_(Length == 0, _Post_satisfies_(return < 0))
87 _When_(Length > 0, _Post_satisfies_(return <= 0))
88 NTSYSAPI
89 NTSTATUS
90 NTAPI
91 NtEnumerateValueKey(
92 _In_ HANDLE KeyHandle,
93 _In_ ULONG Index,
94 _In_ KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
95 _Out_writes_bytes_opt_(Length) PVOID KeyValueInformation,
96 _In_ ULONG Length,
97 _Out_ PULONG ResultLength
98 );
99
100 NTSYSCALLAPI
101 NTSTATUS
102 NTAPI
103 NtFlushKey(
104 _In_ HANDLE KeyHandle
105 );
106
107 NTSYSCALLAPI
108 NTSTATUS
109 NTAPI
110 NtGetPlugPlayEvent(
111 _In_ ULONG Reserved1,
112 _In_ ULONG Reserved2,
113 _Out_ PPLUGPLAY_EVENT_BLOCK Buffer,
114 _In_ ULONG BufferSize
115 );
116
117 NTSYSCALLAPI
118 NTSTATUS
119 NTAPI
120 NtInitializeRegistry(
121 _In_ USHORT Flag
122 );
123
124 NTSYSCALLAPI
125 NTSTATUS
126 NTAPI
127 NtLoadKey(
128 _In_ POBJECT_ATTRIBUTES KeyObjectAttributes,
129 _In_ POBJECT_ATTRIBUTES FileObjectAttributes
130 );
131
132 NTSYSCALLAPI
133 NTSTATUS
134 NTAPI
135 NtLoadKey2(
136 _In_ POBJECT_ATTRIBUTES KeyObjectAttributes,
137 _In_ POBJECT_ATTRIBUTES FileObjectAttributes,
138 _In_ ULONG Flags
139 );
140
141 NTSTATUS
142 NTAPI
143 NtLoadKeyEx(
144 _In_ POBJECT_ATTRIBUTES TargetKey,
145 _In_ POBJECT_ATTRIBUTES SourceFile,
146 _In_ ULONG Flags,
147 _In_ HANDLE TrustClassKey
148 );
149
150 NTSTATUS
151 NTAPI
152 NtLockProductActivationKeys(
153 _In_ PULONG pPrivateVer,
154 _In_ PULONG pSafeMode
155 );
156
157 NTSTATUS
158 NTAPI
159 NtLockRegistryKey(
160 _In_ HANDLE KeyHandle
161 );
162
163 NTSYSCALLAPI
164 NTSTATUS
165 NTAPI
166 NtNotifyChangeKey(
167 _In_ HANDLE KeyHandle,
168 _In_ HANDLE Event,
169 _In_opt_ PIO_APC_ROUTINE ApcRoutine,
170 _In_opt_ PVOID ApcContext,
171 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
172 _In_ ULONG CompletionFilter,
173 _In_ BOOLEAN Asynchroneous,
174 _Out_bytecap_(Length) PVOID ChangeBuffer,
175 _In_ ULONG Length,
176 _In_ BOOLEAN WatchSubtree
177 );
178
179 __kernel_entry
180 NTSYSCALLAPI
181 NTSTATUS
182 NTAPI
183 NtNotifyChangeMultipleKeys(
184 _In_ HANDLE MasterKeyHandle,
185 _In_opt_ ULONG Count,
186 _In_reads_opt_(Count) OBJECT_ATTRIBUTES SubordinateObjects[],
187 _In_opt_ HANDLE Event,
188 _In_opt_ PIO_APC_ROUTINE ApcRoutine,
189 _In_opt_ PVOID ApcContext,
190 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
191 _In_ ULONG CompletionFilter,
192 _In_ BOOLEAN WatchTree,
193 _Out_writes_bytes_opt_(BufferSize) PVOID Buffer,
194 _In_ ULONG BufferSize,
195 _In_ BOOLEAN Asynchronous
196 );
197
198 NTSYSCALLAPI
199 NTSTATUS
200 NTAPI
201 NtOpenKey(
202 _Out_ PHANDLE KeyHandle,
203 _In_ ACCESS_MASK DesiredAccess,
204 _In_ POBJECT_ATTRIBUTES ObjectAttributes
205 );
206
207 NTSYSCALLAPI
208 NTSTATUS
209 NTAPI
210 NtPlugPlayControl(
211 _In_ PLUGPLAY_CONTROL_CLASS PlugPlayControlClass,
212 _Inout_ PVOID Buffer,
213 _In_ ULONG BufferSize
214 );
215
216 NTSYSCALLAPI
217 NTSTATUS
218 NTAPI
219 NtQueryKey(
220 _In_ HANDLE KeyHandle,
221 _In_ KEY_INFORMATION_CLASS KeyInformationClass,
222 _Out_bytecap_(Length) PVOID KeyInformation,
223 _In_ ULONG Length,
224 _Out_ PULONG ResultLength
225 );
226
227 __kernel_entry
228 NTSYSCALLAPI
229 NTSTATUS
230 NTAPI
231 NtQueryMultipleValueKey(
232 _In_ HANDLE KeyHandle,
233 _Inout_updates_(EntryCount) PKEY_VALUE_ENTRY ValueEntries,
234 _In_ ULONG EntryCount,
235 _Out_writes_bytes_(*BufferLength) PVOID ValueBuffer,
236 _Inout_ PULONG BufferLength,
237 _Out_opt_ PULONG RequiredBufferLength
238 );
239
240 NTSTATUS
241 NTAPI
242 NtQueryOpenSubKeys(
243 _In_ POBJECT_ATTRIBUTES TargetKey,
244 _Out_ PULONG HandleCount
245 );
246
247 NTSTATUS
248 NTAPI
249 NtQueryOpenSubKeysEx(
250 _In_ POBJECT_ATTRIBUTES TargetKey,
251 _In_ ULONG BufferLength,
252 _In_ PVOID Buffer,
253 _In_ PULONG RequiredSize
254 );
255
256 _IRQL_requires_max_(PASSIVE_LEVEL)
257 _When_(Length == 0, _Post_satisfies_(return < 0))
258 _When_(Length > 0, _Post_satisfies_(return <= 0))
259 NTSYSAPI
260 NTSTATUS
261 NTAPI
262 NtQueryValueKey(
263 _In_ HANDLE KeyHandle,
264 _In_ PUNICODE_STRING ValueName,
265 _In_ KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
266 _Out_writes_bytes_opt_(Length) PVOID KeyValueInformation,
267 _In_ ULONG Length,
268 _Out_ PULONG ResultLength
269 );
270
271 NTSYSCALLAPI
272 NTSTATUS
273 NTAPI
274 NtRenameKey(
275 _In_ HANDLE KeyHandle,
276 _In_ PUNICODE_STRING NewName
277 );
278
279 NTSYSCALLAPI
280 NTSTATUS
281 NTAPI
282 NtReplaceKey(
283 _In_ POBJECT_ATTRIBUTES ObjectAttributes,
284 _In_ HANDLE Key,
285 _In_ POBJECT_ATTRIBUTES ReplacedObjectAttributes
286 );
287
288 NTSYSCALLAPI
289 NTSTATUS
290 NTAPI
291 NtRestoreKey(
292 _In_ HANDLE KeyHandle,
293 _In_ HANDLE FileHandle,
294 _In_ ULONG RestoreFlags
295 );
296
297 NTSYSCALLAPI
298 NTSTATUS
299 NTAPI
300 NtSaveKey(
301 _In_ HANDLE KeyHandle,
302 _In_ HANDLE FileHandle
303 );
304
305 NTSYSCALLAPI
306 NTSTATUS
307 NTAPI
308 NtSaveKeyEx(
309 _In_ HANDLE KeyHandle,
310 _In_ HANDLE FileHandle,
311 _In_ ULONG Flags
312 );
313
314
315 NTSTATUS
316 NTAPI
317 NtSaveMergedKeys(
318 _In_ HANDLE HighPrecedenceKeyHandle,
319 _In_ HANDLE LowPrecedenceKeyHandle,
320 _In_ HANDLE FileHandle
321 );
322
323 __kernel_entry
324 NTSYSCALLAPI
325 NTSTATUS
326 NTAPI
327 NtSetInformationKey(
328 _In_ HANDLE KeyHandle,
329 _In_ _Strict_type_match_
330 KEY_SET_INFORMATION_CLASS KeySetInformationClass,
331 _In_reads_bytes_(KeySetInformationLength) PVOID KeySetInformation,
332 _In_ ULONG KeySetInformationLength
333 );
334
335 NTSYSCALLAPI
336 NTSTATUS
337 NTAPI
338 NtSetValueKey(
339 _In_ HANDLE KeyHandle,
340 _In_ PUNICODE_STRING ValueName,
341 _In_opt_ ULONG TitleIndex,
342 _In_ ULONG Type,
343 _In_ PVOID Data,
344 _In_ ULONG DataSize
345 );
346
347 NTSYSCALLAPI
348 NTSTATUS
349 NTAPI
350 NtUnloadKey(
351 _In_ POBJECT_ATTRIBUTES KeyObjectAttributes
352 );
353
354 NTSTATUS
355 NTAPI
356 NtUnloadKey2(
357 _In_ POBJECT_ATTRIBUTES TargetKey,
358 _In_ ULONG Flags
359 );
360
361 NTSTATUS
362 NTAPI
363 NtUnloadKeyEx(
364 _In_ POBJECT_ATTRIBUTES TargetKey,
365 _In_ HANDLE Event
366 );
367
368 #ifdef NTOS_MODE_USER
369 _IRQL_requires_max_(PASSIVE_LEVEL)
370 NTSYSAPI
371 NTSTATUS
372 NTAPI
373 ZwCreateKey(
374 _Out_ PHANDLE KeyHandle,
375 _In_ ACCESS_MASK DesiredAccess,
376 _In_ POBJECT_ATTRIBUTES ObjectAttributes,
377 _Reserved_ ULONG TitleIndex,
378 _In_opt_ PUNICODE_STRING Class,
379 _In_ ULONG CreateOptions,
380 _Out_opt_ PULONG Disposition
381 );
382
383 NTSYSAPI
384 NTSTATUS
385 NTAPI
386 ZwDeleteKey(
387 _In_ HANDLE KeyHandle
388 );
389
390 NTSYSAPI
391 NTSTATUS
392 NTAPI
393 ZwDeleteValueKey(
394 _In_ HANDLE KeyHandle,
395 _In_ PUNICODE_STRING ValueName
396 );
397
398 NTSYSAPI
399 NTSTATUS
400 NTAPI
401 ZwEnumerateKey(
402 _In_ HANDLE KeyHandle,
403 _In_ ULONG Index,
404 _In_ KEY_INFORMATION_CLASS KeyInformationClass,
405 _Out_bytecap_(Length) PVOID KeyInformation,
406 _In_ ULONG Length,
407 _Out_ PULONG ResultLength
408 );
409
410 _IRQL_requires_max_(PASSIVE_LEVEL)
411 _When_(Length == 0, _Post_satisfies_(return < 0))
412 _When_(Length > 0, _Post_satisfies_(return <= 0))
413 NTSYSAPI
414 NTSTATUS
415 NTAPI
416 ZwEnumerateValueKey(
417 _In_ HANDLE KeyHandle,
418 _In_ ULONG Index,
419 _In_ KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
420 _Out_writes_bytes_opt_(Length) PVOID KeyValueInformation,
421 _In_ ULONG Length,
422 _Out_ PULONG ResultLength
423 );
424
425 NTSYSAPI
426 NTSTATUS
427 NTAPI
428 ZwFlushKey(
429 _In_ HANDLE KeyHandle
430 );
431
432 NTSYSAPI
433 NTSTATUS
434 NTAPI
435 ZwGetPlugPlayEvent(
436 _In_ ULONG Reserved1,
437 _In_ ULONG Reserved2,
438 _Out_bytecap_(BufferSize) PPLUGPLAY_EVENT_BLOCK Buffer,
439 _In_ ULONG BufferSize
440 );
441
442 NTSYSAPI
443 NTSTATUS
444 NTAPI
445 ZwLoadKey(
446 _In_ POBJECT_ATTRIBUTES KeyObjectAttributes,
447 _In_ POBJECT_ATTRIBUTES FileObjectAttributes
448 );
449
450 NTSYSAPI
451 NTSTATUS
452 NTAPI
453 ZwLoadKey2(
454 _In_ POBJECT_ATTRIBUTES KeyObjectAttributes,
455 _In_ POBJECT_ATTRIBUTES FileObjectAttributes,
456 _In_ ULONG Flags
457 );
458
459 NTSYSAPI
460 NTSTATUS
461 NTAPI
462 ZwNotifyChangeKey(
463 _In_ HANDLE KeyHandle,
464 _In_ HANDLE Event,
465 _In_opt_ PIO_APC_ROUTINE ApcRoutine,
466 _In_opt_ PVOID ApcContext,
467 _Out_ PIO_STATUS_BLOCK IoStatusBlock,
468 _In_ ULONG CompletionFilter,
469 _In_ BOOLEAN Asynchroneous,
470 _Out_bytecap_(Length) PVOID ChangeBuffer,
471 _In_ ULONG Length,
472 _In_ BOOLEAN WatchSubtree
473 );
474
475 NTSYSAPI
476 NTSTATUS
477 NTAPI
478 ZwOpenKey(
479 _Out_ PHANDLE KeyHandle,
480 _In_ ACCESS_MASK DesiredAccess,
481 _In_ POBJECT_ATTRIBUTES ObjectAttributes
482 );
483
484 NTSYSAPI
485 NTSTATUS
486 NTAPI
487 ZwPlugPlayControl(
488 _In_ PLUGPLAY_CONTROL_CLASS PlugPlayControlClass,
489 _Inout_bytecap_(BufferSize) PVOID Buffer,
490 _In_ ULONG BufferSize
491 );
492
493 NTSYSAPI
494 NTSTATUS
495 NTAPI
496 ZwQueryKey(
497 _In_ HANDLE KeyHandle,
498 _In_ KEY_INFORMATION_CLASS KeyInformationClass,
499 _Out_bytecap_(Length) PVOID KeyInformation,
500 _In_ ULONG Length,
501 _Out_ PULONG ResultLength
502 );
503
504 NTSYSAPI
505 NTSTATUS
506 NTAPI
507 ZwQueryMultipleValueKey(
508 _In_ HANDLE KeyHandle,
509 _Inout_ PKEY_VALUE_ENTRY ValueList,
510 _In_ ULONG NumberOfValues,
511 _Out_bytecap_(*Length) PVOID Buffer,
512 _Inout_ PULONG Length,
513 _Out_ PULONG ReturnLength
514 );
515
516 _IRQL_requires_max_(PASSIVE_LEVEL)
517 _When_(Length == 0, _Post_satisfies_(return < 0))
518 _When_(Length > 0, _Post_satisfies_(return <= 0))
519 NTSYSAPI
520 NTSTATUS
521 NTAPI
522 ZwQueryValueKey(
523 _In_ HANDLE KeyHandle,
524 _In_ PUNICODE_STRING ValueName,
525 _In_ KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
526 _Out_writes_bytes_opt_(Length) PVOID KeyValueInformation,
527 _In_ ULONG Length,
528 _Out_ PULONG ResultLength
529 );
530
531 NTSYSAPI
532 NTSTATUS
533 NTAPI
534 ZwReplaceKey(
535 _In_ POBJECT_ATTRIBUTES ObjectAttributes,
536 _In_ HANDLE Key,
537 _In_ POBJECT_ATTRIBUTES ReplacedObjectAttributes
538 );
539
540 NTSYSAPI
541 NTSTATUS
542 NTAPI
543 ZwRestoreKey(
544 _In_ HANDLE KeyHandle,
545 _In_ HANDLE FileHandle,
546 _In_ ULONG RestoreFlags
547 );
548
549 NTSYSAPI
550 NTSTATUS
551 NTAPI
552 ZwSaveKey(
553 _In_ HANDLE KeyHandle,
554 _In_ HANDLE FileHandle
555 );
556
557 NTSYSAPI
558 NTSTATUS
559 NTAPI
560 ZwSaveKeyEx(
561 _In_ HANDLE KeyHandle,
562 _In_ HANDLE FileHandle,
563 _In_ ULONG Flags
564 );
565
566 NTSYSAPI
567 NTSTATUS
568 NTAPI
569 ZwSetInformationKey(
570 _In_ HANDLE KeyHandle,
571 _In_ KEY_SET_INFORMATION_CLASS KeyInformationClass,
572 _In_bytecount_(KeyInformationLength) PVOID KeyInformation,
573 _In_ ULONG KeyInformationLength
574 );
575
576 NTSYSAPI
577 NTSTATUS
578 NTAPI
579 ZwSetValueKey(
580 _In_ HANDLE KeyHandle,
581 _In_ PUNICODE_STRING ValueName,
582 _In_opt_ ULONG TitleIndex,
583 _In_ ULONG Type,
584 _In_bytecount_(DataSize) PVOID Data,
585 _In_ ULONG DataSize
586 );
587 #endif
588
589 NTSYSAPI
590 NTSTATUS
591 NTAPI
592 ZwInitializeRegistry(
593 _In_ USHORT Flag
594 );
595
596 NTSYSAPI
597 NTSTATUS
598 NTAPI
599 ZwUnloadKey(
600 _In_ POBJECT_ATTRIBUTES KeyObjectAttributes
601 );
602
603 #endif