ReactOS 0.4.16-dev-1875-g3000d45
nt_native.h
Go to the documentation of this file.
1
2// Copyright (C) Alexander Telyatnikov, Ivan Keliukh, Yegor Anchishkin, SKIF Software, 1999-2013. Kiev, Ukraine
3// All rights reserved
4// This file was released under the GPLv2 on June 2015.
6
7//======================================================================
8//
9// NT_Native.h
10//
11//======================================================================
12
13#ifndef __NT_NATIVE_DEFS__H__
14#define __NT_NATIVE_DEFS__H__
15
16#ifdef __cplusplus
17extern "C" {
18#endif //__cplusplus
19
20#include <excpt.h>
21#include <ntdef.h>
22#include <ntstatus.h>
23#include <string.h>
24#include <DEVIOCTL.H>
25#include <NTDDSTOR.H>
26#include <NTDDDISK.H>
27
28typedef struct _KTHREAD *PKTHREAD;
29typedef struct _ETHREAD *PETHREAD;
30typedef struct _EPROCESS *PEPROCESS;
31typedef struct _PEB *PPEB;
32typedef struct _KINTERRUPT *PKINTERRUPT;
33typedef struct _IO_TIMER *PIO_TIMER;
34typedef struct _OBJECT_TYPE *POBJECT_TYPE;
36typedef struct _DEVICE_HANDLER_OBJECT *PDEVICE_HANDLER_OBJECT;
37typedef struct _BUS_HANDLER *PBUS_HANDLER;
38
39
42
43#define BOOL BOOLEAN
44#define DWORD ULONG
45#define LPVOID PVOID
46#define LPDWORD PULONG
47
48#define APIENTRY __stdcall
49
50#define FASTCALL _fastcall
51
52// end_winnt
53//
54// The following are masks for the predefined standard access types
55//
56
57#define DELETE (0x00010000L)
58#define READ_CONTROL (0x00020000L)
59#define WRITE_DAC (0x00040000L)
60#define WRITE_OWNER (0x00080000L)
61#define SYNCHRONIZE (0x00100000L)
62
63#define STANDARD_RIGHTS_REQUIRED (0x000F0000L)
64
65#define STANDARD_RIGHTS_READ (READ_CONTROL)
66#define STANDARD_RIGHTS_WRITE (READ_CONTROL)
67#define STANDARD_RIGHTS_EXECUTE (READ_CONTROL)
68
69#define STANDARD_RIGHTS_ALL (0x001F0000L)
70
71#define SPECIFIC_RIGHTS_ALL (0x0000FFFFL)
72
73//
74// AccessSystemAcl access type
75//
76
77#define ACCESS_SYSTEM_SECURITY (0x01000000L)
78
79//
80// MaximumAllowed access type
81//
82
83#define MAXIMUM_ALLOWED (0x02000000L)
84
85//
86// These are the generic rights.
87//
88
89#define GENERIC_READ (0x80000000L)
90#define GENERIC_WRITE (0x40000000L)
91#define GENERIC_EXECUTE (0x20000000L)
92#define GENERIC_ALL (0x10000000L)
93
94
95//
96// Subroutines for dealing with the Registry
97//
98
106 );
107
116
118
119
120//
121// The following flags specify how the Name field of a RTL_QUERY_REGISTRY_TABLE
122// entry is interpreted. A NULL name indicates the end of the table.
123//
124
125#define RTL_QUERY_REGISTRY_SUBKEY 0x00000001 // Name is a subkey and remainder of
126 // table or until next subkey are value
127 // names for that subkey to look at.
128
129#define RTL_QUERY_REGISTRY_TOPKEY 0x00000002 // Reset current key to original key for
130 // this and all following table entries.
131
132#define RTL_QUERY_REGISTRY_REQUIRED 0x00000004 // Fail if no match found for this table
133 // entry.
134
135#define RTL_QUERY_REGISTRY_NOVALUE 0x00000008 // Used to mark a table entry that has no
136 // value name, just wants a call out, not
137 // an enumeration of all values.
138
139#define RTL_QUERY_REGISTRY_NOEXPAND 0x00000010 // Used to suppress the expansion of
140 // REG_MULTI_SZ into multiple callouts or
141 // to prevent the expansion of environment
142 // variable values in REG_EXPAND_SZ
143
144#define RTL_QUERY_REGISTRY_DIRECT 0x00000020 // QueryRoutine field ignored. EntryContext
145 // field points to location to store value.
146 // For null terminated strings, EntryContext
147 // points to UNICODE_STRING structure that
148 // that describes maximum size of buffer.
149 // If .Buffer field is NULL then a buffer is
150 // allocated.
151 //
152
153#define RTL_QUERY_REGISTRY_DELETE 0x00000040 // Used to delete value keys after they
154 // are queried.
155
156//
157// The following values for the RelativeTo parameter determine what the
158// Path parameter to RtlQueryRegistryValues is relative to.
159//
160
161#define RTL_REGISTRY_ABSOLUTE 0 // Path is a full path
162#define RTL_REGISTRY_SERVICES 1 // \Registry\Machine\System\CurrentControlSet\Services
163#define RTL_REGISTRY_CONTROL 2 // \Registry\Machine\System\CurrentControlSet\Control
164#define RTL_REGISTRY_WINDOWS_NT 3 // \Registry\Machine\Software\Microsoft\Windows NT\CurrentVersion
165#define RTL_REGISTRY_DEVICEMAP 4 // \Registry\Machine\Hardware\DeviceMap
166#define RTL_REGISTRY_USER 5 // \Registry\User\CurrentUser
167#define RTL_REGISTRY_MAXIMUM 6
168#define RTL_REGISTRY_HANDLE 0x40000000 // Low order bits are registry handle
169#define RTL_REGISTRY_OPTIONAL 0x80000000 // Indicates the key node is optional
170
171
172
175NTAPI
177 PCSZ String,
178 ULONG Base,
180 );
181
184NTAPI
186 ULONG Value,
187 ULONG Base,
189 );
190
193NTAPI
196 ULONG Base,
198 );
199
200
201//
202// String manipulation routines
203//
204
205#ifdef _NTSYSTEM_
206
207#define NLS_MB_CODE_PAGE_TAG NlsMbCodePageTag
208#define NLS_MB_OEM_CODE_PAGE_TAG NlsMbOemCodePageTag
209
210#else
211
212#define NLS_MB_CODE_PAGE_TAG (*NlsMbCodePageTag)
213#define NLS_MB_OEM_CODE_PAGE_TAG (*NlsMbOemCodePageTag)
214
215#endif // _NTSYSTEM_
216
217extern BOOLEAN NLS_MB_CODE_PAGE_TAG; // TRUE -> Multibyte CP, FALSE -> Singlebyte
218extern BOOLEAN NLS_MB_OEM_CODE_PAGE_TAG; // TRUE -> Multibyte CP, FALSE -> Singlebyte
219
221VOID
222NTAPI
226 );
227
229VOID
230NTAPI
234 );
235
237VOID
238NTAPI
242 );
243
244
246VOID
247NTAPI
251 );
252
254CHAR
255NTAPI
257 CHAR Character
258 );
259
261LONG
262NTAPI
264 PSTRING String1,
267 );
268
271NTAPI
273 PSTRING String1,
276 );
277
278
280VOID
281NTAPI
285 );
286
287//
288// NLS String functions
289//
290
293NTAPI
298 );
299
300
303NTAPI
308 );
309
310
312LONG
313NTAPI
315 PUNICODE_STRING String1,
318 );
319
322NTAPI
324 PUNICODE_STRING String1,
327 );
328
331NTAPI
333 IN PUNICODE_STRING String1,
336 );
337
340NTAPI
345 );
346
347
349VOID
350NTAPI
354 );
355
358NTAPI
362 );
363
366NTAPI
370 );
371
372
374VOID
375NTAPI
378 );
379
381VOID
382NTAPI
385 );
386
387
389ULONG
390NTAPI
393 );
394
395//
396// NTSYSAPI
397// ULONG
398// NTAPI
399// RtlAnsiStringToUnicodeSize(
400// PANSI_STRING AnsiString
401// );
402//
403
404#define RtlAnsiStringToUnicodeSize(STRING) ( \
405 NLS_MB_CODE_PAGE_TAG ? \
406 RtlxAnsiStringToUnicodeSize(STRING) : \
407 ((STRING)->Length + sizeof((UCHAR)NULL)) * sizeof(WCHAR) \
408)
409
410#if DBG
412VOID
413NTAPI
415 PVOID FailedAssertion,
419 );
420
421#define ASSERT( exp ) \
422 if (!(exp)) \
423 RtlAssert( #exp, __FILE__, __LINE__, NULL )
424
425#define ASSERTMSG( msg, exp ) \
426 if (!(exp)) \
427 RtlAssert( #exp, __FILE__, __LINE__, msg )
428
429#else
430#define ASSERT( exp )
431#define ASSERTMSG( msg, exp )
432#endif // DBG
433
434//
435// Fast primitives to compare, move, and zero memory
436//
437
438// begin_winnt begin_ntndis
439#if defined(_M_IX86) || defined(_M_MRX000) || defined(_M_ALPHA)
440
441#if defined(_M_MRX000)
443ULONG
444NTAPI
446 CONST VOID *Source1,
447 CONST VOID *Source2,
449 );
450
451#else
452#define RtlEqualMemory(Destination,Source,Length) (!memcmp((Destination),(Source),(Length)))
453#endif
454
455#define RtlMoveMemory(Destination,Source,Length) memmove((Destination),(Source),(Length))
456#define RtlCopyMemory(Destination,Source,Length) memcpy((Destination),(Source),(Length))
457#define RtlFillMemory(Destination,Length,Fill) memset((Destination),(Fill),(Length))
458#define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length))
459
460#else // _M_PPC
461
463ULONG
464NTAPI
466 CONST VOID *Source1,
467 CONST VOID *Source2,
469 );
470
472VOID
473NTAPI
478 );
479
481VOID
482NTAPI
487 );
488
490VOID
491NTAPI
496 );
497
499VOID
500NTAPI
504 UCHAR Fill
505 );
506
508VOID
509NTAPI
513 );
514#endif
515// end_winnt end_ntndis
516
518ULONG
519NTAPI
521 PVOID Source1,
522 PVOID Source2,
524 );
525
526typedef struct _TIME_FIELDS {
527 CSHORT Year; // range [1601...]
528 CSHORT Month; // range [1..12]
529 CSHORT Day; // range [1..31]
530 CSHORT Hour; // range [0..23]
531 CSHORT Minute; // range [0..59]
532 CSHORT Second; // range [0..59]
533 CSHORT Milliseconds;// range [0..999]
534 CSHORT Weekday; // range [0..6] == [Sunday..Saturday]
537
538
540VOID
541NTAPI
545 );
546
547//
548// A time field record (Weekday ignored) -> 64 bit Time value
549//
550
553NTAPI
557 );
558
559//
560// Define the generic mapping array. This is used to denote the
561// mapping of each generic access right to a specific access mask.
562//
563
564typedef struct _GENERIC_MAPPING {
571
572//
573// Define the various device type values. Note that values used by Microsoft
574// Corporation are in the range 0-32767, and 32768-65535 are reserved for use
575// by customers.
576//
577
578#define DEVICE_TYPE ULONG
579
580//
581// Macro definition for defining IOCTL and FSCTL function control codes. Note
582// that function codes 0-2047 are reserved for Microsoft Corporation, and
583// 2048-4095 are reserved for customers.
584//
585
586#define CTL_CODE( DeviceType, Function, Method, Access ) ( \
587 ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method) \
588)
589
590//
591// Define the method codes for how buffers are passed for I/O and FS controls
592//
593
594#define METHOD_BUFFERED 0
595#define METHOD_IN_DIRECT 1
596#define METHOD_OUT_DIRECT 2
597#define METHOD_NEITHER 3
598
599//
600// Define the access check value for any access
601//
602//
603// The FILE_READ_ACCESS and FILE_WRITE_ACCESS constants are also defined in
604// ntioapi.h as FILE_READ_DATA and FILE_WRITE_DATA. The values for these
605// constants *MUST* always be in sync.
606//
607
608
609#define FILE_ANY_ACCESS 0
610#define FILE_READ_ACCESS ( 0x0001 ) // file & pipe
611#define FILE_WRITE_ACCESS ( 0x0002 ) // file & pipe
612
613
614// begin_winnt
615
616//
617// Define access rights to files and directories
618//
619
620//
621// The FILE_READ_DATA and FILE_WRITE_DATA constants are also defined in
622// devioctl.h as FILE_READ_ACCESS and FILE_WRITE_ACCESS. The values for these
623// constants *MUST* always be in sync.
624// The values are redefined in devioctl.h because they must be available to
625// both DOS and NT.
626//
627
628#define FILE_READ_DATA ( 0x0001 ) // file & pipe
629#define FILE_LIST_DIRECTORY ( 0x0001 ) // directory
630
631#define FILE_WRITE_DATA ( 0x0002 ) // file & pipe
632#define FILE_ADD_FILE ( 0x0002 ) // directory
633
634#define FILE_APPEND_DATA ( 0x0004 ) // file
635#define FILE_ADD_SUBDIRECTORY ( 0x0004 ) // directory
636#define FILE_CREATE_PIPE_INSTANCE ( 0x0004 ) // named pipe
637
638#define FILE_READ_EA ( 0x0008 ) // file & directory
639
640#define FILE_WRITE_EA ( 0x0010 ) // file & directory
641
642#define FILE_EXECUTE ( 0x0020 ) // file
643#define FILE_TRAVERSE ( 0x0020 ) // directory
644
645#define FILE_DELETE_CHILD ( 0x0040 ) // directory
646
647#define FILE_READ_ATTRIBUTES ( 0x0080 ) // all
648
649#define FILE_WRITE_ATTRIBUTES ( 0x0100 ) // all
650
651#define FILE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF)
652
653#define FILE_GENERIC_READ (STANDARD_RIGHTS_READ |\
654 FILE_READ_DATA |\
655 FILE_READ_ATTRIBUTES |\
656 FILE_READ_EA |\
657 SYNCHRONIZE)
658
659
660#define FILE_GENERIC_WRITE (STANDARD_RIGHTS_WRITE |\
661 FILE_WRITE_DATA |\
662 FILE_WRITE_ATTRIBUTES |\
663 FILE_WRITE_EA |\
664 FILE_APPEND_DATA |\
665 SYNCHRONIZE)
666
667
668#define FILE_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE |\
669 FILE_READ_ATTRIBUTES |\
670 FILE_EXECUTE |\
671 SYNCHRONIZE)
672
673// end_winnt
674
675
676//
677// Define share access rights to files and directories
678//
679
680#define FILE_SHARE_READ 0x00000001 // winnt
681#define FILE_SHARE_WRITE 0x00000002 // winnt
682#define FILE_SHARE_DELETE 0x00000004 // winnt
683#define FILE_SHARE_VALID_FLAGS 0x00000007
684
685//
686// Define the file attributes values
687//
688// Note: 0x00000008 is reserved for use for the old DOS VOLID (volume ID)
689// and is therefore not considered valid in NT.
690//
691// Note: 0x00000010 is reserved for use for the old DOS SUBDIRECTORY flag
692// and is therefore not considered valid in NT. This flag has
693// been disassociated with file attributes since the other flags are
694// protected with READ_ and WRITE_ATTRIBUTES access to the file.
695//
696// Note: Note also that the order of these flags is set to allow both the
697// FAT and the Pinball File Systems to directly set the attributes
698// flags in attributes words without having to pick each flag out
699// individually. The order of these flags should not be changed!
700//
701
702#define FILE_ATTRIBUTE_READONLY 0x00000001 // winnt
703#define FILE_ATTRIBUTE_HIDDEN 0x00000002 // winnt
704#define FILE_ATTRIBUTE_SYSTEM 0x00000004 // winnt
705#define FILE_ATTRIBUTE_DIRECTORY 0x00000010 // winnt
706#define FILE_ATTRIBUTE_ARCHIVE 0x00000020 // winnt
707#define FILE_ATTRIBUTE_NORMAL 0x00000080 // winnt
708#define FILE_ATTRIBUTE_TEMPORARY 0x00000100 // winnt
709#define FILE_ATTRIBUTE_RESERVED0 0x00000200
710#define FILE_ATTRIBUTE_RESERVED1 0x00000400
711#define FILE_ATTRIBUTE_COMPRESSED 0x00000800 // winnt
712#define FILE_ATTRIBUTE_OFFLINE 0x00001000 // winnt
713#define FILE_ATTRIBUTE_PROPERTY_SET 0x00002000
714#define FILE_ATTRIBUTE_VALID_FLAGS 0x00003fb7
715#define FILE_ATTRIBUTE_VALID_SET_FLAGS 0x00003fa7
716
717//
718// Define the create disposition values
719//
720
721#define FILE_SUPERSEDE 0x00000000
722#define FILE_OPEN 0x00000001
723#define FILE_CREATE 0x00000002
724#define FILE_OPEN_IF 0x00000003
725#define FILE_OVERWRITE 0x00000004
726#define FILE_OVERWRITE_IF 0x00000005
727#define FILE_MAXIMUM_DISPOSITION 0x00000005
728
729
730//
731// Define the create/open option flags
732//
733
734#define FILE_DIRECTORY_FILE 0x00000001
735#define FILE_WRITE_THROUGH 0x00000002
736#define FILE_SEQUENTIAL_ONLY 0x00000004
737#define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008
738
739#define FILE_SYNCHRONOUS_IO_ALERT 0x00000010
740#define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020
741#define FILE_NON_DIRECTORY_FILE 0x00000040
742#define FILE_CREATE_TREE_CONNECTION 0x00000080
743
744#define FILE_COMPLETE_IF_OPLOCKED 0x00000100
745#define FILE_NO_EA_KNOWLEDGE 0x00000200
746//UNUSED 0x00000400
747#define FILE_RANDOM_ACCESS 0x00000800
748
749#define FILE_DELETE_ON_CLOSE 0x00001000
750#define FILE_OPEN_BY_FILE_ID 0x00002000
751#define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000
752#define FILE_NO_COMPRESSION 0x00008000
753
754
755#define FILE_RESERVE_OPFILTER 0x00100000
756#define FILE_TRANSACTED_MODE 0x00200000
757#define FILE_OPEN_OFFLINE_FILE 0x00400000
758
759#define FILE_VALID_OPTION_FLAGS 0x007fffff
760#define FILE_VALID_PIPE_OPTION_FLAGS 0x00000032
761#define FILE_VALID_MAILSLOT_OPTION_FLAGS 0x00000032
762#define FILE_VALID_SET_FLAGS 0x00000036
763
764//
765// Define the I/O status information return values for NtCreateFile/NtOpenFile
766//
767
768#define FILE_SUPERSEDED 0x00000000
769#define FILE_OPENED 0x00000001
770#define FILE_CREATED 0x00000002
771#define FILE_OVERWRITTEN 0x00000003
772#define FILE_EXISTS 0x00000004
773#define FILE_DOES_NOT_EXIST 0x00000005
774
775//
776// Define special ByteOffset parameters for read and write operations
777//
778
779#define FILE_WRITE_TO_END_OF_FILE 0xffffffff
780#define FILE_USE_FILE_POINTER_POSITION 0xfffffffe
781
782//
783// Define alignment requirement values
784//
785
786#define FILE_BYTE_ALIGNMENT 0x00000000
787#define FILE_WORD_ALIGNMENT 0x00000001
788#define FILE_LONG_ALIGNMENT 0x00000003
789#define FILE_QUAD_ALIGNMENT 0x00000007
790#define FILE_OCTA_ALIGNMENT 0x0000000f
791#define FILE_32_BYTE_ALIGNMENT 0x0000001f
792#define FILE_64_BYTE_ALIGNMENT 0x0000003f
793#define FILE_128_BYTE_ALIGNMENT 0x0000007f
794#define FILE_256_BYTE_ALIGNMENT 0x000000ff
795#define FILE_512_BYTE_ALIGNMENT 0x000001ff
796
797//
798// Define the maximum length of a filename string
799//
800
801#define MAXIMUM_FILENAME_LENGTH 256
802
803//
804// Define the various device characteristics flags
805//
806
807#define FILE_REMOVABLE_MEDIA 0x00000001
808#define FILE_READ_ONLY_DEVICE 0x00000002
809#define FILE_FLOPPY_DISKETTE 0x00000004
810#define FILE_WRITE_ONCE_MEDIA 0x00000008
811#define FILE_REMOTE_DEVICE 0x00000010
812#define FILE_DEVICE_IS_MOUNTED 0x00000020
813#define FILE_VIRTUAL_VOLUME 0x00000040
814
815#ifndef _FILESYSTEMFSCTL_
816#define _FILESYSTEMFSCTL_
817
818#endif // _FILESYSTEMFSCTL_
819
820//
821// The following is a list of the native file system fsctls followed by
822// additional network file system fsctls. Some values have been
823// decommissioned.
824//
825
826#define FSCTL_REQUEST_OPLOCK_LEVEL_1 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
827#define FSCTL_REQUEST_OPLOCK_LEVEL_2 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
828#define FSCTL_REQUEST_BATCH_OPLOCK CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
829#define FSCTL_OPLOCK_BREAK_ACKNOWLEDGE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 3, METHOD_BUFFERED, FILE_ANY_ACCESS)
830#define FSCTL_OPBATCH_ACK_CLOSE_PENDING CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
831#define FSCTL_OPLOCK_BREAK_NOTIFY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 5, METHOD_BUFFERED, FILE_ANY_ACCESS)
832#define FSCTL_LOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
833#define FSCTL_UNLOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
834#define FSCTL_DISMOUNT_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
835// decommissioned fsctl value 9
836#define FSCTL_IS_VOLUME_MOUNTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 10, METHOD_BUFFERED, FILE_ANY_ACCESS)
837#define FSCTL_IS_PATHNAME_VALID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 11, METHOD_BUFFERED, FILE_ANY_ACCESS) // PATHNAME_BUFFER,
838#define FSCTL_MARK_VOLUME_DIRTY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 12, METHOD_BUFFERED, FILE_ANY_ACCESS)
839// decommissioned fsctl value 13
840#define FSCTL_QUERY_RETRIEVAL_POINTERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 14, METHOD_NEITHER, FILE_ANY_ACCESS)
841#define FSCTL_GET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 15, METHOD_BUFFERED, FILE_ANY_ACCESS)
842#define FSCTL_SET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 16, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
843// decommissioned fsctl value 17
844// decommissioned fsctl value 18
845#define FSCTL_MARK_AS_SYSTEM_HIVE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 19, METHOD_NEITHER, FILE_ANY_ACCESS)
846#define FSCTL_OPLOCK_BREAK_ACK_NO_2 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 20, METHOD_BUFFERED, FILE_ANY_ACCESS)
847#define FSCTL_INVALIDATE_VOLUMES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 21, METHOD_BUFFERED, FILE_ANY_ACCESS)
848#define FSCTL_QUERY_FAT_BPB CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 22, METHOD_BUFFERED, FILE_ANY_ACCESS) // FSCTL_QUERY_FAT_BPB_BUFFER
849#define FSCTL_REQUEST_FILTER_OPLOCK CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 23, METHOD_BUFFERED, FILE_ANY_ACCESS)
850#define FSCTL_FILESYSTEM_GET_STATISTICS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 24, METHOD_BUFFERED, FILE_ANY_ACCESS) // FILESYSTEM_STATISTICS
851#if(_WIN32_WINNT >= 0x0400)
852#define FSCTL_GET_NTFS_VOLUME_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 25, METHOD_BUFFERED, FILE_ANY_ACCESS) // NTFS_VOLUME_DATA_BUFFER
853#define FSCTL_GET_NTFS_FILE_RECORD CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 26, METHOD_BUFFERED, FILE_ANY_ACCESS) // NTFS_FILE_RECORD_INPUT_BUFFER, NTFS_FILE_RECORD_OUTPUT_BUFFER
854#define FSCTL_GET_VOLUME_BITMAP CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 27, METHOD_NEITHER, FILE_ANY_ACCESS) // STARTING_LCN_INPUT_BUFFER, VOLUME_BITMAP_BUFFER
855#define FSCTL_GET_RETRIEVAL_POINTERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 28, METHOD_NEITHER, FILE_ANY_ACCESS) // STARTING_VCN_INPUT_BUFFER, RETRIEVAL_POINTERS_BUFFER
856#define FSCTL_MOVE_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 29, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) // MOVE_FILE_DATA,
857#define FSCTL_IS_VOLUME_DIRTY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 30, METHOD_BUFFERED, FILE_ANY_ACCESS)
858// decomissioned fsctl value 31
859#define FSCTL_ALLOW_EXTENDED_DASD_IO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 32, METHOD_NEITHER, FILE_ANY_ACCESS)
860#endif /* _WIN32_WINNT >= 0x0400 */
861
862//
863// Define the base asynchronous I/O argument types
864//
865
866typedef struct _IO_STATUS_BLOCK {
870
871//
872// Define an Asynchronous Procedure Call from I/O viewpoint
873//
874
875typedef
877#ifdef __REACTOS__
878NTAPI
879#endif
880(*PIO_APC_ROUTINE) (
884 );
885
886//
887// Define the file information class values
888//
889// WARNING: The order of the following values are assumed by the I/O system.
890// Any changes made here should be reflected there as well.
891//
892
936
937//
938// Define the various structures which are returned on query operations
939//
940
948
949typedef struct _FILE_STANDARD_INFORMATION {
956
960
964
965typedef struct _FILE_NETWORK_OPEN_INFORMATION {
974
978
982
983
984typedef struct _FILE_FULL_EA_INFORMATION {
986 UCHAR Flags;
989 CHAR EaName[1];
991
992//
993// Define the file system information class values
994//
995// WARNING: The order of the following values are assumed by the I/O system.
996// Any changes made here should be reflected there as well.
997
998typedef enum _FSINFOCLASS {
1009
1014
1015//
1016// Registry Specific Access Rights.
1017//
1018
1019#define KEY_QUERY_VALUE (0x0001)
1020#define KEY_SET_VALUE (0x0002)
1021#define KEY_CREATE_SUB_KEY (0x0004)
1022#define KEY_ENUMERATE_SUB_KEYS (0x0008)
1023#define KEY_NOTIFY (0x0010)
1024#define KEY_CREATE_LINK (0x0020)
1025
1026#define KEY_READ ((STANDARD_RIGHTS_READ |\
1027 KEY_QUERY_VALUE |\
1028 KEY_ENUMERATE_SUB_KEYS |\
1029 KEY_NOTIFY) \
1030 & \
1031 (~SYNCHRONIZE))
1032
1033
1034#define KEY_WRITE ((STANDARD_RIGHTS_WRITE |\
1035 KEY_SET_VALUE |\
1036 KEY_CREATE_SUB_KEY) \
1037 & \
1038 (~SYNCHRONIZE))
1039
1040#define KEY_EXECUTE ((KEY_READ) \
1041 & \
1042 (~SYNCHRONIZE))
1043
1044#define KEY_ALL_ACCESS ((STANDARD_RIGHTS_ALL |\
1045 KEY_QUERY_VALUE |\
1046 KEY_SET_VALUE |\
1047 KEY_CREATE_SUB_KEY |\
1048 KEY_ENUMERATE_SUB_KEYS |\
1049 KEY_NOTIFY |\
1050 KEY_CREATE_LINK) \
1051 & \
1052 (~SYNCHRONIZE))
1053
1054//
1055// Open/Create Options
1056//
1057
1058#define REG_OPTION_RESERVED (0x00000000L) // Parameter is reserved
1059
1060#define REG_OPTION_NON_VOLATILE (0x00000000L) // Key is preserved
1061 // when system is rebooted
1062
1063#define REG_OPTION_VOLATILE (0x00000001L) // Key is not preserved
1064 // when system is rebooted
1065
1066#define REG_OPTION_CREATE_LINK (0x00000002L) // Created key is a
1067 // symbolic link
1068
1069#define REG_OPTION_BACKUP_RESTORE (0x00000004L) // open for backup or restore
1070 // special access rules
1071 // privilege required
1072
1073#define REG_OPTION_OPEN_LINK (0x00000008L) // Open symbolic link
1074
1075#define REG_LEGAL_OPTION \
1076 (REG_OPTION_RESERVED |\
1077 REG_OPTION_NON_VOLATILE |\
1078 REG_OPTION_VOLATILE |\
1079 REG_OPTION_CREATE_LINK |\
1080 REG_OPTION_BACKUP_RESTORE |\
1081 REG_OPTION_OPEN_LINK)
1082
1083//
1084// Key creation/open disposition
1085//
1086
1087#define REG_CREATED_NEW_KEY (0x00000001L) // New Registry Key created
1088#define REG_OPENED_EXISTING_KEY (0x00000002L) // Existing Key opened
1089
1090//
1091// Key restore flags
1092//
1093
1094#define REG_WHOLE_HIVE_VOLATILE (0x00000001L) // Restore whole hive volatile
1095#define REG_REFRESH_HIVE (0x00000002L) // Unwind changes to last flush
1096#define REG_NO_LAZY_FLUSH (0x00000004L) // Never lazy flush this hive
1097
1098//
1099// Key query structures
1100//
1101
1106 WCHAR Name[1]; // Variable length string
1108
1115 WCHAR Name[1]; // Variable length string
1116// Class[1]; // Variable length string not declared
1118
1130 WCHAR Class[1]; // Variable length
1132
1138
1142
1146
1147//
1148// Value entry query structures
1149//
1150
1155 WCHAR Name[1]; // Variable size
1157
1164 WCHAR Name[1]; // Variable size
1165// Data[1]; // Variable size data not declared
1167
1172 UCHAR Data[1]; // Variable size
1174
1175typedef struct _KEY_VALUE_ENTRY {
1181
1187
1188
1191NTAPI
1194 IN ULONG Index,
1196 IN PVOID KeyInformation,
1197 IN ULONG Length,
1199 );
1200
1203NTAPI
1204NtOpenKey(
1208 );
1209
1212NTAPI
1217 IN PVOID KeyValueInformation,
1218 IN ULONG Length,
1220 );
1221
1224NTAPI
1229 IN ULONG Type,
1230 IN PVOID Data,
1232 );
1233
1236NTAPI
1240 );
1241
1242
1243#define OBJ_NAME_PATH_SEPARATOR ((WCHAR)L'\\')
1244
1245//
1246// Object Manager Object Type Specific Access Rights.
1247//
1248
1249#define OBJECT_TYPE_CREATE (0x0001)
1250
1251#define OBJECT_TYPE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1)
1252
1253//
1254// Object Manager Directory Specific Access Rights.
1255//
1256
1257#define DIRECTORY_QUERY (0x0001)
1258#define DIRECTORY_TRAVERSE (0x0002)
1259#define DIRECTORY_CREATE_OBJECT (0x0004)
1260#define DIRECTORY_CREATE_SUBDIRECTORY (0x0008)
1261
1262#define DIRECTORY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0xF)
1263
1264//
1265// Object Manager Symbolic Link Specific Access Rights.
1266//
1267
1268#define SYMBOLIC_LINK_QUERY (0x0001)
1269
1270#define SYMBOLIC_LINK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1)
1271
1275
1276//
1277// Section Information Structures.
1278//
1279
1280typedef enum _SECTION_INHERIT {
1282 ViewUnmap = 2
1284
1285//
1286// Section Access Rights.
1287//
1288
1289// begin_winnt
1290#define SECTION_QUERY 0x0001
1291#define SECTION_MAP_WRITE 0x0002
1292#define SECTION_MAP_READ 0x0004
1293#define SECTION_MAP_EXECUTE 0x0008
1294#define SECTION_EXTEND_SIZE 0x0010
1295
1296#define SECTION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SECTION_QUERY|\
1297 SECTION_MAP_WRITE | \
1298 SECTION_MAP_READ | \
1299 SECTION_MAP_EXECUTE | \
1300 SECTION_EXTEND_SIZE)
1301// end_winnt
1302
1303#define SEGMENT_ALL_ACCESS SECTION_ALL_ACCESS
1304
1305#define PAGE_NOACCESS 0x01 // winnt
1306#define PAGE_READONLY 0x02 // winnt
1307#define PAGE_READWRITE 0x04 // winnt
1308#define PAGE_WRITECOPY 0x08 // winnt
1309#define PAGE_EXECUTE 0x10 // winnt
1310#define PAGE_EXECUTE_READ 0x20 // winnt
1311#define PAGE_EXECUTE_READWRITE 0x40 // winnt
1312#define PAGE_EXECUTE_WRITECOPY 0x80 // winnt
1313#define PAGE_GUARD 0x100 // winnt
1314#define PAGE_NOCACHE 0x200 // winnt
1315
1316#define MEM_COMMIT 0x1000
1317#define MEM_RESERVE 0x2000
1318#define MEM_DECOMMIT 0x4000
1319#define MEM_RELEASE 0x8000
1320#define MEM_FREE 0x10000
1321#define MEM_PRIVATE 0x20000
1322#define MEM_MAPPED 0x40000
1323#define MEM_RESET 0x80000
1324#define MEM_TOP_DOWN 0x100000
1325#define MEM_LARGE_PAGES 0x20000000
1326#define SEC_RESERVE 0x4000000
1327#define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | \
1328 0xFFF)
1329
1330
1331#define MAXIMUM_PROCESSORS 32
1332
1333// end_winnt
1334
1335//
1336// Thread Specific Access Rights
1337//
1338
1339#define THREAD_TERMINATE (0x0001) // winnt
1340#define THREAD_SET_INFORMATION (0x0020) // winnt
1341
1342#define THREAD_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | \
1343 0x3FF)
1344
1345//
1346// ClientId
1347//
1348
1349typedef struct _CLIENT_ID {
1354
1355//
1356// Define the size of the 80387 save area, which is in the context frame.
1357//
1358
1359#define SIZE_OF_80387_REGISTERS 80
1360
1361//
1362// The following flags control the contents of the CONTEXT structure.
1363//
1364
1365#if !defined(RC_INVOKED)
1366
1367#define CONTEXT_i386 0x00010000 // this assumes that i386 and
1368#define CONTEXT_i486 0x00010000 // i486 have identical context records
1369
1370// end_wx86
1371
1372#define CONTEXT_CONTROL (CONTEXT_i386 | 0x00000001L) // SS:SP, CS:IP, FLAGS, BP
1373#define CONTEXT_INTEGER (CONTEXT_i386 | 0x00000002L) // AX, BX, CX, DX, SI, DI
1374#define CONTEXT_SEGMENTS (CONTEXT_i386 | 0x00000004L) // DS, ES, FS, GS
1375#define CONTEXT_FLOATING_POINT (CONTEXT_i386 | 0x00000008L) // 387 state
1376#define CONTEXT_DEBUG_REGISTERS (CONTEXT_i386 | 0x00000010L) // DB 0-3,6,7
1377
1378#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER |\
1379 CONTEXT_SEGMENTS)
1380
1381// begin_wx86
1382
1383#endif
1384
1385typedef struct _FLOATING_SAVE_AREA {
1396
1398
1399//
1400// Context Frame
1401//
1402// This frame has a several purposes: 1) it is used as an argument to
1403// NtContinue, 2) is is used to constuct a call frame for APC delivery,
1404// and 3) it is used in the user level thread creation routines.
1405//
1406// The layout of the record conforms to a standard call frame.
1407//
1408
1409typedef struct _CONTEXT {
1410
1411 //
1412 // The flags values within this flag control the contents of
1413 // a CONTEXT record.
1414 //
1415 // If the context record is used as an input parameter, then
1416 // for each portion of the context record controlled by a flag
1417 // whose value is set, it is assumed that that portion of the
1418 // context record contains valid context. If the context record
1419 // is being used to modify a threads context, then only that
1420 // portion of the threads context will be modified.
1421 //
1422 // If the context record is used as an IN OUT parameter to capture
1423 // the context of a thread, then only those portions of the thread's
1424 // context corresponding to set flags will be returned.
1425 //
1426 // The context record is never used as an OUT only parameter.
1427 //
1428
1430
1431 //
1432 // This section is specified/returned if CONTEXT_DEBUG_REGISTERS is
1433 // set in ContextFlags. Note that CONTEXT_DEBUG_REGISTERS is NOT
1434 // included in CONTEXT_FULL.
1435 //
1436
1443
1444 //
1445 // This section is specified/returned if the
1446 // ContextFlags word contians the flag CONTEXT_FLOATING_POINT.
1447 //
1448
1450
1451 //
1452 // This section is specified/returned if the
1453 // ContextFlags word contians the flag CONTEXT_SEGMENTS.
1454 //
1455
1460
1461 //
1462 // This section is specified/returned if the
1463 // ContextFlags word contians the flag CONTEXT_INTEGER.
1464 //
1465
1472
1473 //
1474 // This section is specified/returned if the
1475 // ContextFlags word contians the flag CONTEXT_CONTROL.
1476 //
1477
1480 ULONG SegCs; // MUST BE SANITIZED
1481 ULONG EFlags; // MUST BE SANITIZED
1484
1486
1487
1488
1490
1491//
1492// Predefined Value Types.
1493//
1494
1495#define REG_NONE ( 0 ) // No value type
1496#define REG_SZ ( 1 ) // Unicode nul terminated string
1497#define REG_EXPAND_SZ ( 2 ) // Unicode nul terminated string
1498 // (with environment variable references)
1499#define REG_BINARY ( 3 ) // Free form binary
1500#define REG_DWORD ( 4 ) // 32-bit number
1501#define REG_DWORD_LITTLE_ENDIAN ( 4 ) // 32-bit number (same as REG_DWORD)
1502#define REG_DWORD_BIG_ENDIAN ( 5 ) // 32-bit number
1503#define REG_LINK ( 6 ) // Symbolic Link (unicode)
1504#define REG_MULTI_SZ ( 7 ) // Multiple Unicode strings
1505#define REG_RESOURCE_LIST ( 8 ) // Resource list in the resource map
1506#define REG_FULL_RESOURCE_DESCRIPTOR ( 9 ) // Resource list in the hardware description
1507#define REG_RESOURCE_REQUIREMENTS_LIST ( 10 )
1508
1509/*
1510LONG
1511FASTCALL
1512InterlockedIncrement(
1513 IN PLONG Addend
1514 );
1515
1516LONG
1517FASTCALL
1518InterlockedDecrement(
1519 IN PLONG Addend
1520 );
1521
1522LONG
1523FASTCALL
1524InterlockedExchange(
1525 IN OUT PLONG Target,
1526 IN LONG Value
1527 );
1528
1529LONG
1530FASTCALL
1531InterlockedExchangeAdd(
1532 IN OUT PLONG Addend,
1533 IN LONG Increment
1534 );
1535
1536PVOID
1537FASTCALL
1538InterlockedCompareExchange(
1539 IN OUT PVOID *Destination,
1540 IN PVOID ExChange,
1541 IN PVOID Comperand
1542 );
1543*/
1544//
1545// Environment information, which includes command line and
1546// image file name
1547//
1548typedef struct {
1553
1554//
1555// This structure is passed as NtProcessStartup's parameter
1556//
1557typedef struct {
1561
1562//
1563// Data structure for heap definition. This includes various
1564// sizing parameters and callback routines, which, if left NULL,
1565// result in default behavior
1566//
1567typedef struct {
1571
1572//
1573// Native NT api function to write something to the boot-time
1574// blue screen
1575//
1577NTAPI
1580 );
1581
1582//
1583// Native applications must kill themselves when done - the job
1584// of this native API
1585//
1587NTAPI
1591 );
1592
1593//
1594// Thread start function
1595//
1596
1597typedef
1599(*PKSTART_ROUTINE) (
1600 IN PVOID StartContext
1601 );
1602
1603typedef struct StackInfo_t {
1610
1613NTAPI
1615 OUT PHANDLE phThread,
1619 OUT PCLIENT_ID pClientId,
1620 IN PCONTEXT pContext,
1621 OUT PSTACKINFO pStackInfo,
1622 IN BOOLEAN bSuspended
1623);
1624
1625/*NTSTATUS
1626PsCreateSystemThread(
1627 OUT PHANDLE ThreadHandle,
1628 IN ACCESS_MASK DesiredAccess,
1629 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
1630 IN HANDLE ProcessHandle OPTIONAL,
1631 OUT PCLIENT_ID ClientId OPTIONAL,
1632 IN PKSTART_ROUTINE StartRoutine,
1633 IN PVOID StartContext
1634 );
1635*/
1638 IN HANDLE ThreadHandle OPTIONAL,
1640 );
1641
1642/*
1643BOOLEAN
1644PsGetVersion(
1645 PULONG MajorVersion OPTIONAL,
1646 PULONG MinorVersion OPTIONAL,
1647 PULONG BuildNumber OPTIONAL,
1648 PUNICODE_STRING CSDVersion OPTIONAL
1649 );
1650
1651HANDLE
1652PsGetCurrentProcessId( VOID );
1653
1654HANDLE
1655PsGetCurrentThreadId( VOID );
1656*/
1657//
1658// Definition to represent current process
1659//
1660#define NtCurrentProcess() ( (HANDLE) -1 )
1661
1664 IN PVOID Base,
1667 );
1668
1669typedef struct _RTL_HEAP_PARAMETERS {
1682
1684PVOID
1685NTAPI
1687 IN ULONG Flags,
1693 );
1694
1695#define HEAP_NO_SERIALIZE 0x00000001 // winnt
1696#define HEAP_GROWABLE 0x00000002 // winnt
1697#define HEAP_GENERATE_EXCEPTIONS 0x00000004 // winnt
1698#define HEAP_ZERO_MEMORY 0x00000008 // winnt
1699#define HEAP_REALLOC_IN_PLACE_ONLY 0x00000010 // winnt
1700#define HEAP_TAIL_CHECKING_ENABLED 0x00000020 // winnt
1701#define HEAP_FREE_CHECKING_ENABLED 0x00000040 // winnt
1702#define HEAP_DISABLE_COALESCE_ON_FREE 0x00000080 // winnt
1703
1704#define HEAP_CREATE_ALIGN_16 0x00010000 // winnt Create heap with 16 byte alignment
1705#define HEAP_CREATE_ENABLE_TRACING 0x00020000 // winnt Create heap call tracing enabled
1706
1707#define HEAP_SETTABLE_USER_VALUE 0x00000100
1708#define HEAP_SETTABLE_USER_FLAG1 0x00000200
1709#define HEAP_SETTABLE_USER_FLAG2 0x00000400
1710#define HEAP_SETTABLE_USER_FLAG3 0x00000800
1711#define HEAP_SETTABLE_USER_FLAGS 0x00000E00
1712
1713#define HEAP_CLASS_0 0x00000000 // process heap
1714#define HEAP_CLASS_1 0x00001000 // private heap
1715#define HEAP_CLASS_2 0x00002000 // Kernel Heap
1716#define HEAP_CLASS_3 0x00003000 // GDI heap
1717#define HEAP_CLASS_4 0x00004000 // User heap
1718#define HEAP_CLASS_5 0x00005000 // Console heap
1719#define HEAP_CLASS_6 0x00006000 // User Desktop heap
1720#define HEAP_CLASS_7 0x00007000 // Csrss Shared heap
1721#define HEAP_CLASS_8 0x00008000 // Csr Port heap
1722#define HEAP_CLASS_MASK 0x0000F000
1723
1724#define HEAP_MAXIMUM_TAG 0x0FFF // winnt
1725#define HEAP_GLOBAL_TAG 0x0800
1726#define HEAP_PSEUDO_TAG_FLAG 0x8000 // winnt
1727#define HEAP_TAG_SHIFT 16 // winnt
1728#define HEAP_MAKE_TAG_FLAGS( b, o ) ((ULONG)((b) + ((o) << 16))) // winnt
1729#define HEAP_TAG_MASK (HEAP_MAXIMUM_TAG << HEAP_TAG_SHIFT)
1730
1731#define HEAP_CREATE_VALID_MASK (HEAP_NO_SERIALIZE | \
1732 HEAP_GROWABLE | \
1733 HEAP_GENERATE_EXCEPTIONS | \
1734 HEAP_ZERO_MEMORY | \
1735 HEAP_REALLOC_IN_PLACE_ONLY | \
1736 HEAP_TAIL_CHECKING_ENABLED | \
1737 HEAP_FREE_CHECKING_ENABLED | \
1738 HEAP_DISABLE_COALESCE_ON_FREE | \
1739 HEAP_CLASS_MASK | \
1740 HEAP_CREATE_ALIGN_16 | \
1741 HEAP_CREATE_ENABLE_TRACING)
1742
1744PVOID
1745NTAPI
1747 IN PVOID HeapHandle
1748 );
1749
1750//
1751// Heap allocation function (ala "malloc")
1752//
1753PVOID
1754NTAPI
1756 HANDLE Heap,
1757 ULONG Flags,
1758 ULONG Size
1759 );
1760
1761//
1762// Heap free function (ala "free")
1763//
1764BOOLEAN
1765NTAPI
1767 HANDLE Heap,
1768 ULONG Flags,
1770 );
1771
1772
1774NTAPI
1787 );
1788
1791NTAPI
1793 OUT PHANDLE phFile,
1796 OUT PIO_STATUS_BLOCK pIoStatusBlock,
1797 IN ULONG ShareMode,
1798 IN ULONG OpenMode
1799);
1800
1803NTAPI
1805 IN HANDLE hFile,
1807 IN PIO_APC_ROUTINE IoApcRoutine OPTIONAL,
1808 IN PVOID IoApcContext OPTIONAL,
1809 OUT PIO_STATUS_BLOCK pIoStatusBlock,
1810 IN ULONG DeviceIoControlCode,
1811 IN PVOID InBuffer OPTIONAL,
1812 IN ULONG InBufferLength,
1815);
1816
1819NTAPI
1821 IN HANDLE hFile,
1823 IN PIO_APC_ROUTINE IoApcRoutine OPTIONAL,
1824 IN PVOID IoApcContext OPTIONAL,
1825 OUT PIO_STATUS_BLOCK pIoStatusBlock,
1826 IN ULONG DeviceIoControlCode,
1827 IN PVOID InBuffer OPTIONAL,
1828 IN ULONG InBufferLength,
1831);
1832
1835NTAPI
1837 IN HANDLE hFile,
1839 IN PIO_APC_ROUTINE IoApcRoutine OPTIONAL,
1840 IN PVOID IoApcContext OPTIONAL,
1841 OUT PIO_STATUS_BLOCK pIoStatusBlock,
1843 IN ULONG ReadBufferLength,
1845 IN PULONG LockOperationKey
1846);
1847
1850NTAPI
1852 IN HANDLE hFile,
1854 IN PIO_APC_ROUTINE IoApcRoutine OPTIONAL,
1855 IN PVOID IoApcContext OPTIONAL,
1856 OUT PIO_STATUS_BLOCK pIoStatusBlock,
1858 IN ULONG WriteBufferLength,
1860 IN PULONG LockOperationKey OPTIONAL
1861);
1862
1865NTAPI
1867 IN HANDLE hFile,
1868 OUT PIO_STATUS_BLOCK pIoStatusBlock,
1869 OUT PVOID FileInformationBuffer,
1870 IN ULONG FileInformationBufferLength,
1871 IN FILE_INFORMATION_CLASS FileInfoClass
1872);
1873
1876NTAPI
1878 IN HANDLE hFile,
1879 OUT PIO_STATUS_BLOCK pIoStatusBlock,
1880 IN PVOID FileInformationBuffer,
1881 IN ULONG FileInformationBufferLength,
1882 IN FILE_INFORMATION_CLASS FileInfoClass
1883);
1884
1886NTAPI
1887NtClose(
1889 );
1890
1893NTAPI
1895 IN HANDLE hObject,
1896 IN BOOLEAN bAlertable,
1898);
1899
1901NTAPI
1904 IN PLARGE_INTEGER DelayInterval
1905 );
1906
1907#ifdef __cplusplus
1908};
1909#endif //__cplusplus
1910
1911#endif //__NT_NATIVE_DEFS__H__
unsigned char BOOLEAN
Type
Definition: Type.h:7
#define VOID
Definition: acefi.h:82
ACPI_BUFFER *RetBuffer ACPI_BUFFER *RetBuffer char ACPI_WALK_RESOURCE_CALLBACK void *Context ACPI_BUFFER *RetBuffer UINT16 ACPI_RESOURCE **ResourcePtr ACPI_GENERIC_ADDRESS *Reg UINT32 *ReturnValue UINT8 UINT8 *Slp_TypB ACPI_PHYSICAL_ADDRESS PhysicalAddress64 UINT32 UINT32 *TimeElapsed UINT32 LineNumber
Definition: acpixf.h:1220
#define WriteBuffer(BaseIoAddress, Buffer, Count)
Definition: atapi.h:344
#define ReadBuffer(BaseIoAddress, Buffer, Count)
Definition: atapi.h:339
LONG NTSTATUS
Definition: precomp.h:26
#define NTSYSAPI
Definition: ntoskrnl.h:12
_In_ PFCB _In_ LONGLONG FileOffset
Definition: cdprocs.h:160
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
Definition: conport.c:36
#define NTSTATUS
Definition: precomp.h:19
static const WCHAR Message[]
Definition: register.c:74
@ AnsiString
Definition: dnslib.h:19
void Fill(HDC hdc, LONG x, LONG y, COLORREF color)
Definition: drawing.cpp:107
_In_ PIO_STACK_LOCATION _Inout_ PFILE_OBJECT _Inout_ PVCB _Outptr_result_maybenull_ PDCB _In_ PDCB _In_ PDIRENT _In_ ULONG _In_ ULONG _In_ PUNICODE_STRING _In_ PACCESS_MASK _In_ USHORT ShareAccess
Definition: create.c:4148
#define RtlCompareMemory(s1, s2, l)
Definition: env_spec_w32.h:465
IN PVCB IN PDIRENT OUT PULONG EaLength
Definition: fatprocs.h:879
IN PFCB IN PFILE_OBJECT FileObject IN ULONG AllocationSize
Definition: fatprocs.h:323
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE _In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER _In_ ULONG FileAttributes
Definition: fltkernel.h:1236
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE FileHandle
Definition: fltkernel.h:1231
_FILE_INFORMATION_CLASS
Definition: from_kernel.h:61
enum _FILE_INFORMATION_CLASS FILE_INFORMATION_CLASS
Definition: directory.c:44
_FSINFOCLASS
Definition: from_kernel.h:218
ULONG Handle
Definition: gdb_input.c:15
_In_ GUID _In_ PVOID ValueData
Definition: hubbusif.h:312
@ Unknown
Definition: i8042prt.h:114
#define RtlFillMemory(Dest, Length, Fill)
Definition: winternl.h:601
RTL_HEAP_COMMIT_ROUTINE * PRTL_HEAP_COMMIT_ROUTINE
Definition: winternl.h:2787
#define RtlEqualMemory(dst, src, len)
Definition: kdvm.h:18
_In_ BOOL _In_ HANDLE hProcess
Definition: mapping.h:71
static HANDLE hEvent
Definition: comm.c:54
static ACCESS_MASK const OBJECT_ATTRIBUTES ULONG TitleIndex
Definition: reg.c:131
static PLARGE_INTEGER Time
Definition: time.c:105
static PTIME_FIELDS TimeFields
Definition: time.c:104
_In_ HANDLE hFile
Definition: mswsock.h:90
_In_ NDIS_STATUS _In_ ULONG _In_ USHORT _In_opt_ PVOID _In_ ULONG DataSize
Definition: ndis.h:4755
_In_ UINT _In_ UINT _In_ PNDIS_PACKET Source
Definition: ndis.h:3169
_Must_inspect_result_ _Out_ PNDIS_STATUS _In_ NDIS_HANDLE _In_ ULONG _Out_ PNDIS_STRING _Out_ PNDIS_HANDLE KeyHandle
Definition: ndis.h:4715
_In_ ULONG _In_ KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass
Definition: cmfuncs.h:94
_In_ PVOID _In_ BOOLEAN Alertable
Definition: exfuncs.h:453
_In_ ACCESS_MASK AccessMask
Definition: exfuncs.h:186
_In_opt_ HANDLE _In_opt_ PIO_APC_ROUTINE _In_opt_ PVOID ApcContext
Definition: iofuncs.h:727
_In_ HANDLE ProcessHandle
Definition: mmfuncs.h:403
_In_ HANDLE _Outptr_result_bytebuffer_ ViewSize PVOID _In_ ULONG_PTR _In_ SIZE_T CommitSize
Definition: mmfuncs.h:406
_In_ NTSTATUS ExitStatus
Definition: psfuncs.h:867
_In_ const STRING * String2
Definition: rtlfuncs.h:2404
_Out_ _Inout_ POEM_STRING _In_ PCUNICODE_STRING SourceString
Definition: rtlfuncs.h:1957
_In_ const STRING _In_ BOOLEAN CaseInSensitive
Definition: rtlfuncs.h:2437
_In_ PCWSTR _Inout_ _At_ QueryTable EntryContext
Definition: rtlfuncs.h:4210
_In_ PSID _In_ BOOLEAN AllocateDestinationString
Definition: rtlfuncs.h:1381
_In_ PUNICODE_STRING _Inout_ PUNICODE_STRING Destination
Definition: rtlfuncs.h:3051
_In_opt_ ULONG Base
Definition: rtlfuncs.h:2486
_Out_ _Inout_ POEM_STRING DestinationString
Definition: rtlfuncs.h:1956
NTSYSAPI PVOID NTAPI RtlDestroyHeap(IN PVOID HeapHandle)
struct STARTUP_ARGUMENT * PSTARTUP_ARGUMENT
NTSYSAPI VOID NTAPI RtlCopyUnicodeString(PUNICODE_STRING DestinationString, PUNICODE_STRING SourceString)
struct _KEY_VALUE_BASIC_INFORMATION KEY_VALUE_BASIC_INFORMATION
struct _FILE_FULL_EA_INFORMATION * PFILE_FULL_EA_INFORMATION
struct _KTHREAD * PKTHREAD
Definition: nt_native.h:28
struct _TIME_FIELDS TIME_FIELDS
NTSYSAPI NTSTATUS NTAPI NtOpenFile(OUT PHANDLE phFile, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PIO_STATUS_BLOCK pIoStatusBlock, IN ULONG ShareMode, IN ULONG OpenMode)
Definition: file.c:3953
@ FilePositionInformation
Definition: nt_native.h:907
@ FileMoveClusterInformation
Definition: nt_native.h:924
@ FileInheritContentIndexInformation
Definition: nt_native.h:932
@ FilePipeLocalInformation
Definition: nt_native.h:917
@ FileMaximumInformation
Definition: nt_native.h:934
@ FileEndOfFileInformation
Definition: nt_native.h:913
@ FileNameInformation
Definition: nt_native.h:902
@ FileOleAllInformation
Definition: nt_native.h:929
@ FileCompressionInformation
Definition: nt_native.h:921
@ FileOleDirectoryInformation
Definition: nt_native.h:930
@ FileRenameInformation
Definition: nt_native.h:903
@ FileAllInformation
Definition: nt_native.h:911
@ FilePipeRemoteInformation
Definition: nt_native.h:918
@ FileOleInformation
Definition: nt_native.h:933
@ FileLinkInformation
Definition: nt_native.h:904
@ FileInternalInformation
Definition: nt_native.h:899
@ FileStandardInformation
Definition: nt_native.h:898
@ FileDirectoryInformation
Definition: nt_native.h:894
@ FileContentIndexInformation
Definition: nt_native.h:931
@ FileOleStateBitsInformation
Definition: nt_native.h:926
@ FileAlignmentInformation
Definition: nt_native.h:910
@ FileObjectIdInformation
Definition: nt_native.h:928
@ FileEaInformation
Definition: nt_native.h:900
@ FilePipeInformation
Definition: nt_native.h:916
@ FileAlternateNameInformation
Definition: nt_native.h:914
@ FileCopyOnWriteInformation
Definition: nt_native.h:922
@ FileNamesInformation
Definition: nt_native.h:905
@ FileMailslotSetInformation
Definition: nt_native.h:920
@ FileMailslotQueryInformation
Definition: nt_native.h:919
@ FileAllocationInformation
Definition: nt_native.h:912
@ FileCompletionInformation
Definition: nt_native.h:923
@ FileAccessInformation
Definition: nt_native.h:901
@ FileFullDirectoryInformation
Definition: nt_native.h:895
@ FileOleClassIdInformation
Definition: nt_native.h:925
@ FileNetworkOpenInformation
Definition: nt_native.h:927
@ FileStreamInformation
Definition: nt_native.h:915
@ FileModeInformation
Definition: nt_native.h:909
@ FileBasicInformation
Definition: nt_native.h:897
@ FileDispositionInformation
Definition: nt_native.h:906
@ FileFullEaInformation
Definition: nt_native.h:908
@ FileBothDirectoryInformation
Definition: nt_native.h:896
NTSYSAPI NTSTATUS NTAPI RtlUnicodeStringToAnsiString(PANSI_STRING DestinationString, PUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString)
TIME_FIELDS * PTIME_FIELDS
Definition: nt_native.h:536
NTSYSAPI NTSTATUS NTAPI NtOpenKey(OUT PHANDLE KeyHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes)
Definition: ntapi.c:336
enum _FSINFOCLASS * PFS_INFORMATION_CLASS
NTSYSAPI NTSTATUS NTAPI NtReadFile(IN HANDLE hFile, IN HANDLE hEvent OPTIONAL, IN PIO_APC_ROUTINE IoApcRoutine OPTIONAL, IN PVOID IoApcContext OPTIONAL, OUT PIO_STATUS_BLOCK pIoStatusBlock, OUT PVOID ReadBuffer, IN ULONG ReadBufferLength, IN PLARGE_INTEGER FileOffset OPTIONAL, IN PULONG LockOperationKey)
NTSYSAPI LONG NTAPI RtlCompareUnicodeString(PUNICODE_STRING String1, PUNICODE_STRING String2, BOOLEAN CaseInSensitive)
Definition: string_lib.cpp:31
struct _FILE_NETWORK_OPEN_INFORMATION FILE_NETWORK_OPEN_INFORMATION
NTSTATUS NTAPI NtDisplayString(PUNICODE_STRING String)
NTSYSAPI BOOLEAN NTAPI RtlTimeFieldsToTime(PTIME_FIELDS TimeFields, PLARGE_INTEGER Time)
NTSYSAPI NTSTATUS NTAPI NtSetValueKey(IN HANDLE KeyHandle, IN PUNICODE_STRING ValueName, IN ULONG TitleIndex OPTIONAL, IN ULONG Type, IN PVOID Data, IN ULONG DataSize)
Definition: ntapi.c:859
struct _KEY_VALUE_FULL_INFORMATION KEY_VALUE_FULL_INFORMATION
_KEY_INFORMATION_CLASS
Definition: nt_native.h:1133
@ KeyBasicInformation
Definition: nt_native.h:1134
@ KeyNodeInformation
Definition: nt_native.h:1135
@ KeyFullInformation
Definition: nt_native.h:1136
struct _KEY_NODE_INFORMATION * PKEY_NODE_INFORMATION
struct _PEB * PPEB
Definition: nt_native.h:31
enum _FILE_INFORMATION_CLASS * PFILE_INFORMATION_CLASS
NTSYSAPI VOID NTAPI RtlFreeAnsiString(PANSI_STRING AnsiString)
#define NLS_MB_OEM_CODE_PAGE_TAG
Definition: nt_native.h:213
struct _CONTEXT CONTEXT
struct _CALLBACK_OBJECT * PCALLBACK_OBJECT
Definition: nt_native.h:35
FLOATING_SAVE_AREA * PFLOATING_SAVE_AREA
Definition: nt_native.h:1397
_KEY_VALUE_INFORMATION_CLASS
Definition: nt_native.h:1182
@ KeyValueBasicInformation
Definition: nt_native.h:1183
@ KeyValuePartialInformation
Definition: nt_native.h:1185
@ KeyValueFullInformation
Definition: nt_native.h:1184
enum _KEY_SET_INFORMATION_CLASS KEY_SET_INFORMATION_CLASS
NTSYSAPI NTSTATUS NTAPI RtlAppendUnicodeStringToString(PUNICODE_STRING Destination, PUNICODE_STRING Source)
struct _FILE_BASIC_INFORMATION FILE_BASIC_INFORMATION
struct StackInfo_t * PSTACKINFO
NTSYSAPI VOID NTAPI RtlInitString(PSTRING DestinationString, PCSZ SourceString)
ULONG ACCESS_MASK
Definition: nt_native.h:40
struct _FILE_STANDARD_INFORMATION * PFILE_STANDARD_INFORMATION
struct _FILE_NETWORK_OPEN_INFORMATION * PFILE_NETWORK_OPEN_INFORMATION
struct _CLIENT_ID CLIENT_ID
NTSYSAPI NTSTATUS NTAPI NtWriteFile(IN HANDLE hFile, IN HANDLE hEvent OPTIONAL, IN PIO_APC_ROUTINE IoApcRoutine OPTIONAL, IN PVOID IoApcContext OPTIONAL, OUT PIO_STATUS_BLOCK pIoStatusBlock, IN PVOID WriteBuffer, IN ULONG WriteBufferLength, IN PLARGE_INTEGER FileOffset OPTIONAL, IN PULONG LockOperationKey OPTIONAL)
NTSYSAPI VOID NTAPI RtlCopyString(PSTRING DestinationString, PSTRING SourceString)
struct _DEVICE_HANDLER_OBJECT * PDEVICE_HANDLER_OBJECT
Definition: nt_native.h:36
NTSTATUS NtTerminateThread(IN HANDLE ThreadHandle OPTIONAL, IN NTSTATUS ExitStatus)
Definition: kill.c:1279
struct _FLOATING_SAVE_AREA FLOATING_SAVE_AREA
NTSYSAPI NTSTATUS NTAPI NtDeleteValueKey(IN HANDLE KeyHandle, IN PUNICODE_STRING ValueName)
Definition: ntapi.c:1014
CONTEXT * PCONTEXT
Definition: nt_native.h:1489
ACCESS_MASK * PACCESS_MASK
Definition: nt_native.h:41
struct _KEY_BASIC_INFORMATION KEY_BASIC_INFORMATION
struct _GENERIC_MAPPING GENERIC_MAPPING
enum _FILE_INFORMATION_CLASS FILE_INFORMATION_CLASS
NTSYSAPI CHAR NTAPI RtlUpperChar(CHAR Character)
struct _FILE_FS_DEVICE_INFORMATION * PFILE_FS_DEVICE_INFORMATION
NTSYSAPI NTSTATUS NTAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING DestinationString, PANSI_STRING SourceString, BOOLEAN AllocateDestinationString)
struct _RTL_QUERY_REGISTRY_TABLE * PRTL_QUERY_REGISTRY_TABLE
Definition: reg.c:122
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
struct _KINTERRUPT * PKINTERRUPT
Definition: nt_native.h:32
struct _KEY_VALUE_ENTRY KEY_VALUE_ENTRY
struct _IO_STATUS_BLOCK IO_STATUS_BLOCK
NTSYSAPI BOOLEAN NTAPI RtlEqualUnicodeString(PUNICODE_STRING String1, PUNICODE_STRING String2, BOOLEAN CaseInSensitive)
struct _KEY_NODE_INFORMATION KEY_NODE_INFORMATION
struct _KEY_WRITE_TIME_INFORMATION KEY_WRITE_TIME_INFORMATION
NTSYSAPI PVOID NTAPI RtlCreateHeap(IN ULONG Flags, IN PVOID HeapBase OPTIONAL, IN ULONG ReserveSize OPTIONAL, IN ULONG CommitSize OPTIONAL, IN PVOID Lock OPTIONAL, IN PRTL_HEAP_PARAMETERS Parameters OPTIONAL)
struct _KEY_BASIC_INFORMATION * PKEY_BASIC_INFORMATION
NTSTATUS NTAPI NtTerminateProcess(HANDLE ProcessHandle, LONG ExitStatus)
NTSYSAPI NTSTATUS NTAPI NtSetInformationFile(IN HANDLE hFile, OUT PIO_STATUS_BLOCK pIoStatusBlock, IN PVOID FileInformationBuffer, IN ULONG FileInformationBufferLength, IN FILE_INFORMATION_CLASS FileInfoClass)
Definition: iofunc.c:3096
NTSYSAPI NTSTATUS NTAPI NtQueryValueKey(IN HANDLE KeyHandle, IN PUNICODE_STRING ValueName, IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass, IN PVOID KeyValueInformation, IN ULONG Length, IN PULONG ResultLength)
NTSYSAPI NTSTATUS NTAPI NtQueryInformationFile(IN HANDLE hFile, OUT PIO_STATUS_BLOCK pIoStatusBlock, OUT PVOID FileInformationBuffer, IN ULONG FileInformationBufferLength, IN FILE_INFORMATION_CLASS FileInfoClass)
NTSYSAPI NTSTATUS NTAPI RtlUnicodeStringToInteger(PUNICODE_STRING String, ULONG Base, PULONG Value)
struct _KEY_VALUE_ENTRY * PKEY_VALUE_ENTRY
struct _FILE_FS_DEVICE_INFORMATION FILE_FS_DEVICE_INFORMATION
struct _FILE_POSITION_INFORMATION FILE_POSITION_INFORMATION
struct _IO_STATUS_BLOCK * PIO_STATUS_BLOCK
struct _KEY_FULL_INFORMATION KEY_FULL_INFORMATION
struct StackInfo_t STACKINFO
enum _SECTION_INHERIT SECTION_INHERIT
struct _OBJECT_NAME_INFORMATION OBJECT_NAME_INFORMATION
NTSYSAPI NTSTATUS NTAPI NtDeviceIoControlFile(IN HANDLE hFile, IN HANDLE hEvent OPTIONAL, IN PIO_APC_ROUTINE IoApcRoutine OPTIONAL, IN PVOID IoApcContext OPTIONAL, OUT PIO_STATUS_BLOCK pIoStatusBlock, IN ULONG DeviceIoControlCode, IN PVOID InBuffer OPTIONAL, IN ULONG InBufferLength, OUT PVOID OutBuffer OPTIONAL, IN ULONG OutBufferLength)
struct RTL_HEAP_DEFINITION * PRTL_HEAP_DEFINITION
struct _FILE_END_OF_FILE_INFORMATION * PFILE_END_OF_FILE_INFORMATION
NTSYSAPI VOID NTAPI RtlCopyMemory32(VOID UNALIGNED *Destination, CONST VOID UNALIGNED *Source, ULONG Length)
_KEY_SET_INFORMATION_CLASS
Definition: nt_native.h:1143
@ KeyWriteTimeInformation
Definition: nt_native.h:1144
struct _OBJECT_NAME_INFORMATION * POBJECT_NAME_INFORMATION
struct _FILE_BASIC_INFORMATION * PFILE_BASIC_INFORMATION
struct _FILE_DISPOSITION_INFORMATION FILE_DISPOSITION_INFORMATION
struct _FILE_ALIGNMENT_INFORMATION FILE_ALIGNMENT_INFORMATION
struct _BUS_HANDLER * PBUS_HANDLER
Definition: nt_native.h:37
@ FileFsControlInformation
Definition: nt_native.h:1004
@ FileFsDeviceInformation
Definition: nt_native.h:1002
@ FileFsLabelInformation
Definition: nt_native.h:1000
@ FileFsQuotaSetInformation
Definition: nt_native.h:1006
@ FileFsAttributeInformation
Definition: nt_native.h:1003
@ FileFsVolumeInformation
Definition: nt_native.h:999
@ FileFsSizeInformation
Definition: nt_native.h:1001
@ FileFsMaximumInformation
Definition: nt_native.h:1007
@ FileFsQuotaQueryInformation
Definition: nt_native.h:1005
struct _KEY_VALUE_PARTIAL_INFORMATION KEY_VALUE_PARTIAL_INFORMATION
struct _EPROCESS * PEPROCESS
Definition: nt_native.h:30
_SECTION_INHERIT
Definition: nt_native.h:1280
@ ViewUnmap
Definition: nt_native.h:1282
@ ViewShare
Definition: nt_native.h:1281
enum _KEY_VALUE_INFORMATION_CLASS KEY_VALUE_INFORMATION_CLASS
Definition: reg.c:135
NTSYSAPI NTSTATUS NTAPI NtEnumerateKey(IN HANDLE KeyHandle, IN ULONG Index, IN KEY_INFORMATION_CLASS KeyInformationClass, IN PVOID KeyInformation, IN ULONG Length, IN PULONG ResultLength)
NTSTATUS NTAPI NtDelayExecution(IN BOOLEAN Alertable, IN PLARGE_INTEGER DelayInterval)
Definition: wait.c:876
NTSYSAPI VOID NTAPI RtlTimeToTimeFields(PLARGE_INTEGER Time, PTIME_FIELDS TimeFields)
NTSYSAPI NTSTATUS NTAPI RtlIntegerToUnicodeString(ULONG Value, ULONG Base, PUNICODE_STRING String)
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
Definition: obhandle.c:3402
struct ENVIRONMENT_INFORMATION * PENVIRONMENT_INFORMATION
struct _OBJECT_TYPE * POBJECT_TYPE
Definition: nt_native.h:34
enum _KEY_INFORMATION_CLASS KEY_INFORMATION_CLASS
NTSYSAPI LONG NTAPI RtlCompareString(PSTRING String1, PSTRING String2, BOOLEAN CaseInSensitive)
struct _FILE_ALIGNMENT_INFORMATION * PFILE_ALIGNMENT_INFORMATION
struct _KEY_WRITE_TIME_INFORMATION * PKEY_WRITE_TIME_INFORMATION
BOOLEAN NTAPI RtlFreeHeap(HANDLE Heap, ULONG Flags, PVOID Address)
Definition: heap.c:2286
struct _KEY_VALUE_PARTIAL_INFORMATION * PKEY_VALUE_PARTIAL_INFORMATION
struct _KEY_VALUE_BASIC_INFORMATION * PKEY_VALUE_BASIC_INFORMATION
GENERIC_MAPPING * PGENERIC_MAPPING
Definition: nt_native.h:570
NTSYSAPI NTSTATUS NTAPI RtlAppendUnicodeToString(PUNICODE_STRING Destination, PWSTR Source)
struct _ETHREAD * PETHREAD
Definition: nt_native.h:29
struct _FILE_STANDARD_INFORMATION FILE_STANDARD_INFORMATION
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
struct _RTL_HEAP_PARAMETERS * PRTL_HEAP_PARAMETERS
CLIENT_ID * PCLIENT_ID
Definition: nt_native.h:1353
NTSYSAPI BOOLEAN NTAPI RtlEqualString(PSTRING String1, PSTRING String2, BOOLEAN CaseInSensitive)
NTSYSAPI BOOLEAN NTAPI RtlPrefixUnicodeString(IN PUNICODE_STRING String1, IN PUNICODE_STRING String2, IN BOOLEAN CaseInSensitive)
PVOID NTAPI RtlAllocateHeap(HANDLE Heap, ULONG Flags, ULONG Size)
enum _FSINFOCLASS FS_INFORMATION_CLASS
struct _RTL_QUERY_REGISTRY_TABLE RTL_QUERY_REGISTRY_TABLE
struct _FILE_DISPOSITION_INFORMATION * PFILE_DISPOSITION_INFORMATION
struct _KEY_FULL_INFORMATION * PKEY_FULL_INFORMATION
NTSYSAPI NTSTATUS NTAPI RtlUpcaseUnicodeString(PUNICODE_STRING DestinationString, PUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString)
Definition: string_lib.cpp:46
struct _FILE_POSITION_INFORMATION * PFILE_POSITION_INFORMATION
NTSYSAPI NTSTATUS NTAPI NtWaitForSingleObject(IN HANDLE hObject, IN BOOLEAN bAlertable, IN PLARGE_INTEGER Timeout)
struct _FILE_FULL_EA_INFORMATION FILE_FULL_EA_INFORMATION
NTSTATUS NTAPI NtCreateFile(OUT PHANDLE FileHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PIO_STATUS_BLOCK IoStatusBlock, IN PLARGE_INTEGER AllocationSize OPTIONAL, IN ULONG FileAttributes, IN ULONG ShareAccess, IN ULONG CreateDisposition, IN ULONG CreateOptions, IN PVOID EaBuffer OPTIONAL, IN ULONG EaLength)
NTSYSAPI NTSTATUS NTAPI NtCreateThread(OUT PHANDLE phThread, IN ACCESS_MASK AccessMask, IN POBJECT_ATTRIBUTES ObjectAttributes, IN HANDLE hProcess, OUT PCLIENT_ID pClientId, IN PCONTEXT pContext, OUT PSTACKINFO pStackInfo, IN BOOLEAN bSuspended)
#define SIZE_OF_80387_REGISTERS
Definition: nt_native.h:1359
NTSYSAPI VOID NTAPI RtlUpperString(PSTRING DestinationString, PSTRING SourceString)
NTSYSAPI VOID NTAPI RtlInitAnsiString(PANSI_STRING DestinationString, PCSZ SourceString)
NTSYSAPI NTSTATUS NTAPI NtFsControlFile(IN HANDLE hFile, IN HANDLE hEvent OPTIONAL, IN PIO_APC_ROUTINE IoApcRoutine OPTIONAL, IN PVOID IoApcContext OPTIONAL, OUT PIO_STATUS_BLOCK pIoStatusBlock, IN ULONG DeviceIoControlCode, IN PVOID InBuffer OPTIONAL, IN ULONG InBufferLength, OUT PVOID OutBuffer OPTIONAL, IN ULONG OutBufferLength)
struct _IO_TIMER * PIO_TIMER
Definition: nt_native.h:33
VOID(* PIO_APC_ROUTINE)(IN PVOID ApcContext, IN PIO_STATUS_BLOCK IoStatusBlock, IN ULONG Reserved)
Definition: nt_native.h:880
struct _KEY_VALUE_FULL_INFORMATION * PKEY_VALUE_FULL_INFORMATION
NTSYSAPI NTSTATUS NTAPI RtlCharToInteger(PCSZ String, ULONG Base, PULONG Value)
Definition: unicode.c:261
NTSYSAPI ULONG NTAPI RtlxAnsiStringToUnicodeSize(PANSI_STRING AnsiString)
struct _FILE_END_OF_FILE_INFORMATION FILE_END_OF_FILE_INFORMATION
#define NLS_MB_CODE_PAGE_TAG
Definition: nt_native.h:212
struct _RTL_HEAP_PARAMETERS RTL_HEAP_PARAMETERS
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:102
static OUT PIO_STATUS_BLOCK IoStatusBlock
Definition: pipe.c:75
PVOID *typedef PHANDLE
Definition: ntsecpkg.h:455
#define UNALIGNED
Definition: pecoff.h:227
#define CONST
Definition: pedump.c:81
long LONG
Definition: pedump.c:60
unsigned short USHORT
Definition: pedump.c:61
static WCHAR Address[46]
Definition: ping.c:68
static ULONG Timeout
Definition: ping.c:61
VOID NTAPI RtlAssert(IN PVOID FailedAssertion, IN PVOID FileName, IN ULONG LineNumber, IN PCHAR Message OPTIONAL)
Definition: rtlcompat.c:68
_In_ UCHAR _In_ ULONG _Out_ PUCHAR _Outptr_result_bytebuffer_ OutBufferLength PVOID * OutBuffer
Definition: scsi.h:4117
_In_ UCHAR _In_ UCHAR OutBufferLength
Definition: scsi.h:4062
PULONG MinorVersion OPTIONAL
Definition: CrossNt.h:68
UNICODE_STRING CommandLine
Definition: nt_native.h:1550
UNICODE_STRING ImageFile
Definition: nt_native.h:1551
PENVIRONMENT_INFORMATION Environment
Definition: nt_native.h:1559
ULONG BottomOfStack
Definition: nt_native.h:1608
ULONG TopOfStack
Definition: nt_native.h:1606
ULONG OnePageBelowTopOfStack
Definition: nt_native.h:1607
ULONG Unknown2
Definition: nt_native.h:1605
ULONG Unknown1
Definition: nt_native.h:1604
HANDLE UniqueThread
Definition: compat.h:826
HANDLE UniqueProcess
Definition: compat.h:825
ULONG Esp
Definition: nt_native.h:1482
ULONG SegFs
Definition: nt_native.h:1457
ULONG Dr3
Definition: nt_native.h:1440
ULONG Dr1
Definition: nt_native.h:1438
ULONG Edx
Definition: nt_native.h:1469
ULONG Esi
Definition: nt_native.h:1467
ULONG Ebp
Definition: nt_native.h:1478
ULONG ContextFlags
Definition: nt_native.h:1429
ULONG Dr6
Definition: nt_native.h:1441
ULONG SegSs
Definition: nt_native.h:1483
ULONG Ecx
Definition: nt_native.h:1470
ULONG Dr0
Definition: nt_native.h:1437
ULONG Eip
Definition: nt_native.h:1479
ULONG SegCs
Definition: nt_native.h:1480
ULONG SegDs
Definition: nt_native.h:1459
ULONG EFlags
Definition: nt_native.h:1481
ULONG SegGs
Definition: nt_native.h:1456
ULONG Dr2
Definition: nt_native.h:1439
ULONG Eax
Definition: nt_native.h:1471
FLOATING_SAVE_AREA FloatSave
Definition: nt_native.h:1449
ULONG SegEs
Definition: nt_native.h:1458
ULONG Ebx
Definition: nt_native.h:1468
ULONG Edi
Definition: nt_native.h:1466
ULONG Dr7
Definition: nt_native.h:1442
LARGE_INTEGER LastWriteTime
Definition: nt_native.h:944
LARGE_INTEGER CreationTime
Definition: nt_native.h:942
LARGE_INTEGER ChangeTime
Definition: nt_native.h:945
LARGE_INTEGER LastAccessTime
Definition: nt_native.h:943
LARGE_INTEGER CurrentByteOffset
Definition: nt_native.h:958
LARGE_INTEGER AllocationSize
Definition: propsheet.cpp:54
UCHAR RegisterArea[SIZE_OF_80387_REGISTERS]
Definition: nt_native.h:1393
ACCESS_MASK GenericExecute
Definition: nt_native.h:567
ACCESS_MASK GenericRead
Definition: nt_native.h:565
ACCESS_MASK GenericAll
Definition: nt_native.h:568
ACCESS_MASK GenericWrite
Definition: nt_native.h:566
NTSTATUS Status
Definition: nt_native.h:867
LARGE_INTEGER LastWriteTime
Definition: nt_native.h:1103
LARGE_INTEGER LastWriteTime
Definition: nt_native.h:1120
LARGE_INTEGER LastWriteTime
Definition: nt_native.h:1110
Definition: nt_native.h:1175
PUNICODE_STRING ValueName
Definition: nt_native.h:1176
ULONG DataLength
Definition: nt_native.h:1177
ULONG DataOffset
Definition: nt_native.h:1178
ULONG Type
Definition: nt_native.h:1179
LARGE_INTEGER LastWriteTime
Definition: nt_native.h:1140
UNICODE_STRING Name
Definition: nt_native.h:1273
ULONG DeCommitFreeBlockThreshold
Definition: nt_native.h:1673
ULONG VirtualMemoryThreshold
Definition: nt_native.h:1676
ULONG DeCommitTotalFreeThreshold
Definition: nt_native.h:1674
PRTL_HEAP_COMMIT_ROUTINE CommitRoutine
Definition: nt_native.h:1679
PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine
Definition: nt_native.h:109
CSHORT Month
Definition: nt_native.h:528
CSHORT Milliseconds
Definition: nt_native.h:533
CSHORT Minute
Definition: nt_native.h:531
CSHORT Day
Definition: nt_native.h:529
CSHORT Year
Definition: nt_native.h:527
CSHORT Weekday
Definition: nt_native.h:534
CSHORT Hour
Definition: nt_native.h:530
CSHORT Second
Definition: nt_native.h:532
uint16_t * PWSTR
Definition: typedefs.h:56
uint32_t * PULONG
Definition: typedefs.h:59
const uint16_t * PCWSTR
Definition: typedefs.h:57
#define NTAPI
Definition: typedefs.h:36
#define RtlCopyMemory(Destination, Source, Length)
Definition: typedefs.h:263
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:262
#define IN
Definition: typedefs.h:39
#define RtlMoveMemory(Destination, Source, Length)
Definition: typedefs.h:264
uint32_t ULONG
Definition: typedefs.h:59
#define OUT
Definition: typedefs.h:40
char * PCHAR
Definition: typedefs.h:51
CONST char * PCSZ
Definition: umtypes.h:125
short CSHORT
Definition: umtypes.h:127
_In_ WDFCOLLECTION _In_ ULONG Index
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG _Out_ PULONG ResultLength
Definition: wdfdevice.h:3782
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
Definition: wdfdevice.h:2664
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
Definition: wdfdevice.h:4539
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFSTRING String
Definition: wdfdevice.h:2439
_Must_inspect_result_ _In_ WDFQUEUE _In_opt_ WDFREQUEST _In_opt_ WDFFILEOBJECT _Inout_opt_ PWDF_REQUEST_PARAMETERS Parameters
Definition: wdfio.h:869
_Must_inspect_result_ _In_opt_ WDFKEY _In_ PCUNICODE_STRING _In_ ACCESS_MASK _In_ ULONG _Out_opt_ PULONG CreateDisposition
Definition: wdfregistry.h:120
_Must_inspect_result_ _In_opt_ WDFKEY _In_ PCUNICODE_STRING _In_ ACCESS_MASK _In_ ULONG CreateOptions
Definition: wdfregistry.h:118
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _In_ ULONG _Out_opt_ PULONG _Out_opt_ PULONG ValueType
Definition: wdfregistry.h:282
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING ValueName
Definition: wdfregistry.h:243
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _In_ ULONG ValueLength
Definition: wdfregistry.h:275
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
Definition: wdfregistry.h:413
_Must_inspect_result_ _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFWAITLOCK * Lock
Definition: wdfsync.h:127
_Reserved_ PVOID Reserved
Definition: winddi.h:3974
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
_In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _In_ ULONG _In_ ULONG _In_opt_ PVOID EaBuffer
Definition: iofuncs.h:845
#define DEVICE_TYPE
KSTART_ROUTINE * PKSTART_ROUTINE
Definition: ketypes.h:551
_In_opt_ PVOID HeapBase
Definition: rtlfuncs.h:2184
_In_opt_ PVOID _In_opt_ SIZE_T ReserveSize
Definition: rtlfuncs.h:2185
RTL_QUERY_REGISTRY_ROUTINE * PRTL_QUERY_REGISTRY_ROUTINE
Definition: rtltypes.h:53
_Inout_ PVOID * CommitAddress
Definition: rtltypes.h:597
$ULONG ACCESS_MASK
Definition: setypes.h:9
unsigned char UCHAR
Definition: xmlstorage.h:181
__wchar_t WCHAR
Definition: xmlstorage.h:180
char CHAR
Definition: xmlstorage.h:175
_In_ ULONG _In_ KEY_INFORMATION_CLASS KeyInformationClass
Definition: zwfuncs.h:167