2 * Copyright 2004-2005 Ivan Leo Puoti
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
26 #define POINTER_ALIGNMENT DECLSPEC_ALIGN(8)
28 #define POINTER_ALIGNMENT
31 typedef LONG KPRIORITY
;
33 typedef ULONG_PTR KSPIN_LOCK
, *PKSPIN_LOCK
;
38 struct _DEVICE_OBJECT
;
39 struct _DRIVER_OBJECT
;
41 typedef VOID (WINAPI
*PKDEFERRED_ROUTINE
)(struct _KDPC
*, PVOID
, PVOID
, PVOID
);
42 typedef VOID (WINAPI
*PKSTART_ROUTINE
)(PVOID
);
44 typedef NTSTATUS (WINAPI
*PDRIVER_INITIALIZE
)(struct _DRIVER_OBJECT
*, PUNICODE_STRING
);
45 typedef NTSTATUS (WINAPI
*PDRIVER_DISPATCH
)(struct _DEVICE_OBJECT
*, struct _IRP
*);
46 typedef void (WINAPI
*PDRIVER_STARTIO
)(struct _DEVICE_OBJECT
*, struct _IRP
*);
47 typedef void (WINAPI
*PDRIVER_UNLOAD
)(struct _DRIVER_OBJECT
*);
49 typedef struct _DISPATCHER_HEADER
{
55 LIST_ENTRY WaitListHead
;
56 } DISPATCHER_HEADER
, *PDISPATCHER_HEADER
;
58 typedef struct _KEVENT
{
59 DISPATCHER_HEADER Header
;
60 } KEVENT
, *PKEVENT
, *RESTRICTED_POINTER PRKEVENT
;
62 typedef struct _KDPC
{
66 LIST_ENTRY DpcListEntry
;
67 PKDEFERRED_ROUTINE DeferredRoutine
;
68 PVOID DeferredContext
;
69 PVOID SystemArgument1
;
70 PVOID SystemArgument2
;
72 } KDPC
, *PKDPC
, *RESTRICTED_POINTER PRKDPC
;
74 typedef struct _KDEVICE_QUEUE_ENTRY
{
75 LIST_ENTRY DeviceListEntry
;
78 } KDEVICE_QUEUE_ENTRY
, *PKDEVICE_QUEUE_ENTRY
,
79 *RESTRICTED_POINTER PRKDEVICE_QUEUE_ENTRY
;
81 typedef struct _KDEVICE_QUEUE
{
84 LIST_ENTRY DeviceListHead
;
87 } KDEVICE_QUEUE
, *PKDEVICE_QUEUE
, *RESTRICTED_POINTER PRKDEVICE_QUEUE
;
89 typedef struct _KMUTANT
{
90 DISPATCHER_HEADER Header
;
91 LIST_ENTRY MutantListEntry
;
92 struct _KTHREAD
*RESTRICTED_POINTER OwnerThread
;
95 } KMUTANT
, *PKMUTANT
, *RESTRICTED_POINTER PRKMUTANT
, KMUTEX
, *PKMUTEX
, *RESTRICTED_POINTER PRKMUTEX
;
97 typedef enum _KWAIT_REASON
127 typedef struct _IO_TIMER
*PIO_TIMER
;
128 typedef struct _ETHREAD
*PETHREAD
;
129 typedef struct _KTHREAD
*PKTHREAD
;
130 typedef struct _EPROCESS
*PEPROCESS
;
131 typedef struct _IO_WORKITEM
*PIO_WORKITEM
;
132 typedef struct _OBJECT_TYPE
*POBJECT_TYPE
;
133 typedef struct _OBJECT_HANDLE_INFORMATION
*POBJECT_HANDLE_INFORMATION
;
135 typedef struct _FAST_MUTEX
142 } FAST_MUTEX
, *PFAST_MUTEX
;
144 #define MAXIMUM_VOLUME_LABEL_LENGTH (32 * sizeof(WCHAR))
146 typedef struct _VPB
{
150 USHORT VolumeLabelLength
;
151 struct _DEVICE_OBJECT
*DeviceObject
;
152 struct _DEVICE_OBJECT
*RealDevice
;
154 ULONG ReferenceCount
;
155 WCHAR VolumeLabel
[MAXIMUM_VOLUME_LABEL_LENGTH
/ sizeof(WCHAR
)];
158 typedef enum _POOL_TYPE
{
161 NonPagedPoolMustSucceed
,
163 NonPagedPoolCacheAligned
,
164 PagedPoolCacheAligned
,
165 NonPagedPoolCacheAlignedMustS
,
169 typedef struct _WAIT_CONTEXT_BLOCK
{
170 KDEVICE_QUEUE_ENTRY WaitQueueEntry
;
171 struct _DRIVER_CONTROL
*DeviceRoutine
;
173 ULONG NumberOfMapRegisters
;
176 PKDPC BufferChainingDpc
;
177 } WAIT_CONTEXT_BLOCK
, *PWAIT_CONTEXT_BLOCK
;
179 #define DO_BUFFERED_IO 0x00000004
180 #define DO_EXCLUSIVE 0x00000008
181 #define DO_DIRECT_IO 0x00000010
182 #define DO_MAP_IO_BUFFER 0x00000020
183 #define DO_DEVICE_INITIALIZING 0x00000080
184 #define DO_SHUTDOWN_REGISTERED 0x00000800
185 #define DO_BUS_ENUMERATED_DEVICE 0x00001000
186 #define DO_POWER_PAGABLE 0x00002000
187 #define DO_POWER_INRUSH 0x00004000
189 #define IO_NO_INCREMENT 0
190 #define IO_CD_ROM_INCREMENT 1
191 #define IO_DISK_INCREMENT 1
192 #define IO_KEYBOARD_INCREMENT 6
193 #define IO_MAILSLOT_INCREMENT 2
194 #define IO_MOUSE_INCREMENT 6
195 #define IO_NAMED_PIPE_INCREMENT 2
196 #define IO_NETWORK_INCREMENT 2
197 #define IO_PARALLEL_INCREMENT 1
198 #define IO_SERIAL_INCREMENT 2
199 #define IO_SOUND_INCREMENT 8
200 #define IO_VIDEO_INCREMENT 1
203 #define DEVICE_TYPE ULONG
205 #define IRP_MJ_MAXIMUM_FUNCTION 0x1b
206 #define IRP_MJ_CREATE 0x00
207 #define IRP_MJ_CREATE_NAMED_PIPE 0x01
208 #define IRP_MJ_CLOSE 0x02
209 #define IRP_MJ_READ 0x03
210 #define IRP_MJ_WRITE 0x04
211 #define IRP_MJ_QUERY_INFORMATION 0x05
212 #define IRP_MJ_SET_INFORMATION 0x06
213 #define IRP_MJ_QUERY_EA 0x07
214 #define IRP_MJ_SET_EA 0x08
215 #define IRP_MJ_FLUSH_BUFFERS 0x09
216 #define IRP_MJ_QUERY_VOLUME_INFORMATION 0x0a
217 #define IRP_MJ_SET_VOLUME_INFORMATION 0x0b
218 #define IRP_MJ_DIRECTORY_CONTROL 0x0c
219 #define IRP_MJ_FILE_SYSTEM_CONTROL 0x0d
220 #define IRP_MJ_DEVICE_CONTROL 0x0e
221 #define IRP_MJ_INTERNAL_DEVICE_CONTROL 0x0f
222 #define IRP_MJ_SHUTDOWN 0x10
223 #define IRP_MJ_LOCK_CONTROL 0x11
224 #define IRP_MJ_CLEANUP 0x12
225 #define IRP_MJ_CREATE_MAILSLOT 0x13
226 #define IRP_MJ_QUERY_SECURITY 0x14
227 #define IRP_MJ_SET_SECURITY 0x15
228 #define IRP_MJ_POWER 0x16
229 #define IRP_MJ_SYSTEM_CONTROL 0x17
230 #define IRP_MJ_DEVICE_CHANGE 0x18
231 #define IRP_MJ_QUERY_QUOTA 0x19
232 #define IRP_MJ_SET_QUOTA 0x1a
233 #define IRP_MJ_PNP 0x1b
235 #define IRP_MN_START_DEVICE 0x00
236 #define IRP_MN_QUERY_REMOVE_DEVICE 0x01
237 #define IRP_MN_REMOVE_DEVICE 0x02
238 #define IRP_MN_CANCEL_REMOVE_DEVICE 0x03
239 #define IRP_MN_STOP_DEVICE 0x04
240 #define IRP_MN_QUERY_STOP_DEVICE 0x05
241 #define IRP_MN_CANCEL_STOP_DEVICE 0x06
242 #define IRP_MN_QUERY_DEVICE_RELATIONS 0x07
243 #define IRP_MN_QUERY_INTERFACE 0x08
244 #define IRP_MN_QUERY_CAPABILITIES 0x09
245 #define IRP_MN_QUERY_RESOURCES 0x0A
246 #define IRP_MN_QUERY_RESOURCE_REQUIREMENTS 0x0B
247 #define IRP_MN_QUERY_DEVICE_TEXT 0x0C
248 #define IRP_MN_FILTER_RESOURCE_REQUIREMENTS 0x0D
249 #define IRP_MN_READ_CONFIG 0x0F
250 #define IRP_MN_WRITE_CONFIG 0x10
251 #define IRP_MN_EJECT 0x11
252 #define IRP_MN_SET_LOCK 0x12
253 #define IRP_MN_QUERY_ID 0x13
254 #define IRP_MN_QUERY_PNP_DEVICE_STATE 0x14
255 #define IRP_MN_QUERY_BUS_INFORMATION 0x15
256 #define IRP_MN_DEVICE_USAGE_NOTIFICATION 0x16
257 #define IRP_MN_SURPRISE_REMOVAL 0x17
259 #define IRP_QUOTA_CHARGED 0x01
260 #define IRP_ALLOCATED_MUST_SUCCEED 0x02
261 #define IRP_ALLOCATED_FIXED_SIZE 0x04
262 #define IRP_LOOKASIDE_ALLOCATION 0x08
264 #define IO_TYPE_ADAPTER 0x01
265 #define IO_TYPE_CONTROLLER 0x02
266 #define IO_TYPE_DEVICE 0x03
267 #define IO_TYPE_DRIVER 0x04
268 #define IO_TYPE_FILE 0x05
269 #define IO_TYPE_IRP 0x06
270 #define IO_TYPE_MASTER_ADAPTER 0x07
271 #define IO_TYPE_OPEN_PACKET 0x08
272 #define IO_TYPE_TIMER 0x09
273 #define IO_TYPE_VPB 0x0a
274 #define IO_TYPE_ERROR_LOG 0x0b
275 #define IO_TYPE_ERROR_MESSAGE 0x0c
276 #define IO_TYPE_DEVICE_OBJECT_EXTENSION 0x0d
278 typedef struct _DEVICE_OBJECT
{
282 struct _DRIVER_OBJECT
*DriverObject
;
283 struct _DEVICE_OBJECT
*NextDevice
;
284 struct _DEVICE_OBJECT
*AttachedDevice
;
285 struct _IRP
*CurrentIrp
;
288 ULONG Characteristics
;
290 PVOID DeviceExtension
;
291 DEVICE_TYPE DeviceType
;
294 LIST_ENTRY ListEntry
;
295 WAIT_CONTEXT_BLOCK Wcb
;
297 ULONG AlignmentRequirement
;
298 KDEVICE_QUEUE DeviceQueue
;
300 ULONG ActiveThreadCount
;
301 PSECURITY_DESCRIPTOR SecurityDescriptor
;
305 struct _DEVOBJ_EXTENSION
*DeviceObjectExtension
;
308 typedef struct _DEVICE_OBJECT
*PDEVICE_OBJECT
;
310 typedef struct _DRIVER_EXTENSION
{
311 struct _DRIVER_OBJECT
*DriverObject
;
314 UNICODE_STRING ServiceKeyName
;
315 } DRIVER_EXTENSION
, *PDRIVER_EXTENSION
;
317 typedef struct _DRIVER_OBJECT
{
320 PDEVICE_OBJECT DeviceObject
;
325 PDRIVER_EXTENSION DriverExtension
;
326 UNICODE_STRING DriverName
;
327 PUNICODE_STRING HardwareDatabase
;
328 PVOID FastIoDispatch
;
329 PDRIVER_INITIALIZE DriverInit
;
330 PDRIVER_STARTIO DriverStartIo
;
331 PDRIVER_UNLOAD DriverUnload
;
332 PDRIVER_DISPATCH MajorFunction
[IRP_MJ_MAXIMUM_FUNCTION
+ 1];
334 typedef struct _DRIVER_OBJECT
*PDRIVER_OBJECT
;
336 /* Irp definitions */
337 typedef UCHAR KIRQL
, *PKIRQL
;
338 typedef CCHAR KPROCESSOR_MODE
;
340 typedef VOID (WINAPI
*PDRIVER_CANCEL
)(
341 IN
struct _DEVICE_OBJECT
*DeviceObject
,
342 IN
struct _IRP
*Irp
);
344 typedef VOID (WINAPI
*PKNORMAL_ROUTINE
)(
345 IN PVOID NormalContext
,
346 IN PVOID SystemArgument1
,
347 IN PVOID SystemArgument2
);
349 typedef VOID (WINAPI
*PKKERNEL_ROUTINE
)(
350 IN
struct _KAPC
*Apc
,
351 IN OUT PKNORMAL_ROUTINE
*NormalRoutine
,
352 IN OUT PVOID
*NormalContext
,
353 IN OUT PVOID
*SystemArgument1
,
354 IN OUT PVOID
*SystemArgument2
);
356 typedef VOID (WINAPI
*PKRUNDOWN_ROUTINE
)(
357 IN
struct _KAPC
*Apc
);
359 typedef struct _KAPC
{
363 struct _KTHREAD
*Thread
;
364 LIST_ENTRY ApcListEntry
;
365 PKKERNEL_ROUTINE KernelRoutine
;
366 PKRUNDOWN_ROUTINE RundownRoutine
;
367 PKNORMAL_ROUTINE NormalRoutine
;
369 PVOID SystemArgument1
;
370 PVOID SystemArgument2
;
372 KPROCESSOR_MODE ApcMode
;
374 } KAPC
, *PKAPC
, *RESTRICTED_POINTER PRKAPC
;
376 #include <pshpack1.h>
377 typedef struct _IRP
{
380 struct _MDL
*MdlAddress
;
383 struct _IRP
*MasterIrp
;
387 LIST_ENTRY ThreadListEntry
;
388 IO_STATUS_BLOCK IoStatus
;
389 KPROCESSOR_MODE RequestorMode
;
390 BOOLEAN PendingReturned
;
392 CHAR CurrentLocation
;
395 CCHAR ApcEnvironment
;
396 UCHAR AllocationFlags
;
397 PIO_STATUS_BLOCK UserIosb
;
401 PIO_APC_ROUTINE UserApcRoutine
;
402 PVOID UserApcContext
;
403 } AsynchronousParameters
;
404 LARGE_INTEGER AllocationSize
;
406 PDRIVER_CANCEL CancelRoutine
;
411 KDEVICE_QUEUE_ENTRY DeviceQueueEntry
;
413 PVOID DriverContext
[4];
417 PCHAR AuxiliaryBuffer
;
419 LIST_ENTRY ListEntry
;
421 struct _IO_STACK_LOCATION
*CurrentStackLocation
;
425 struct _FILE_OBJECT
*OriginalFileObject
;
431 typedef struct _IRP
*PIRP
;
434 /* MDL definitions */
436 typedef VOID (WINAPI
*PINTERFACE_REFERENCE
)(
439 typedef VOID (WINAPI
*PINTERFACE_DEREFERENCE
)(
442 typedef struct _INTERFACE
{
446 PINTERFACE_REFERENCE InterfaceReference
;
447 PINTERFACE_DEREFERENCE InterfaceDereference
;
448 } INTERFACE
, *PINTERFACE
;
450 typedef struct _SECTION_OBJECT_POINTERS
{
451 PVOID DataSectionObject
;
452 PVOID SharedCacheMap
;
453 PVOID ImageSectionObject
;
454 } SECTION_OBJECT_POINTERS
, *PSECTION_OBJECT_POINTERS
;
456 typedef struct _IO_COMPLETION_CONTEXT
{
459 } IO_COMPLETION_CONTEXT
, *PIO_COMPLETION_CONTEXT
;
461 typedef enum _DEVICE_RELATION_TYPE
{
466 TargetDeviceRelation
,
468 } DEVICE_RELATION_TYPE
, *PDEVICE_RELATION_TYPE
;
470 typedef struct _FILE_OBJECT
{
473 PDEVICE_OBJECT DeviceObject
;
477 PSECTION_OBJECT_POINTERS SectionObjectPointer
;
478 PVOID PrivateCacheMap
;
479 NTSTATUS FinalStatus
;
480 struct _FILE_OBJECT
*RelatedFileObject
;
481 BOOLEAN LockOperation
;
482 BOOLEAN DeletePending
;
485 BOOLEAN DeleteAccess
;
488 BOOLEAN SharedDelete
;
490 UNICODE_STRING FileName
;
491 LARGE_INTEGER CurrentByteOffset
;
497 PIO_COMPLETION_CONTEXT CompletionContext
;
499 typedef struct _FILE_OBJECT
*PFILE_OBJECT
;
501 #define INITIAL_PRIVILEGE_COUNT 3
503 typedef struct _INITIAL_PRIVILEGE_SET
{
504 ULONG PrivilegeCount
;
506 LUID_AND_ATTRIBUTES Privilege
[INITIAL_PRIVILEGE_COUNT
];
507 } INITIAL_PRIVILEGE_SET
, * PINITIAL_PRIVILEGE_SET
;
509 typedef struct _SECURITY_SUBJECT_CONTEXT
{
510 PACCESS_TOKEN ClientToken
;
511 SECURITY_IMPERSONATION_LEVEL ImpersonationLevel
;
512 PACCESS_TOKEN PrimaryToken
;
513 PVOID ProcessAuditId
;
514 } SECURITY_SUBJECT_CONTEXT
, *PSECURITY_SUBJECT_CONTEXT
;
516 typedef struct _ACCESS_STATE
{
518 BOOLEAN SecurityEvaluated
;
519 BOOLEAN GenerateAudit
;
520 BOOLEAN GenerateOnClose
;
521 BOOLEAN PrivilegesAllocated
;
523 ACCESS_MASK RemainingDesiredAccess
;
524 ACCESS_MASK PreviouslyGrantedAccess
;
525 ACCESS_MASK OriginalDesiredAccess
;
526 SECURITY_SUBJECT_CONTEXT SubjectSecurityContext
;
527 PSECURITY_DESCRIPTOR SecurityDescriptor
;
530 INITIAL_PRIVILEGE_SET InitialPrivilegeSet
;
531 PRIVILEGE_SET PrivilegeSet
;
534 BOOLEAN AuditPrivileges
;
535 UNICODE_STRING ObjectName
;
536 UNICODE_STRING ObjectTypeName
;
537 } ACCESS_STATE
, *PACCESS_STATE
;
539 typedef struct _IO_SECURITY_CONTEXT
{
540 PSECURITY_QUALITY_OF_SERVICE SecurityQos
;
541 PACCESS_STATE AccessState
;
542 ACCESS_MASK DesiredAccess
;
543 ULONG FullCreateOptions
;
544 } IO_SECURITY_CONTEXT
, *PIO_SECURITY_CONTEXT
;
546 typedef struct _DEVICE_CAPABILITIES
{
551 ULONG LockSupported
: 1;
552 ULONG EjectSupported
: 1;
554 ULONG DockDevice
: 1;
556 ULONG SilentInstall
: 1;
557 ULONG RawDeviceOK
: 1;
558 ULONG SurpriseRemovalOK
: 1;
559 ULONG WakeFromD0
: 1;
560 ULONG WakeFromD1
: 1;
561 ULONG WakeFromD2
: 1;
562 ULONG WakeFromD3
: 1;
563 ULONG HardwareDisabled
: 1;
564 ULONG NonDynamic
: 1;
565 ULONG WarmEjectSupported
: 1;
566 ULONG NoDisplayInUI
: 1;
570 DEVICE_POWER_STATE DeviceState
[PowerSystemMaximum
];
571 SYSTEM_POWER_STATE SystemWake
;
572 DEVICE_POWER_STATE DeviceWake
;
576 } DEVICE_CAPABILITIES
, *PDEVICE_CAPABILITIES
;
578 typedef enum _INTERFACE_TYPE
{
579 InterfaceTypeUndefined
= -1,
597 } INTERFACE_TYPE
, *PINTERFACE_TYPE
;
599 typedef LARGE_INTEGER PHYSICAL_ADDRESS
, *PPHYSICAL_ADDRESS
;
601 #define IO_RESOURCE_PREFERRED 0x01
602 #define IO_RESOURCE_DEFAULT 0x02
603 #define IO_RESOURCE_ALTERNATIVE 0x08
605 typedef struct _IO_RESOURCE_DESCRIPTOR
{
608 UCHAR ShareDisposition
;
616 PHYSICAL_ADDRESS MinimumAddress
;
617 PHYSICAL_ADDRESS MaximumAddress
;
622 PHYSICAL_ADDRESS MinimumAddress
;
623 PHYSICAL_ADDRESS MaximumAddress
;
630 ULONG MinimumChannel
;
631 ULONG MaximumChannel
;
636 PHYSICAL_ADDRESS MinimumAddress
;
637 PHYSICAL_ADDRESS MaximumAddress
;
654 } IO_RESOURCE_DESCRIPTOR
, *PIO_RESOURCE_DESCRIPTOR
;
656 typedef struct _IO_RESOURCE_LIST
{
660 IO_RESOURCE_DESCRIPTOR Descriptors
[1];
661 } IO_RESOURCE_LIST
, *PIO_RESOURCE_LIST
;
663 typedef struct _IO_RESOURCE_REQUIREMENTS_LIST
{
665 INTERFACE_TYPE InterfaceType
;
669 ULONG AlternativeLists
;
670 IO_RESOURCE_LIST List
[1];
671 } IO_RESOURCE_REQUIREMENTS_LIST
, *PIO_RESOURCE_REQUIREMENTS_LIST
;
673 typedef enum _BUS_QUERY_ID_TYPE
{
676 BusQueryCompatibleIDs
,
678 BusQueryDeviceSerialNumber
679 } BUS_QUERY_ID_TYPE
, *PBUS_QUERY_ID_TYPE
;
681 typedef enum _DEVICE_TEXT_TYPE
{
682 DeviceTextDescription
,
683 DeviceTextLocationInformation
684 } DEVICE_TEXT_TYPE
, *PDEVICE_TEXT_TYPE
;
686 typedef enum _DEVICE_USAGE_NOTIFICATION_TYPE
{
687 DeviceUsageTypeUndefined
,
688 DeviceUsageTypePaging
,
689 DeviceUsageTypeHibernation
,
690 DeviceUsageTypeDumpFile
691 } DEVICE_USAGE_NOTIFICATION_TYPE
;
693 typedef struct _POWER_SEQUENCE
{
697 } POWER_SEQUENCE
, *PPOWER_SEQUENCE
;
699 typedef enum _POWER_STATE_TYPE
{
702 } POWER_STATE_TYPE
, *PPOWER_STATE_TYPE
;
704 typedef union _POWER_STATE
{
705 SYSTEM_POWER_STATE SystemState
;
706 DEVICE_POWER_STATE DeviceState
;
707 } POWER_STATE
, *PPOWER_STATE
;
709 typedef struct _CM_PARTIAL_RESOURCE_DESCRIPTOR
{
711 UCHAR ShareDisposition
;
715 PHYSICAL_ADDRESS Start
;
719 PHYSICAL_ADDRESS Start
;
728 PHYSICAL_ADDRESS Start
;
748 } DeviceSpecificData
;
750 } CM_PARTIAL_RESOURCE_DESCRIPTOR
, *PCM_PARTIAL_RESOURCE_DESCRIPTOR
;
752 typedef struct _CM_PARTIAL_RESOURCE_LIST
{
756 CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors
[1];
757 } CM_PARTIAL_RESOURCE_LIST
, *PCM_PARTIAL_RESOURCE_LIST
;
759 typedef struct _CM_FULL_RESOURCE_DESCRIPTOR
{
760 INTERFACE_TYPE InterfaceType
;
762 CM_PARTIAL_RESOURCE_LIST PartialResourceList
;
763 } CM_FULL_RESOURCE_DESCRIPTOR
, *PCM_FULL_RESOURCE_DESCRIPTOR
;
765 typedef struct _CM_RESOURCE_LIST
{
767 CM_FULL_RESOURCE_DESCRIPTOR List
[1];
768 } CM_RESOURCE_LIST
, *PCM_RESOURCE_LIST
;
770 typedef NTSTATUS (WINAPI
*PIO_COMPLETION_ROUTINE
)(
771 IN
struct _DEVICE_OBJECT
*DeviceObject
,
775 #define SL_PENDING_RETURNED 0x01
776 #define SL_INVOKE_ON_CANCEL 0x20
777 #define SL_INVOKE_ON_SUCCESS 0x40
778 #define SL_INVOKE_ON_ERROR 0x80
780 #include <pshpack1.h>
781 typedef struct _IO_STACK_LOCATION
{
788 PIO_SECURITY_CONTEXT SecurityContext
;
790 USHORT POINTER_ALIGNMENT FileAttributes
;
792 ULONG POINTER_ALIGNMENT EaLength
;
796 ULONG POINTER_ALIGNMENT Key
;
797 LARGE_INTEGER ByteOffset
;
801 ULONG POINTER_ALIGNMENT Key
;
802 LARGE_INTEGER ByteOffset
;
806 FILE_INFORMATION_CLASS POINTER_ALIGNMENT FileInformationClass
;
810 FILE_INFORMATION_CLASS POINTER_ALIGNMENT FileInformationClass
;
811 PFILE_OBJECT FileObject
;
814 BOOLEAN ReplaceIfExists
;
823 FS_INFORMATION_CLASS POINTER_ALIGNMENT FsInformationClass
;
826 ULONG OutputBufferLength
;
827 ULONG POINTER_ALIGNMENT InputBufferLength
;
828 ULONG POINTER_ALIGNMENT IoControlCode
;
829 PVOID Type3InputBuffer
;
832 SECURITY_INFORMATION SecurityInformation
;
833 ULONG POINTER_ALIGNMENT Length
;
836 SECURITY_INFORMATION SecurityInformation
;
837 PSECURITY_DESCRIPTOR SecurityDescriptor
;
841 PDEVICE_OBJECT DeviceObject
;
845 PDEVICE_OBJECT DeviceObject
;
848 struct _SCSI_REQUEST_BLOCK
*Srb
;
851 DEVICE_RELATION_TYPE Type
;
852 } QueryDeviceRelations
;
854 CONST GUID
*InterfaceType
;
857 PINTERFACE Interface
;
858 PVOID InterfaceSpecificData
;
861 PDEVICE_CAPABILITIES Capabilities
;
862 } DeviceCapabilities
;
864 PIO_RESOURCE_REQUIREMENTS_LIST IoResourceRequirementList
;
865 } FilterResourceRequirements
;
870 ULONG POINTER_ALIGNMENT Length
;
876 BUS_QUERY_ID_TYPE IdType
;
879 DEVICE_TEXT_TYPE DeviceTextType
;
880 LCID POINTER_ALIGNMENT LocaleId
;
885 DEVICE_USAGE_NOTIFICATION_TYPE POINTER_ALIGNMENT Type
;
888 SYSTEM_POWER_STATE PowerState
;
891 PPOWER_SEQUENCE PowerSequence
;
895 POWER_STATE_TYPE POINTER_ALIGNMENT Type
;
896 POWER_STATE POINTER_ALIGNMENT State
;
897 POWER_ACTION POINTER_ALIGNMENT ShutdownType
;
900 PCM_RESOURCE_LIST AllocatedResources
;
901 PCM_RESOURCE_LIST AllocatedResourcesTranslated
;
904 ULONG_PTR ProviderId
;
916 PDEVICE_OBJECT DeviceObject
;
917 PFILE_OBJECT FileObject
;
918 PIO_COMPLETION_ROUTINE CompletionRoutine
;
920 } IO_STACK_LOCATION
, *PIO_STACK_LOCATION
;
923 typedef struct _MDL
{
927 struct _EPROCESS
*Process
;
928 PVOID MappedSystemVa
;
934 typedef struct _KTIMER
{
935 DISPATCHER_HEADER Header
;
936 ULARGE_INTEGER DueTime
;
937 LIST_ENTRY TimerListEntry
;
942 typedef struct _KSYSTEM_TIME
{
946 } KSYSTEM_TIME
, *PKSYSTEM_TIME
;
948 typedef enum _NT_PRODUCT_TYPE
{
952 } NT_PRODUCT_TYPE
, *PNT_PRODUCT_TYPE
;
954 #define PROCESSOR_FEATURE_MAX 64
956 typedef enum _ALTERNATIVE_ARCHITECTURE_TYPE
961 } ALTERNATIVE_ARCHITECTURE_TYPE
;
963 typedef struct _KUSER_SHARED_DATA
{
964 ULONG TickCountLowDeprecated
;
965 ULONG TickCountMultiplier
;
966 volatile KSYSTEM_TIME InterruptTime
;
967 volatile KSYSTEM_TIME SystemTime
;
968 volatile KSYSTEM_TIME TimeZoneBias
;
969 USHORT ImageNumberLow
;
970 USHORT ImageNumberHigh
;
971 WCHAR NtSystemRoot
[260];
972 ULONG MaxStckTraceDepth
;
973 ULONG CryptoExponent
;
975 ULONG LargePageMinimum
;
977 NT_PRODUCT_TYPE NtProductType
;
978 BOOLEAN ProductTypeIsValid
;
979 ULONG MajorNtVersion
;
980 ULONG MinorNtVersion
;
981 BOOLEAN ProcessorFeatures
[PROCESSOR_FEATURE_MAX
];
984 volatile ULONG TimeSlip
;
985 ALTERNATIVE_ARCHITECTURE_TYPE AlternativeArchitecture
;
986 LARGE_INTEGER SystemExpirationDate
;
988 BOOLEAN KdDebuggerEnabled
;
989 volatile ULONG ActiveConsoleId
;
990 volatile ULONG DismountCount
;
991 ULONG ComPlusPackage
;
992 ULONG LastSystemRITEventTickCount
;
993 ULONG NumberOfPhysicalPages
;
994 BOOLEAN SafeBootMode
;
997 ULONGLONG SystemCall
[4];
999 volatile KSYSTEM_TIME TickCount
;
1000 volatile ULONG64 TickCountQuad
;
1002 } KSHARED_USER_DATA
, *PKSHARED_USER_DATA
;
1004 typedef enum _MM_SYSTEM_SIZE
1011 NTSTATUS WINAPI
ObCloseHandle(IN HANDLE handle
);
1013 #define IoGetCurrentIrpStackLocation(_Irp) ((_Irp)->Tail.Overlay.CurrentStackLocation)
1015 #define KernelMode 0
1018 /* directory object access rights */
1019 #define DIRECTORY_QUERY 0x0001
1020 #define DIRECTORY_TRAVERSE 0x0002
1021 #define DIRECTORY_CREATE_OBJECT 0x0004
1022 #define DIRECTORY_CREATE_SUBDIRECTORY 0x0008
1023 #define DIRECTORY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0xF)
1025 /* symbolic link access rights */
1026 #define SYMBOLIC_LINK_QUERY 0x0001
1027 #define SYMBOLIC_LINK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1)
1029 PVOID WINAPI
ExAllocatePool(POOL_TYPE
,SIZE_T
);
1030 PVOID WINAPI
ExAllocatePoolWithQuota(POOL_TYPE
,SIZE_T
);
1031 PVOID WINAPI
ExAllocatePoolWithTag(POOL_TYPE
,SIZE_T
,ULONG
);
1032 PVOID WINAPI
ExAllocatePoolWithQuotaTag(POOL_TYPE
,SIZE_T
,ULONG
);
1033 void WINAPI
ExFreePool(PVOID
);
1034 void WINAPI
ExFreePoolWithTag(PVOID
,ULONG
);
1036 NTSTATUS WINAPI
IoAllocateDriverObjectExtension(PDRIVER_OBJECT
,PVOID
,ULONG
,PVOID
*);
1037 PIRP WINAPI
IoAllocateIrp(CCHAR
,BOOLEAN
);
1038 NTSTATUS WINAPI
IoCreateDevice(DRIVER_OBJECT
*,ULONG
,UNICODE_STRING
*,DEVICE_TYPE
,ULONG
,BOOLEAN
,DEVICE_OBJECT
**);
1039 NTSTATUS WINAPI
IoCreateDriver(UNICODE_STRING
*,PDRIVER_INITIALIZE
);
1040 NTSTATUS WINAPI
IoCreateSymbolicLink(UNICODE_STRING
*,UNICODE_STRING
*);
1041 void WINAPI
IoDeleteDevice(DEVICE_OBJECT
*);
1042 void WINAPI
IoDeleteDriver(DRIVER_OBJECT
*);
1043 NTSTATUS WINAPI
IoDeleteSymbolicLink(UNICODE_STRING
*);
1044 void WINAPI
IoFreeIrp(IRP
*);
1045 PEPROCESS WINAPI
IoGetCurrentProcess(void);
1046 NTSTATUS WINAPI
IoGetDeviceObjectPointer(UNICODE_STRING
*,ACCESS_MASK
,PFILE_OBJECT
*,PDEVICE_OBJECT
*);
1047 PVOID WINAPI
IoGetDriverObjectExtension(PDRIVER_OBJECT
,PVOID
);
1048 PDEVICE_OBJECT WINAPI
IoGetRelatedDeviceObject(PFILE_OBJECT
);
1049 void WINAPI
IoInitializeIrp(IRP
*,USHORT
,CCHAR
);
1051 PKTHREAD WINAPI
KeGetCurrentThread(void);
1052 void WINAPI
KeQuerySystemTime(LARGE_INTEGER
*);
1053 void WINAPI
KeQueryTickCount(LARGE_INTEGER
*);
1054 ULONG WINAPI
KeQueryTimeIncrement(void);
1056 PVOID WINAPI
MmAllocateNonCachedMemory(SIZE_T
);
1057 void WINAPI
MmFreeNonCachedMemory(PVOID
,SIZE_T
);
1058 MM_SYSTEMSIZE WINAPI
MmQuerySystemSize(void);
1060 NTSTATUS WINAPI
ObReferenceObjectByHandle(HANDLE
,ACCESS_MASK
,POBJECT_TYPE
,KPROCESSOR_MODE
,PVOID
*,POBJECT_HANDLE_INFORMATION
);
1062 NTSTATUS WINAPI
PsCreateSystemThread(PHANDLE
,ULONG
,POBJECT_ATTRIBUTES
,HANDLE
,PCLIENT_ID
,PKSTART_ROUTINE
,PVOID
);
1063 #define PsGetCurrentProcess() IoGetCurrentProcess()
1064 #define PsGetCurrentThread() ((PETHREAD)KeGetCurrentThread())
1065 HANDLE WINAPI
PsGetCurrentProcessId(void);
1066 HANDLE WINAPI
PsGetCurrentThreadId(void);
1067 BOOLEAN WINAPI
PsGetVersion(ULONG
*,ULONG
*,ULONG
*,UNICODE_STRING
*);
1068 NTSTATUS WINAPI
PsTerminateSystemThread(NTSTATUS
);
1070 NTSTATUS WINAPI
ZwAddBootEntry(PUNICODE_STRING
,PUNICODE_STRING
);
1071 NTSTATUS WINAPI
ZwAccessCheckAndAuditAlarm(PUNICODE_STRING
,HANDLE
,PUNICODE_STRING
,PUNICODE_STRING
,PSECURITY_DESCRIPTOR
,ACCESS_MASK
,PGENERIC_MAPPING
,BOOLEAN
,PACCESS_MASK
,PBOOLEAN
,PBOOLEAN
);
1072 NTSTATUS WINAPI
ZwAdjustPrivilegesToken(HANDLE
,BOOLEAN
,PTOKEN_PRIVILEGES
,DWORD
,PTOKEN_PRIVILEGES
,PDWORD
);
1073 NTSTATUS WINAPI
ZwAlertThread(HANDLE ThreadHandle
);
1074 NTSTATUS WINAPI
ZwAllocateVirtualMemory(HANDLE
,PVOID
*,ULONG
,SIZE_T
*,ULONG
,ULONG
);
1075 NTSTATUS WINAPI
ZwCancelIoFile(HANDLE
,PIO_STATUS_BLOCK
);
1076 NTSTATUS WINAPI
ZwCancelTimer(HANDLE
, BOOLEAN
*);
1077 NTSTATUS WINAPI
ZwClearEvent(HANDLE
);
1078 NTSTATUS WINAPI
ZwClose(HANDLE
);
1079 NTSTATUS WINAPI
ZwCloseObjectAuditAlarm(PUNICODE_STRING
,HANDLE
,BOOLEAN
);
1080 NTSTATUS WINAPI
ZwConnectPort(PHANDLE
,PUNICODE_STRING
,PSECURITY_QUALITY_OF_SERVICE
,PLPC_SECTION_WRITE
,PLPC_SECTION_READ
,PULONG
,PVOID
,PULONG
);
1081 NTSTATUS WINAPI
ZwCreateDirectoryObject(PHANDLE
,ACCESS_MASK
,POBJECT_ATTRIBUTES
);
1082 NTSTATUS WINAPI
ZwCreateEvent(PHANDLE
,ACCESS_MASK
,const OBJECT_ATTRIBUTES
*,BOOLEAN
,BOOLEAN
);
1083 NTSTATUS WINAPI
ZwCreateFile(PHANDLE
,ACCESS_MASK
,POBJECT_ATTRIBUTES
,PIO_STATUS_BLOCK
,PLARGE_INTEGER
,ULONG
,ULONG
,ULONG
,ULONG
,PVOID
,ULONG
);
1084 NTSTATUS WINAPI
ZwCreateKey(PHANDLE
,ACCESS_MASK
,const OBJECT_ATTRIBUTES
*,ULONG
,const UNICODE_STRING
*,ULONG
,PULONG
);
1085 NTSTATUS WINAPI
ZwCreateSection(HANDLE
*,ACCESS_MASK
,const OBJECT_ATTRIBUTES
*,const LARGE_INTEGER
*,ULONG
,ULONG
,HANDLE
);
1086 NTSTATUS WINAPI
ZwCreateSymbolicLinkObject(PHANDLE
,ACCESS_MASK
,POBJECT_ATTRIBUTES
,PUNICODE_STRING
);
1087 NTSTATUS WINAPI
ZwCreateTimer(HANDLE
*, ACCESS_MASK
, const OBJECT_ATTRIBUTES
*, TIMER_TYPE
);
1088 NTSTATUS WINAPI
ZwDeleteAtom(RTL_ATOM
);
1089 NTSTATUS WINAPI
ZwDeleteFile(POBJECT_ATTRIBUTES
);
1090 NTSTATUS WINAPI
ZwDeleteKey(HANDLE
);
1091 NTSTATUS WINAPI
ZwDeleteValueKey(HANDLE
,const UNICODE_STRING
*);
1092 NTSTATUS WINAPI
ZwDeviceIoControlFile(HANDLE
,HANDLE
,PIO_APC_ROUTINE
,PVOID
,PIO_STATUS_BLOCK
,ULONG
,PVOID
,ULONG
,PVOID
,ULONG
);
1093 NTSTATUS WINAPI
ZwDisplayString(PUNICODE_STRING
);
1094 NTSTATUS WINAPI
ZwDuplicateObject(HANDLE
,HANDLE
,HANDLE
,PHANDLE
,ACCESS_MASK
,ULONG
,ULONG
);
1095 NTSTATUS WINAPI
ZwDuplicateToken(HANDLE
,ACCESS_MASK
,POBJECT_ATTRIBUTES
,SECURITY_IMPERSONATION_LEVEL
,TOKEN_TYPE
,PHANDLE
);
1096 NTSTATUS WINAPI
ZwEnumerateKey(HANDLE
,ULONG
,KEY_INFORMATION_CLASS
,void *,DWORD
,DWORD
*);
1097 NTSTATUS WINAPI
ZwEnumerateValueKey(HANDLE
,ULONG
,KEY_VALUE_INFORMATION_CLASS
,PVOID
,ULONG
,PULONG
);
1098 NTSTATUS WINAPI
ZwFlushInstructionCache(HANDLE
,LPCVOID
,SIZE_T
);
1099 NTSTATUS WINAPI
ZwFlushKey(HANDLE
);
1100 NTSTATUS WINAPI
ZwFlushVirtualMemory(HANDLE
,LPCVOID
*,SIZE_T
*,ULONG
);
1101 NTSTATUS WINAPI
ZwFreeVirtualMemory(HANDLE
,PVOID
*,SIZE_T
*,ULONG
);
1102 NTSTATUS WINAPI
ZwFsControlFile(HANDLE
,HANDLE
,PIO_APC_ROUTINE
,PVOID
,PIO_STATUS_BLOCK
,ULONG
,PVOID
,ULONG
,PVOID
,ULONG
);
1103 NTSTATUS WINAPI
ZwInitiatePowerAction(POWER_ACTION
,SYSTEM_POWER_STATE
,ULONG
,BOOLEAN
);
1104 NTSTATUS WINAPI
ZwLoadDriver(const UNICODE_STRING
*);
1105 NTSTATUS WINAPI
ZwLoadKey(const OBJECT_ATTRIBUTES
*,OBJECT_ATTRIBUTES
*);
1106 NTSTATUS WINAPI
ZwLockVirtualMemory(HANDLE
,PVOID
*,SIZE_T
*,ULONG
);
1107 NTSTATUS WINAPI
ZwMakeTemporaryObject(HANDLE
);
1108 NTSTATUS WINAPI
ZwMapViewOfSection(HANDLE
,HANDLE
,PVOID
*,ULONG
,SIZE_T
,const LARGE_INTEGER
*,SIZE_T
*,SECTION_INHERIT
,ULONG
,ULONG
);
1109 NTSTATUS WINAPI
ZwNotifyChangeKey(HANDLE
,HANDLE
,PIO_APC_ROUTINE
,PVOID
,PIO_STATUS_BLOCK
,ULONG
,BOOLEAN
,PVOID
,ULONG
,BOOLEAN
);
1110 NTSTATUS WINAPI
ZwOpenDirectoryObject(PHANDLE
,ACCESS_MASK
,POBJECT_ATTRIBUTES
);
1111 NTSTATUS WINAPI
ZwOpenEvent(PHANDLE
,ACCESS_MASK
,const OBJECT_ATTRIBUTES
*);
1112 NTSTATUS WINAPI
ZwOpenFile(PHANDLE
,ACCESS_MASK
,POBJECT_ATTRIBUTES
,PIO_STATUS_BLOCK
,ULONG
,ULONG
);
1113 NTSTATUS WINAPI
ZwOpenKey(PHANDLE
,ACCESS_MASK
,const OBJECT_ATTRIBUTES
*);
1114 NTSTATUS WINAPI
ZwOpenProcess(PHANDLE
,ACCESS_MASK
,const OBJECT_ATTRIBUTES
*,const CLIENT_ID
*);
1115 NTSTATUS WINAPI
ZwOpenProcessToken(HANDLE
,DWORD
,HANDLE
*);
1116 NTSTATUS WINAPI
ZwOpenSection(HANDLE
*,ACCESS_MASK
,const OBJECT_ATTRIBUTES
*);
1117 NTSTATUS WINAPI
ZwOpenSymbolicLinkObject(PHANDLE
,ACCESS_MASK
,POBJECT_ATTRIBUTES
);
1118 NTSTATUS WINAPI
ZwOpenThread(HANDLE
*,ACCESS_MASK
,const OBJECT_ATTRIBUTES
*,const CLIENT_ID
*);
1119 NTSTATUS WINAPI
ZwOpenThreadToken(HANDLE
,DWORD
,BOOLEAN
,HANDLE
*);
1120 NTSTATUS WINAPI
ZwOpenTimer(HANDLE
*, ACCESS_MASK
, const OBJECT_ATTRIBUTES
*);
1121 NTSTATUS WINAPI
ZwPowerInformation(POWER_INFORMATION_LEVEL
,PVOID
,ULONG
,PVOID
,ULONG
);
1122 NTSTATUS WINAPI
ZwPulseEvent(HANDLE
,PULONG
);
1123 NTSTATUS WINAPI
ZwQueryDefaultLocale(BOOLEAN
,LCID
*);
1124 NTSTATUS WINAPI
ZwQueryDefaultUILanguage(LANGID
*);
1125 NTSTATUS WINAPI
ZwQueryDirectoryFile(HANDLE
,HANDLE
,PIO_APC_ROUTINE
,PVOID
,PIO_STATUS_BLOCK
,PVOID
,ULONG
,FILE_INFORMATION_CLASS
,BOOLEAN
,PUNICODE_STRING
,BOOLEAN
);
1126 NTSTATUS WINAPI
ZwQueryDirectoryObject(HANDLE
,PDIRECTORY_BASIC_INFORMATION
,ULONG
,BOOLEAN
,BOOLEAN
,PULONG
,PULONG
);
1127 NTSTATUS WINAPI
ZwQueryEaFile(HANDLE
,PIO_STATUS_BLOCK
,PVOID
,ULONG
,BOOLEAN
,PVOID
,ULONG
,PVOID
,BOOLEAN
);
1128 NTSTATUS WINAPI
ZwQueryFullAttributesFile(const OBJECT_ATTRIBUTES
*,FILE_NETWORK_OPEN_INFORMATION
*);
1129 NTSTATUS WINAPI
ZwQueryInformationFile(HANDLE
,PIO_STATUS_BLOCK
,PVOID
,LONG
,FILE_INFORMATION_CLASS
);
1130 NTSTATUS WINAPI
ZwQueryInformationThread(HANDLE
,THREADINFOCLASS
,PVOID
,ULONG
,PULONG
);
1131 NTSTATUS WINAPI
ZwQueryInformationToken(HANDLE
,DWORD
,PVOID
,DWORD
,LPDWORD
);
1132 NTSTATUS WINAPI
ZwQueryInstallUILanguage(LANGID
*);
1133 NTSTATUS WINAPI
ZwQueryKey(HANDLE
,KEY_INFORMATION_CLASS
,void *,DWORD
,DWORD
*);
1134 NTSTATUS WINAPI
ZwQueryObject(HANDLE
, OBJECT_INFORMATION_CLASS
, PVOID
, ULONG
, PULONG
);
1135 NTSTATUS WINAPI
ZwQuerySecurityObject(HANDLE
,SECURITY_INFORMATION
,PSECURITY_DESCRIPTOR
,ULONG
,PULONG
);
1136 NTSTATUS WINAPI
ZwQuerySection(HANDLE
,SECTION_INFORMATION_CLASS
,PVOID
,ULONG
,PULONG
);
1137 NTSTATUS WINAPI
ZwQuerySymbolicLinkObject(HANDLE
,PUNICODE_STRING
,PULONG
);
1138 NTSTATUS WINAPI
ZwQuerySystemInformation(SYSTEM_INFORMATION_CLASS
,PVOID
,ULONG
,PULONG
);
1139 NTSTATUS WINAPI
ZwQueryTimerResolution(PULONG
,PULONG
,PULONG
);
1140 NTSTATUS WINAPI
ZwQueryValueKey(HANDLE
,const UNICODE_STRING
*,KEY_VALUE_INFORMATION_CLASS
,void *,DWORD
,DWORD
*);
1141 NTSTATUS WINAPI
ZwQueryVolumeInformationFile(HANDLE
,PIO_STATUS_BLOCK
,PVOID
,ULONG
,FS_INFORMATION_CLASS
);
1142 NTSTATUS WINAPI
ZwReadFile(HANDLE
,HANDLE
,PIO_APC_ROUTINE
,PVOID
,PIO_STATUS_BLOCK
,PVOID
,ULONG
,PLARGE_INTEGER
,PULONG
);
1143 NTSTATUS WINAPI
ZwReplaceKey(POBJECT_ATTRIBUTES
,HANDLE
,POBJECT_ATTRIBUTES
);
1144 NTSTATUS WINAPI
ZwRequestWaitReplyPort(HANDLE
,PLPC_MESSAGE
,PLPC_MESSAGE
);
1145 NTSTATUS WINAPI
ZwResetEvent(HANDLE
,PULONG
);
1146 NTSTATUS WINAPI
ZwRestoreKey(HANDLE
,HANDLE
,ULONG
);
1147 NTSTATUS WINAPI
ZwSaveKey(HANDLE
,HANDLE
);
1148 NTSTATUS WINAPI
ZwSecureConnectPort(PHANDLE
,PUNICODE_STRING
,PSECURITY_QUALITY_OF_SERVICE
,PLPC_SECTION_WRITE
,PSID
,PLPC_SECTION_READ
,PULONG
,PVOID
,PULONG
);
1149 NTSTATUS WINAPI
ZwSetDefaultLocale(BOOLEAN
,LCID
);
1150 NTSTATUS WINAPI
ZwSetDefaultUILanguage(LANGID
);
1151 NTSTATUS WINAPI
ZwSetEaFile(HANDLE
,PIO_STATUS_BLOCK
,PVOID
,ULONG
);
1152 NTSTATUS WINAPI
ZwSetEvent(HANDLE
,PULONG
);
1153 NTSTATUS WINAPI
ZwSetInformationFile(HANDLE
,PIO_STATUS_BLOCK
,PVOID
,ULONG
,FILE_INFORMATION_CLASS
);
1154 NTSTATUS WINAPI
ZwSetInformationKey(HANDLE
,const int,PVOID
,ULONG
);
1155 NTSTATUS WINAPI
ZwSetInformationObject(HANDLE
, OBJECT_INFORMATION_CLASS
, PVOID
, ULONG
);
1156 NTSTATUS WINAPI
ZwSetInformationProcess(HANDLE
,PROCESS_INFORMATION_CLASS
,PVOID
,ULONG
);
1157 NTSTATUS WINAPI
ZwSetInformationThread(HANDLE
,THREADINFOCLASS
,LPCVOID
,ULONG
);
1158 NTSTATUS WINAPI
ZwSetIoCompletion(HANDLE
,ULONG
,ULONG
,NTSTATUS
,ULONG
);
1159 NTSTATUS WINAPI
ZwSetSecurityObject(HANDLE
,SECURITY_INFORMATION
,PSECURITY_DESCRIPTOR
);
1160 NTSTATUS WINAPI
ZwSetSystemInformation(SYSTEM_INFORMATION_CLASS
,PVOID
,ULONG
);
1161 NTSTATUS WINAPI
ZwSetSystemTime(const LARGE_INTEGER
*,LARGE_INTEGER
*);
1162 NTSTATUS WINAPI
ZwSetTimer(HANDLE
, const LARGE_INTEGER
*, PTIMER_APC_ROUTINE
, PVOID
, BOOLEAN
, ULONG
, BOOLEAN
*);
1163 NTSTATUS WINAPI
ZwSetValueKey(HANDLE
,const UNICODE_STRING
*,ULONG
,ULONG
,const void *,ULONG
);
1164 NTSTATUS WINAPI
ZwSetVolumeInformationFile(HANDLE
,PIO_STATUS_BLOCK
,PVOID
,ULONG
,FS_INFORMATION_CLASS
);
1165 NTSTATUS WINAPI
ZwSuspendThread(HANDLE
,PULONG
);
1166 NTSTATUS WINAPI
ZwTerminateProcess(HANDLE
,LONG
);
1167 NTSTATUS WINAPI
ZwUnloadDriver(const UNICODE_STRING
*);
1168 NTSTATUS WINAPI
ZwUnloadKey(HANDLE
);
1169 NTSTATUS WINAPI
ZwUnmapViewOfSection(HANDLE
,PVOID
);
1170 NTSTATUS WINAPI
ZwWaitForSingleObject(HANDLE
,BOOLEAN
,const LARGE_INTEGER
*);
1171 NTSTATUS WINAPI
ZwWaitForMultipleObjects(ULONG
,const HANDLE
*,BOOLEAN
,BOOLEAN
,const LARGE_INTEGER
*);
1172 NTSTATUS WINAPI
ZwWriteFile(HANDLE
,HANDLE
,PIO_APC_ROUTINE
,PVOID
,PIO_STATUS_BLOCK
,const void*,ULONG
,PLARGE_INTEGER
,PULONG
);
1173 NTSTATUS WINAPI
ZwYieldExecution(void);