!INCLUDE $(NTMAKEENV)\makefile.plt !IFNDEF NTOSINC NTOSINC = $(PROJECT_ROOT)\ntos\inc !ENDIF PRVINC = $(PRIVATE_INC_PATH) PUBLISHEDDIR = $(PROJECT_ROOT)\published NTDDK_DEPENDS = $(NTOSINC)\ntosdef.h \ $(SDK_INC_PATH)\nti386.h \ $(SDK_INC_PATH)\ntamd64.h \ $(SDK_INC_PATH)\ntia64.h \ $(SDK_INC_PATH)\ntseapi.h \ $(SDK_INC_PATH)\ntkeapi.h \ $(SDK_INC_PATH)\ntrtl.h \ $(SDK_INC_PATH)\devioctl.h \ $(SDK_INC_PATH)\ntioapi.h \ $(SDK_INC_PATH)\ntiolog.h \ $(SDK_INC_PATH)\ntlpcapi.h \ $(SDK_INC_PATH)\ntregapi.h \ $(SDK_INC_PATH)\ntobapi.h \ $(SDK_INC_PATH)\ntmmapi.h \ $(SDK_INC_PATH)\ntpsapi.h \ $(SDK_INC_PATH)\ntpoapi.h \ $(SDK_INC_PATH)\ntpnpapi.h NTDDK_DEPENDS1= $(NTOSINC)\i386.h \ $(NTOSINC)\amd64.h \ $(NTOSINC)\ia64.h \ $(SDK_INC_PATH)\ntexapi.h \ $(SDK_INC_PATH)\ntconfig.h \ $(SDK_INC_PATH)\ntxcapi.h \ $(PUBLISHEDDIR)\arc.w \ $(NTOSINC)\ke.h \ $(NTOSINC)\kd.h \ $(NTOSINC)\ex.h \ $(NTOSINC)\cm.h \ $(NTOSINC)\exboosts.h \ $(NTOSINC)\mm.h \ $(NTOSINC)\se.h \ $(NTOSINC)\ps.h \ $(NTOSINC)\io.h \ $(NTOSINC)\wmi.h \ $(PUBLISHEDDIR)\ntwmi.w \ $(NTOSINC)\pnp.h \ $(NTOSINC)\hal.h \ $(NTOSINC)\po.h \ $(NTOSINC)\fsrtl.h \ $(NTOSINC)\ob.h \ $(NTOSINC)\pci.h NTWDM_DEPENDS = $(NTOSINC)\ntosdef.h \ $(SDK_INC_PATH)\nti386.h \ $(SDK_INC_PATH)\ntamd64.h \ $(SDK_INC_PATH)\ntia64.h \ $(SDK_INC_PATH)\ntseapi.h \ $(SDK_INC_PATH)\ntkeapi.h \ $(SDK_INC_PATH)\ntrtl.h \ $(SDK_INC_PATH)\devioctl.h \ $(SDK_INC_PATH)\ntioapi.h \ $(SDK_INC_PATH)\ntiolog.h \ $(SDK_INC_PATH)\ntlpcapi.h \ $(SDK_INC_PATH)\ntregapi.h \ $(SDK_INC_PATH)\ntobapi.h \ $(SDK_INC_PATH)\ntmmapi.h \ $(SDK_INC_PATH)\ntpsapi.h \ $(SDK_INC_PATH)\ntpoapi.h \ $(SDK_INC_PATH)\ntpnpapi.h NTWDM_DEPENDS1= $(NTOSINC)\i386.h \ $(NTOSINC)\amd64.h \ $(NTOSINC)\ia64.h \ $(SDK_INC_PATH)\ntexapi.h \ $(SDK_INC_PATH)\ntconfig.h \ $(SDK_INC_PATH)\ntxcapi.h \ $(NTOSINC)\ke.h \ $(NTOSINC)\kd.h \ $(NTOSINC)\ex.h \ $(NTOSINC)\cm.h \ $(NTOSINC)\exboosts.h \ $(NTOSINC)\mm.h \ $(NTOSINC)\se.h \ $(NTOSINC)\ps.h \ $(NTOSINC)\io.h \ $(NTOSINC)\wmi.h \ $(PUBLISHEDDIR)\ntwmi.w \ $(NTOSINC)\pnp.h \ $(NTOSINC)\hal.h \ $(NTOSINC)\po.h \ $(NTOSINC)\ob.h \ $(NTOSINC)\pci.h NTHAL_DEPENDS1= $(SDK_INC_PATH)\nti386.h \ $(SDK_INC_PATH)\ntamd64.h \ $(SDK_INC_PATH)\ntia64.h \ $(SDK_INC_PATH)\ntpsapi.h \ $(SDK_INC_PATH)\devioctl.h \ $(SDK_INC_PATH)\ntseapi.h \ $(SDK_INC_PATH)\ntkeapi.h \ $(SDK_INC_PATH)\ntlpcapi.h \ $(SDK_INC_PATH)\ntrtl.h \ $(SDK_INC_PATH)\ntregapi.h \ $(SDK_INC_PATH)\ntioapi.h \ $(SDK_INC_PATH)\ntiolog.h \ $(SDK_INC_PATH)\ntexapi.h \ $(SDK_INC_PATH)\ntobapi.h \ $(SDK_INC_PATH)\ntconfig.h \ $(SDK_INC_PATH)\ntpnpapi.h \ $(SDK_INC_PATH)\ntpoapi.h \ $(SDK_INC_PATH)\ntxcapi.h \ $(NTOSINC)\ntosdef.h \ $(NTOSINC)\i386.h \ $(NTOSINC)\amd64.h \ $(NTOSINC)\ia64.h NTHAL_DEPENDS2= $(NTOSINC)\ke.h \ $(NTOSINC)\kd.h \ $(NTOSINC)\ex.h \ $(NTOSINC)\se.h \ $(NTOSINC)\ps.h \ $(NTOSINC)\io.h \ $(NTOSINC)\pnp.h \ $(NTOSINC)\po.h \ $(NTOSINC)\mm.h \ $(NTOSINC)\ob.h \ $(NTOSINC)\hal.h NTMINIPORT_DEPENDS = \ $(SDK_INC_PATH)\ntdef.h \ $(SDK_INC_PATH)\nti386.h \ $(SDK_INC_PATH)\ntia64.h \ $(SDK_INC_PATH)\ntioapi.h \ $(SDK_INC_PATH)\ntrtl.h \ $(NTOSINC)\ke.h \ $(NTOSINC)\v86emul.h \ $(NTOSINC)\pci.h \ $(NTOSINC)\mm.h \ $(NTOSINC)\io.h \ $(NTOSINC)\pnp.h \ $(SDK_INC_PATH)\ntconfig.h NTIFS_DEPENDS = $(SDK_INC_PATH)\ntseapi.h \ $(NTOSINC)\ntosdef.h \ $(SDK_INC_PATH)\ntkeapi.h NTIFS_DEPENDS1= $(SDK_INC_PATH)\nti386.h \ $(SDK_INC_PATH)\ntamd64.h \ $(SDK_INC_PATH)\ntia64.h NTIFS_DEPENDS2= $(SDK_INC_PATH)\ntrtl.h \ $(SDK_INC_PATH)\ntpoapi.h \ $(SDK_INC_PATH)\devioctl.h \ $(SDK_INC_PATH)\ntpsapi.h \ $(SDK_INC_PATH)\ntlsa.h \ $(SDK_INC_PATH)\ntmsv1_0.h \ $(SDK_INC_PATH)\ntioapi.h \ $(SDK_INC_PATH)\ntlpcapi.h \ $(SDK_INC_PATH)\ntobapi.h \ $(SDK_INC_PATH)\ntmmapi.h \ $(NTOSINC)\exboosts.h NTIFS_DEPENDS3= $(NTOSINC)\i386.h \ $(NTOSINC)\amd64.h \ $(NTOSINC)\ia64.h \ $(BASE_INC_PATH)\arc.h \ $(SDK_INC_PATH)\ntobapi.h \ $(SDK_INC_PATH)\ntconfig.h \ $(SDK_INC_PATH)\ntregapi.h \ $(SDK_INC_PATH)\ntmmapi.h \ $(SDK_INC_PATH)\ntxcapi.h \ $(SDK_INC_PATH)\ntlpcapi.h \ $(SDK_INC_PATH)\ntiolog.h NTIFS_DEPENDS4= $(SDK_INC_PATH)\ntexapi.h \ $(NTOSINC)\ke.h \ $(NTOSINC)\ex.h \ $(NTOSINC)\se.h \ $(NTOSINC)\ps.h \ $(NTOSINC)\io.h \ $(NTOSINC)\po.h \ $(NTOSINC)\hal.h \ $(NTOSINC)\mm.h \ $(NTOSINC)\ob.h \ $(NTOSINC)\fsrtl.h \ $(NTOSINC)\cache.h \ $(SDK_INC_PATH)\sspi.h \ $(DS_INC_PATH)\secint.h \ $(BASE_INC_PATH)\zwapi.h \ $(NTOSINC)\kd.h \ $(DRIVERS_INC_PATH)\ntddsnap.h NTWMIKM_DEPENDS = $(NTOSINC)\io.h \ $(PUBLISHEDDIR)\ntwmi.w \ $(NTOSINC)\wmi.h NTOSP_DEPENDS = $(NTOSINC)\ntosdef.h \ $(SDK_INC_PATH)\ntkeapi.h \ $(SDK_INC_PATH)\ntrtl.h \ $(NTOSINC)\v86emul.h \ $(NTOSINC)\i386.h \ $(NTOSINC)\init.h \ $(NTOSINC)\amd64.h \ $(NTOSINC)\ia64.h \ $(SDK_INC_PATH)\ntseapi.h \ $(NTOSINC)\cm.h \ $(PUBLISHEDDIR)\arc.w \ $(NTOSINC)\ke.h \ $(NTOSINC)\ex.h \ $(NTOSINC)\kd.h \ $(NTOSINC)\exboosts.h \ $(NTOSINC)\io.h \ $(NTOSINC)\pnp.h \ $(NTOSINC)\hal.h \ $(NTOSINC)\mm.h \ $(NTOSINC)\se.h \ $(NTOSINC)\po.h \ $(NTOSINC)\ps.h \ $(NTOSINC)\ob.h \ $(NTOSINC)\pci.h \ $(NTOSINC)\fsrtl.h \ $(NTOSINC)\lpc.h NDIS_BASE_DEPENDS = \ $(SDK_INC_PATH)\ntdef.h \ $(NTOSINC)\ntosdef.h \ $(SDK_INC_PATH)\ntkeapi.h \ $(SDK_INC_PATH)\ntioapi.h \ $(SDK_INC_PATH)\ntrtl.h \ $(SDK_INC_PATH)\ntiolog.h \ $(NTOSINC)\i386.h \ $(NTOSINC)\amd64.h \ $(NTOSINC)\ia64.h \ $(SDK_INC_PATH)\ntconfig.h \ $(NTOSINC)\ke.h \ $(NTOSINC)\io.h \ $(NTOSINC)\hal.h \ $(NTOSINC)\ex.h \ $(NTOSINC)\pci.h \ $(NTOSINC)\mm.h \ !ifndef O O=$(_OBJ_DIR)\$(TARGET_DIRECTORY) !endif !if !exist($(O)) !if [-mkdir $(O)] !endif !endif all: $(DDK_INC_PATH)\ntddk.h \ $(SDK_INC_PATH)\wdm.nt \ $(HALKIT_INC_PATH)\nthal.h \ $(DDK_INC_PATH)\miniport.h \ $(PRVINC)\wmikm.h \ $(IFSKIT_INC_PATH)\ntifs.h \ $(PRVINC)\ntosp.h \ $(PRVINC)\class.h \ $(PRVINC)\tape.h \ $(PRVINC)\ndisbase.w \ keheaders !IF "$(BUILDMSG)" != "" echo $(BUILDMSG) !ENDIF clean: cleaninc all cleaninc: -del $(O)\*.* /q $(DDK_INC_PATH)\ntddk.h: $(O)\ntddk.h $(PUBLISH_CMD) {$?=$@} $(SDK_INC_PATH)\wdm.nt: $(O)\wdm.nt $(PUBLISH_CMD) {$?=$@} $(HALKIT_INC_PATH)\nthal.h: $(O)\nthal.h $(PUBLISH_CMD) {$?=$@} $(DDK_INC_PATH)\miniport.h: $(O)\miniport.h $(PUBLISH_CMD) {$?=$(DDK_INC_PATH)\miniport.h} $(PRVINC)\ndisbase.w: $(O)\ndisbase.w $(PUBLISH_CMD) {$?=$@} $(IFSKIT_INC_PATH)\ntifs.h: $(O)\ntifs.h $(PUBLISH_CMD) {$?=$@} $(PRVINC)\wmikm.h: $(O)\wmikm.h $(PUBLISH_CMD) {$?=$@} $(PRVINC)\ntosp.h: $(O)\ntosp.h $(PUBLISH_CMD) {$?=$@} $(PRVINC)\class.h: inc\class.h $(PUBLISH_CMD) {$?=$@} $(PRVINC)\tape.h: inc\tape.h $(PUBLISH_CMD) {$?=$@} $(O)\ntddk.h: $(NTDDK_DEPENDS) $(NTDDK_DEPENDS1) makefil0 type << > $@ /*++ BUILD Version: ???? // Increment this if a change has global effects $(COPYRIGHT_STRING) Module Name: ntddk.h Abstract: This module defines the NT types, constants, and functions that are exposed to device drivers. Revision History: --*/ #ifndef _NTDDK_ #define _NTDDK_ #ifndef RC_INVOKED #if _MSC_VER < 1300 #error Compiler version not supported by Windows DDK #endif #endif // RC_INVOKED #define NT_INCLUDED #define _CTYPE_DISABLE_MACROS #include #include #include #include #include << type $(NTOSINC)\exlevels.h >> $@ type << >> $@ // // Define types that are not exported. // typedef struct _BUS_HANDLER *PBUS_HANDLER; typedef struct _CALLBACK_OBJECT *PCALLBACK_OBJECT; typedef struct _DEVICE_HANDLER_OBJECT *PDEVICE_HANDLER_OBJECT; typedef struct _EPROCESS *PEPROCESS; typedef struct _ETHREAD *PETHREAD; typedef struct _IO_TIMER *PIO_TIMER; typedef struct _KINTERRUPT *PKINTERRUPT; typedef struct _KTHREAD *PKTHREAD, *PRKTHREAD; typedef struct _OBJECT_TYPE *POBJECT_TYPE; typedef struct _PEB *PPEB; #if defined(_M_AMD64) PKTHREAD NTAPI KeGetCurrentThread( VOID ); #endif // defined(_M_AMD64) #if defined(_M_IX86) PKTHREAD NTAPI KeGetCurrentThread(); #endif // defined(_M_IX86) #if defined(_M_IA64) // // Define Address of Processor Control Registers. // #define KIPCR ((ULONG_PTR)(KADDRESS_BASE + 0xffff0000)) // kernel address of first PCR // // Define Pointer to Processor Control Registers. // #define PCR ((volatile KPCR * const)KIPCR) PKTHREAD NTAPI KeGetCurrentThread(); #endif // defined(_M_IA64) #define PsGetCurrentProcess() IoGetCurrentProcess() #define PsGetCurrentThread() ((PETHREAD) (KeGetCurrentThread())) extern NTSYSAPI CCHAR KeNumberProcessors; #include #ifndef FAR #define FAR #endif << hextract -o $@ -lt ntddk -bt begin_ntddk end_ntddk $(NTDDK_DEPENDS) hextract -o $@ -lt ntddk -bt begin_ntddk end_ntddk $(NTDDK_DEPENDS1) type << >> $@ #ifdef POOL_TAGGING #define ExAllocatePool(a,b) ExAllocatePoolWithTag(a,b,' kdD') #define ExAllocatePoolWithQuota(a,b) ExAllocatePoolWithQuotaTag(a,b,' kdD') #endif extern POBJECT_TYPE *IoFileObjectType; extern POBJECT_TYPE *ExEventObjectType; extern POBJECT_TYPE *ExSemaphoreObjectType; // // Define exported ZwXxx routines to device drivers. // NTSYSAPI NTSTATUS NTAPI ZwCreateFile( 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 ZwOpenFile( OUT PHANDLE FileHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PIO_STATUS_BLOCK IoStatusBlock, IN ULONG ShareAccess, IN ULONG OpenOptions ); NTSYSAPI NTSTATUS NTAPI ZwQueryInformationFile( IN HANDLE FileHandle, OUT PIO_STATUS_BLOCK IoStatusBlock, OUT PVOID FileInformation, IN ULONG Length, IN FILE_INFORMATION_CLASS FileInformationClass ); NTSYSAPI NTSTATUS NTAPI ZwSetInformationFile( IN HANDLE FileHandle, OUT PIO_STATUS_BLOCK IoStatusBlock, IN PVOID FileInformation, IN ULONG Length, IN FILE_INFORMATION_CLASS FileInformationClass ); NTSYSAPI NTSTATUS NTAPI ZwReadFile( IN HANDLE FileHandle, IN HANDLE Event OPTIONAL, IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, IN PVOID ApcContext OPTIONAL, OUT PIO_STATUS_BLOCK IoStatusBlock, OUT PVOID Buffer, IN ULONG Length, IN PLARGE_INTEGER ByteOffset OPTIONAL, IN PULONG Key OPTIONAL ); NTSYSAPI NTSTATUS NTAPI ZwWriteFile( IN HANDLE FileHandle, IN HANDLE Event OPTIONAL, IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, IN PVOID ApcContext OPTIONAL, OUT PIO_STATUS_BLOCK IoStatusBlock, IN PVOID Buffer, IN ULONG Length, IN PLARGE_INTEGER ByteOffset OPTIONAL, IN PULONG Key OPTIONAL ); NTSYSAPI NTSTATUS NTAPI ZwClose( IN HANDLE Handle ); NTSYSAPI NTSTATUS NTAPI ZwCreateDirectoryObject( OUT PHANDLE DirectoryHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes ); NTSYSAPI NTSTATUS NTAPI ZwMakeTemporaryObject( IN HANDLE Handle ); NTSYSAPI NTSTATUS NTAPI ZwOpenSection( OUT PHANDLE SectionHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes ); NTSYSAPI NTSTATUS NTAPI ZwMapViewOfSection( IN HANDLE SectionHandle, IN HANDLE ProcessHandle, IN OUT PVOID *BaseAddress, IN ULONG ZeroBits, IN ULONG CommitSize, IN OUT PLARGE_INTEGER SectionOffset OPTIONAL, IN OUT PSIZE_T ViewSize, IN SECTION_INHERIT InheritDisposition, IN ULONG AllocationType, IN ULONG Protect ); NTSYSAPI NTSTATUS NTAPI ZwUnmapViewOfSection( IN HANDLE ProcessHandle, IN PVOID BaseAddress ); NTSYSAPI NTSTATUS NTAPI ZwSetInformationThread( IN HANDLE ThreadHandle, IN THREADINFOCLASS ThreadInformationClass, IN PVOID ThreadInformation, IN ULONG ThreadInformationLength ); NTSYSAPI NTSTATUS NTAPI ZwCreateKey( OUT PHANDLE KeyHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, IN ULONG TitleIndex, IN PUNICODE_STRING Class OPTIONAL, IN ULONG CreateOptions, OUT PULONG Disposition OPTIONAL ); NTSYSAPI NTSTATUS NTAPI ZwOpenKey( OUT PHANDLE KeyHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes ); NTSYSAPI NTSTATUS NTAPI ZwDeleteKey( IN HANDLE KeyHandle ); NTSYSAPI NTSTATUS NTAPI ZwDeleteValueKey( IN HANDLE KeyHandle, IN PUNICODE_STRING ValueName ); NTSYSAPI NTSTATUS NTAPI ZwEnumerateKey( IN HANDLE KeyHandle, IN ULONG Index, IN KEY_INFORMATION_CLASS KeyInformationClass, OUT PVOID KeyInformation, IN ULONG Length, OUT PULONG ResultLength ); NTSYSAPI NTSTATUS NTAPI ZwEnumerateValueKey( IN HANDLE KeyHandle, IN ULONG Index, IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass, OUT PVOID KeyValueInformation, IN ULONG Length, OUT PULONG ResultLength ); NTSYSAPI NTSTATUS NTAPI ZwFlushKey( IN HANDLE KeyHandle ); NTSYSAPI NTSTATUS NTAPI ZwQueryKey( IN HANDLE KeyHandle, IN KEY_INFORMATION_CLASS KeyInformationClass, OUT PVOID KeyInformation, IN ULONG Length, OUT PULONG ResultLength ); NTSYSAPI NTSTATUS NTAPI ZwQueryValueKey( IN HANDLE KeyHandle, IN PUNICODE_STRING ValueName, IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass, OUT PVOID KeyValueInformation, IN ULONG Length, OUT PULONG ResultLength ); NTSYSAPI NTSTATUS NTAPI ZwSetValueKey( IN HANDLE KeyHandle, IN PUNICODE_STRING ValueName, IN ULONG TitleIndex OPTIONAL, IN ULONG Type, IN PVOID Data, IN ULONG DataSize ); NTSYSAPI NTSTATUS NTAPI ZwOpenSymbolicLinkObject( OUT PHANDLE LinkHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes ); NTSYSAPI NTSTATUS NTAPI ZwQuerySymbolicLinkObject( IN HANDLE LinkHandle, IN OUT PUNICODE_STRING LinkTarget, OUT PULONG ReturnedLength OPTIONAL ); NTSTATUS ZwCreateTimer ( OUT PHANDLE TimerHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN TIMER_TYPE TimerType ); NTSTATUS ZwOpenTimer ( OUT PHANDLE TimerHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes ); NTSTATUS ZwCancelTimer ( IN HANDLE TimerHandle, OUT PBOOLEAN CurrentState OPTIONAL ); NTSTATUS ZwSetTimer ( IN HANDLE TimerHandle, IN PLARGE_INTEGER DueTime, IN PTIMER_APC_ROUTINE TimerApcRoutine OPTIONAL, IN PVOID TimerContext OPTIONAL, IN BOOLEAN WakeTimer, IN LONG Period OPTIONAL, OUT PBOOLEAN PreviousState OPTIONAL ); #endif // _NTDDK_ << $(O)\wdm.nt: $(NTWDM_DEPENDS) $(NTWDM_DEPENDS1) makefil0 wdm.mng type << > $@ /*++ BUILD Version: ???? // Increment this if a change has global effects $(COPYRIGHT_STRING) Module Name: wdm.h Abstract: This module defines the WDM types, constants, and functions that are exposed to device drivers. Revision History: --*/ #ifndef _WDMDDK_ #define _WDMDDK_ #define _NTDDK_ #ifndef RC_INVOKED #if _MSC_VER < 1300 #error Compiler version not supported by Windows DDK #endif #endif // RC_INVOKED #define NT_INCLUDED #define _CTYPE_DISABLE_MACROS #include #include #include #include #include // // Define types that are not exported. // typedef struct _ACCESS_STATE *PACCESS_STATE; typedef struct _CALLBACK_OBJECT *PCALLBACK_OBJECT; typedef struct _EPROCESS *PEPROCESS; typedef struct _ETHREAD *PETHREAD; typedef struct _IO_TIMER *PIO_TIMER; typedef struct _KINTERRUPT *PKINTERRUPT; typedef struct _KTHREAD *PKTHREAD, *PRKTHREAD; typedef struct _OBJECT_TYPE *POBJECT_TYPE; typedef struct _SECURITY_QUALITY_OF_SERVICE *PSECURITY_QUALITY_OF_SERVICE; #if defined(_M_AMD64) PKTHREAD NTAPI KeGetCurrentThread( VOID ); #endif // defined(_M_AMD64) #if defined(_M_IX86) PKTHREAD NTAPI KeGetCurrentThread(); #endif // defined(_M_IX86) #if defined(_M_IA64) // // Define base address for kernel and user space // #ifdef _WIN64 #define UREGION_INDEX 1 #define KREGION_INDEX 7 #define UADDRESS_BASE ((ULONG_PTR)UREGION_INDEX << 61) #define KADDRESS_BASE ((ULONG_PTR)KREGION_INDEX << 61) #else // !_WIN64 #define KADDRESS_BASE 0 #define UADDRESS_BASE 0 #endif // !_WIN64 // // Define Address of Processor Control Registers. // #define KIPCR ((ULONG_PTR)(KADDRESS_BASE + 0xffff0000)) // kernel address of first PCR // // Define Pointer to Processor Control Registers. // #define PCR ((volatile KPCR * const)KIPCR) PKTHREAD NTAPI KeGetCurrentThread(); #endif // defined(_M_IA64) #include #ifndef FAR #define FAR #endif #define PsGetCurrentProcess() IoGetCurrentProcess() #define PsGetCurrentThread() ((PETHREAD) (KeGetCurrentThread())) extern NTSYSAPI CCHAR KeNumberProcessors; << hextract -o $@ -lt wdm -bt begin_wdm end_wdm $(NTWDM_DEPENDS) hextract -o $@ -lt wdm -bt begin_wdm end_wdm $(NTWDM_DEPENDS1) type << >> $@ #ifdef POOL_TAGGING #define ExAllocatePool(a,b) ExAllocatePoolWithTag(a,b,' mdW') #define ExAllocatePoolWithQuota(a,b) ExAllocatePoolWithQuotaTag(a,b,' kdD') #endif extern POBJECT_TYPE *IoFileObjectType; extern POBJECT_TYPE *ExEventObjectType; extern POBJECT_TYPE *ExSemaphoreObjectType; // // Define exported ZwXxx routines to device drivers. // NTSYSAPI NTSTATUS NTAPI ZwCreateFile( 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 ZwOpenFile( OUT PHANDLE FileHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PIO_STATUS_BLOCK IoStatusBlock, IN ULONG ShareAccess, IN ULONG OpenOptions ); NTSYSAPI NTSTATUS NTAPI ZwQueryInformationFile( IN HANDLE FileHandle, OUT PIO_STATUS_BLOCK IoStatusBlock, OUT PVOID FileInformation, IN ULONG Length, IN FILE_INFORMATION_CLASS FileInformationClass ); NTSYSAPI NTSTATUS NTAPI ZwSetInformationFile( IN HANDLE FileHandle, OUT PIO_STATUS_BLOCK IoStatusBlock, IN PVOID FileInformation, IN ULONG Length, IN FILE_INFORMATION_CLASS FileInformationClass ); NTSYSAPI NTSTATUS NTAPI ZwReadFile( IN HANDLE FileHandle, IN HANDLE Event OPTIONAL, IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, IN PVOID ApcContext OPTIONAL, OUT PIO_STATUS_BLOCK IoStatusBlock, OUT PVOID Buffer, IN ULONG Length, IN PLARGE_INTEGER ByteOffset OPTIONAL, IN PULONG Key OPTIONAL ); NTSYSAPI NTSTATUS NTAPI ZwWriteFile( IN HANDLE FileHandle, IN HANDLE Event OPTIONAL, IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, IN PVOID ApcContext OPTIONAL, OUT PIO_STATUS_BLOCK IoStatusBlock, IN PVOID Buffer, IN ULONG Length, IN PLARGE_INTEGER ByteOffset OPTIONAL, IN PULONG Key OPTIONAL ); NTSYSAPI NTSTATUS NTAPI ZwClose( IN HANDLE Handle ); NTSYSAPI NTSTATUS NTAPI ZwCreateDirectoryObject( OUT PHANDLE DirectoryHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes ); NTSYSAPI NTSTATUS NTAPI ZwMakeTemporaryObject( IN HANDLE Handle ); NTSYSAPI NTSTATUS NTAPI ZwOpenSection( OUT PHANDLE SectionHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes ); NTSYSAPI NTSTATUS NTAPI ZwMapViewOfSection( IN HANDLE SectionHandle, IN HANDLE ProcessHandle, IN OUT PVOID *BaseAddress, IN ULONG ZeroBits, IN ULONG CommitSize, IN OUT PLARGE_INTEGER SectionOffset OPTIONAL, IN OUT PSIZE_T ViewSize, IN SECTION_INHERIT InheritDisposition, IN ULONG AllocationType, IN ULONG Protect ); NTSYSAPI NTSTATUS NTAPI ZwUnmapViewOfSection( IN HANDLE ProcessHandle, IN PVOID BaseAddress ); NTSYSAPI NTSTATUS NTAPI ZwCreateKey( OUT PHANDLE KeyHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, IN ULONG TitleIndex, IN PUNICODE_STRING Class OPTIONAL, IN ULONG CreateOptions, OUT PULONG Disposition OPTIONAL ); NTSYSAPI NTSTATUS NTAPI ZwOpenKey( OUT PHANDLE KeyHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes ); NTSYSAPI NTSTATUS NTAPI ZwDeleteKey( IN HANDLE KeyHandle ); NTSYSAPI NTSTATUS NTAPI ZwDeleteValueKey( IN HANDLE KeyHandle, IN PUNICODE_STRING ValueName ); NTSYSAPI NTSTATUS NTAPI ZwEnumerateKey( IN HANDLE KeyHandle, IN ULONG Index, IN KEY_INFORMATION_CLASS KeyInformationClass, OUT PVOID KeyInformation, IN ULONG Length, OUT PULONG ResultLength ); NTSYSAPI NTSTATUS NTAPI ZwEnumerateValueKey( IN HANDLE KeyHandle, IN ULONG Index, IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass, OUT PVOID KeyValueInformation, IN ULONG Length, OUT PULONG ResultLength ); NTSYSAPI NTSTATUS NTAPI ZwFlushKey( IN HANDLE KeyHandle ); NTSYSAPI NTSTATUS NTAPI ZwQueryKey( IN HANDLE KeyHandle, IN KEY_INFORMATION_CLASS KeyInformationClass, OUT PVOID KeyInformation, IN ULONG Length, OUT PULONG ResultLength ); NTSYSAPI NTSTATUS NTAPI ZwQueryValueKey( IN HANDLE KeyHandle, IN PUNICODE_STRING ValueName, IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass, OUT PVOID KeyValueInformation, IN ULONG Length, OUT PULONG ResultLength ); NTSYSAPI NTSTATUS NTAPI ZwSetValueKey( IN HANDLE KeyHandle, IN PUNICODE_STRING ValueName, IN ULONG TitleIndex OPTIONAL, IN ULONG Type, IN PVOID Data, IN ULONG DataSize ); NTSYSAPI NTSTATUS NTAPI ZwOpenSymbolicLinkObject( OUT PHANDLE LinkHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes ); NTSYSAPI NTSTATUS NTAPI ZwQuerySymbolicLinkObject( IN HANDLE LinkHandle, IN OUT PUNICODE_STRING LinkTarget, OUT PULONG ReturnedLength OPTIONAL ); #endif // _WDMDDK_ << -munge wdm.mng -k -m -i -t $@ $(O)\nthal.h: $(NTHAL_DEPENDS1) $(NTHAL_DEPENDS2) makefil0 type << > $@ /*++ BUILD Version: ???? // Increment this if a change has global effects $(COPYRIGHT_STRING) Module Name: nthal.h Abstract: This module defines the NT types, constants, and functions that are exposed to HALs. Revision History: --*/ #ifndef _NTHAL_ #define _NTHAL_ #ifndef RC_INVOKED #if _MSC_VER < 1300 #error Compiler version not supported by Windows DDK #endif #endif // RC_INVOKED #include #include #include #include #include // // Define types that are not exported. // typedef struct _CALLBACK_OBJECT *PCALLBACK_OBJECT; typedef struct _ETHREAD *PETHREAD; typedef struct _FAST_IO_DISPATCH *PFAST_IO_DISPATCH; typedef struct _IO_SECURITY_CONTEXT *PIO_SECURITY_CONTEXT; typedef struct _IO_TIMER *PIO_TIMER; typedef struct _KTHREAD *PKTHREAD, *PRKTHREAD; typedef struct _OBJECT_TYPE *POBJECT_TYPE; struct _IRP; #if defined(_M_AMD64) PKTHREAD NTAPI KeGetCurrentThread( VOID ); #endif // defined(_M_AMD64) #if defined(_M_IX86) PKTHREAD NTAPI KeGetCurrentThread(); #endif // defined(_M_IX86) #include << hextract -o $@ -lt nthal -bt begin_nthal end_nthal $(NTHAL_DEPENDS1) type << >> $@ #include << hextract -o $@ -lt nthal -bt begin_nthal end_nthal $(NTHAL_DEPENDS2) type << >> $@ // // Define exported ZwXxx routines to device drivers & hal // NTSYSAPI NTSTATUS NTAPI ZwClose( IN HANDLE Handle ); NTSYSAPI NTSTATUS NTAPI ZwCreateDirectoryObject( OUT PHANDLE DirectoryHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes ); NTSYSAPI NTSTATUS NTAPI ZwCreateKey( OUT PHANDLE KeyHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, IN ULONG TitleIndex, IN PUNICODE_STRING Class OPTIONAL, IN ULONG CreateOptions, OUT PULONG Disposition OPTIONAL ); NTSYSAPI NTSTATUS NTAPI ZwOpenKey( OUT PHANDLE KeyHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes ); NTSYSAPI NTSTATUS NTAPI ZwEnumerateKey( IN HANDLE KeyHandle, IN ULONG Index, IN KEY_INFORMATION_CLASS KeyInformationClass, OUT PVOID KeyInformation, IN ULONG Length, OUT PULONG ResultLength ); NTSYSAPI NTSTATUS NTAPI ZwEnumerateValueKey( IN HANDLE KeyHandle, IN ULONG Index, IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass, OUT PVOID KeyValueInformation, IN ULONG Length, OUT PULONG ResultLength ); NTSYSAPI NTSTATUS NTAPI ZwFlushKey( IN HANDLE KeyHandle ); NTSYSAPI NTSTATUS NTAPI ZwQueryKey( IN HANDLE KeyHandle, IN KEY_INFORMATION_CLASS KeyInformationClass, OUT PVOID KeyInformation, IN ULONG Length, OUT PULONG ResultLength ); NTSYSAPI NTSTATUS NTAPI ZwQueryValueKey( IN HANDLE KeyHandle, IN PUNICODE_STRING ValueName, IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass, OUT PVOID KeyValueInformation, IN ULONG Length, OUT PULONG ResultLength ); NTSYSAPI NTSTATUS NTAPI ZwSetValueKey( IN HANDLE KeyHandle, IN PUNICODE_STRING ValueName, IN ULONG TitleIndex OPTIONAL, IN ULONG Type, IN PVOID Data, IN ULONG DataSize ); NTSYSAPI NTSTATUS NTAPI ZwMakeTemporaryObject( IN HANDLE Handle ); NTSYSAPI NTSTATUS NTAPI ZwQueryVolumeInformationFile( IN HANDLE FileHandle, OUT PIO_STATUS_BLOCK IoStatusBlock, OUT PVOID FsInformation, IN ULONG Length, IN FS_INFORMATION_CLASS FsInformationClass ); NTSYSAPI NTSTATUS NTAPI ZwOpenFile( OUT PHANDLE FileHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PIO_STATUS_BLOCK IoStatusBlock, IN ULONG ShareAccess, IN ULONG OpenOptions ); NTSYSAPI NTSTATUS NTAPI ZwDeviceIoControlFile( IN HANDLE FileHandle, IN HANDLE Event OPTIONAL, IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, IN PVOID ApcContext OPTIONAL, OUT PIO_STATUS_BLOCK IoStatusBlock, IN ULONG IoControlCode, IN PVOID InputBuffer OPTIONAL, IN ULONG InputBufferLength, OUT PVOID OutputBuffer OPTIONAL, IN ULONG OutputBufferLength ); NTSYSAPI NTSTATUS NTAPI ZwDisplayString( IN PUNICODE_STRING String ); NTSYSAPI NTSTATUS NTAPI ZwPowerInformation( IN POWER_INFORMATION_LEVEL InformationLevel, IN PVOID InputBuffer OPTIONAL, IN ULONG InputBufferLength, OUT PVOID OutputBuffer OPTIONAL, IN ULONG OutputBufferLength ); #endif // _NTHAL_ << $(O)\miniport.h: $(NTMINIPORT_DEPENDS) makefil0 type << > $@ /*++ $(COPYRIGHT_STRING) Module Name: miniport.h Abstract: Type definitions for miniport drivers. Revision History: --*/ #ifndef _MINIPORT_ #define _MINIPORT_ #include "stddef.h" #define ASSERT( exp ) #ifndef FAR #define FAR #endif << hextract -o $@ -lt ntminiport -bt begin_ntminiport end_ntminiport $(NTMINIPORT_DEPENDS) type << >> $@ #endif /* _MINIPORT_ */ << $(O)\ntifs.h: $(NTIFS_DEPENDS) $(NTIFS_DEPENDS1) $(NTIFS_DEPENDS2) $(NTIFS_DEPENDS3) $(NTIFS_DEPENDS4) makefil0 type << > $@ /*++ BUILD Version: ???? // Increment this if a change has global effects $(COPYRIGHT_STRING) Module Name: ntifs.h Abstract: This module defines the NT types, constants, and functions that are exposed to file system drivers. Revision History: --*/ #ifndef _NTIFS_ #define _NTIFS_ #ifndef RC_INVOKED #if _MSC_VER < 1300 #error Compiler version not supported by Windows DDK #endif #endif // RC_INVOKED #ifndef __cplusplus #pragma warning(disable:4116) // TYPE_ALIGNMENT generates this - move it // outside the warning push/pop scope. #endif #define NT_INCLUDED #define _NTMSV1_0_ #define _CTYPE_DISABLE_MACROS #include #include #include #include #include #include << type $(NTOSINC)\exlevels.h >> $@ type << >> $@ // // These macros are used to test, set and clear flags respectivly // #ifndef FlagOn #define FlagOn(_F,_SF) ((_F) & (_SF)) #endif #ifndef BooleanFlagOn #define BooleanFlagOn(F,SF) ((BOOLEAN)(((F) & (SF)) != 0)) #endif #ifndef SetFlag #define SetFlag(_F,_SF) ((_F) |= (_SF)) #endif #ifndef ClearFlag #define ClearFlag(_F,_SF) ((_F) &= ~(_SF)) #endif // // Define types that are not exported. // typedef struct _BUS_HANDLER *PBUS_HANDLER; typedef struct _CALLBACK_OBJECT *PCALLBACK_OBJECT; typedef struct _DEVICE_HANDLER_OBJECT *PDEVICE_HANDLER_OBJECT; typedef struct _IO_TIMER *PIO_TIMER; typedef struct _KINTERRUPT *PKINTERRUPT; typedef struct _KPROCESS *PKPROCESS ,*PRKPROCESS, *PEPROCESS; typedef struct _KTHREAD *PKTHREAD, *PRKTHREAD, *PETHREAD; typedef struct _OBJECT_TYPE *POBJECT_TYPE; typedef struct _PEB *PPEB; #if defined(_M_AMD64) PKTHREAD NTAPI KeGetCurrentThread( VOID ); #endif // defined(_M_AMD64) #if defined(_M_IX86) PKTHREAD NTAPI KeGetCurrentThread(); #endif // defined(_M_IX86) #if defined(_M_IA64) // // Define Address of Processor Control Registers. // #define KIPCR ((ULONG_PTR)(KADDRESS_BASE + 0xffff0000)) // kernel address of first PCR // // Define Pointer to Processor Control Registers. // #define PCR ((volatile KPCR * const)KIPCR) PKTHREAD NTAPI KeGetCurrentThread(); #endif // defined(_M_IA64) #define PsGetCurrentProcess() IoGetCurrentProcess() #define PsGetCurrentThread() ((PETHREAD) (KeGetCurrentThread())) extern NTSYSAPI CCHAR KeNumberProcessors; << hextract -o $@ -lt ntifs -bt begin_ntifs end_ntifs $(NTIFS_DEPENDS) hextract -o $@ -lt ntddk -bt begin_ntddk end_ntddk $(NTIFS_DEPENDS1) hextract -o $@ -lt ntifs -bt begin_ntifs end_ntifs $(NTIFS_DEPENDS2) hextract -o $@ -lt ntddk -bt begin_ntddk end_ntddk $(NTIFS_DEPENDS3) hextract -o $@ -lt ntifs -bt begin_ntifs end_ntifs $(NTIFS_DEPENDS4) type << >> $@ // // Runtime Library function prototypes. // NTSYSAPI VOID NTAPI RtlCaptureContext ( OUT PCONTEXT ContextRecord ); #ifdef POOL_TAGGING #define ExAllocatePool(a,b) ExAllocatePoolWithTag(a,b,' sfI') #define ExAllocatePoolWithQuota(a,b) ExAllocatePoolWithQuotaTag(a,b,' sfI') #endif extern POBJECT_TYPE *PsThreadType; extern POBJECT_TYPE *IoFileObjectType; extern POBJECT_TYPE *ExEventObjectType; extern POBJECT_TYPE *ExSemaphoreObjectType; // // Define exported ZwXxx routines to device drivers. // NTSYSAPI NTSTATUS NTAPI ZwCreateEvent ( OUT PHANDLE EventHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN EVENT_TYPE EventType, IN BOOLEAN InitialState ); NTSYSAPI NTSTATUS NTAPI ZwCreateFile( 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 ZwDeleteFile( IN POBJECT_ATTRIBUTES ObjectAttributes ); NTSYSAPI NTSTATUS NTAPI ZwDeviceIoControlFile( IN HANDLE FileHandle, IN HANDLE Event OPTIONAL, IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, IN PVOID ApcContext OPTIONAL, OUT PIO_STATUS_BLOCK IoStatusBlock, IN ULONG IoControlCode, IN PVOID InputBuffer OPTIONAL, IN ULONG InputBufferLength, OUT PVOID OutputBuffer OPTIONAL, IN ULONG OutputBufferLength ); NTSYSAPI NTSTATUS NTAPI ZwOpenFile( OUT PHANDLE FileHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PIO_STATUS_BLOCK IoStatusBlock, IN ULONG ShareAccess, IN ULONG OpenOptions ); NTSYSAPI NTSTATUS NTAPI ZwQueryDirectoryFile( IN HANDLE FileHandle, IN HANDLE Event OPTIONAL, IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, IN PVOID ApcContext OPTIONAL, OUT PIO_STATUS_BLOCK IoStatusBlock, OUT PVOID FileInformation, IN ULONG Length, IN FILE_INFORMATION_CLASS FileInformationClass, IN BOOLEAN ReturnSingleEntry, IN PUNICODE_STRING FileName OPTIONAL, IN BOOLEAN RestartScan ); NTSYSAPI NTSTATUS NTAPI ZwQueryInformationFile( IN HANDLE FileHandle, OUT PIO_STATUS_BLOCK IoStatusBlock, OUT PVOID FileInformation, IN ULONG Length, IN FILE_INFORMATION_CLASS FileInformationClass ); NTSYSAPI NTSTATUS NTAPI ZwSetInformationFile( IN HANDLE FileHandle, OUT PIO_STATUS_BLOCK IoStatusBlock, IN PVOID FileInformation, IN ULONG Length, IN FILE_INFORMATION_CLASS FileInformationClass ); NTSYSAPI NTSTATUS NTAPI ZwQueryVolumeInformationFile( IN HANDLE FileHandle, OUT PIO_STATUS_BLOCK IoStatusBlock, OUT PVOID FsInformation, IN ULONG Length, IN FS_INFORMATION_CLASS FsInformationClass ); NTSYSAPI NTSTATUS NTAPI ZwReadFile( IN HANDLE FileHandle, IN HANDLE Event OPTIONAL, IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, IN PVOID ApcContext OPTIONAL, OUT PIO_STATUS_BLOCK IoStatusBlock, OUT PVOID Buffer, IN ULONG Length, IN PLARGE_INTEGER ByteOffset OPTIONAL, IN PULONG Key OPTIONAL ); NTSYSAPI NTSTATUS NTAPI ZwWriteFile( IN HANDLE FileHandle, IN HANDLE Event OPTIONAL, IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, IN PVOID ApcContext OPTIONAL, OUT PIO_STATUS_BLOCK IoStatusBlock, IN PVOID Buffer, IN ULONG Length, IN PLARGE_INTEGER ByteOffset OPTIONAL, IN PULONG Key OPTIONAL ); NTSYSAPI NTSTATUS NTAPI ZwFsControlFile( IN HANDLE FileHandle, IN HANDLE Event OPTIONAL, IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, IN PVOID ApcContext OPTIONAL, OUT PIO_STATUS_BLOCK IoStatusBlock, IN ULONG FsControlCode, IN PVOID InputBuffer OPTIONAL, IN ULONG InputBufferLength, OUT PVOID OutputBuffer OPTIONAL, IN ULONG OutputBufferLength ); NTSYSAPI NTSTATUS NTAPI ZwClose( IN HANDLE Handle ); NTSYSAPI NTSTATUS NTAPI ZwDuplicateObject( IN HANDLE SourceProcessHandle, IN HANDLE SourceHandle, IN HANDLE TargetProcessHandle OPTIONAL, OUT PHANDLE TargetHandle OPTIONAL, IN ACCESS_MASK DesiredAccess, IN ULONG HandleAttributes, IN ULONG Options ); NTSYSAPI NTSTATUS NTAPI ZwCreateDirectoryObject( OUT PHANDLE DirectoryHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes ); NTSYSAPI NTSTATUS NTAPI ZwOpenDirectoryObject( OUT PHANDLE DirectoryHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes ); NTSYSAPI NTSTATUS NTAPI ZwOpenSymbolicLinkObject( OUT PHANDLE LinkHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes ); NTSYSAPI NTSTATUS NTAPI ZwQuerySymbolicLinkObject( IN HANDLE LinkHandle, IN OUT PUNICODE_STRING LinkTarget, OUT PULONG ReturnedLength OPTIONAL ); NTSYSAPI NTSTATUS NTAPI ZwMakeTemporaryObject( IN HANDLE Handle ); NTSYSAPI NTSTATUS NTAPI ZwCreateKey( OUT PHANDLE KeyHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, IN ULONG TitleIndex, IN PUNICODE_STRING Class OPTIONAL, IN ULONG CreateOptions, OUT PULONG Disposition OPTIONAL ); NTSYSAPI NTSTATUS NTAPI ZwOpenKey( OUT PHANDLE KeyHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes ); NTSYSAPI NTSTATUS NTAPI ZwDeleteKey( IN HANDLE KeyHandle ); NTSYSAPI NTSTATUS NTAPI ZwDeleteValueKey( IN HANDLE KeyHandle, IN PUNICODE_STRING ValueName ); NTSYSAPI NTSTATUS NTAPI ZwEnumerateKey( IN HANDLE KeyHandle, IN ULONG Index, IN KEY_INFORMATION_CLASS KeyInformationClass, OUT PVOID KeyInformation, IN ULONG Length, OUT PULONG ResultLength ); NTSYSAPI NTSTATUS NTAPI ZwEnumerateValueKey( IN HANDLE KeyHandle, IN ULONG Index, IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass, OUT PVOID KeyValueInformation, IN ULONG Length, OUT PULONG ResultLength ); NTSYSAPI NTSTATUS NTAPI ZwFlushKey( IN HANDLE KeyHandle ); NTSYSAPI NTSTATUS NTAPI ZwQueryKey( IN HANDLE KeyHandle, IN KEY_INFORMATION_CLASS KeyInformationClass, OUT PVOID KeyInformation, IN ULONG Length, OUT PULONG ResultLength ); NTSYSAPI NTSTATUS NTAPI ZwQueryValueKey( IN HANDLE KeyHandle, IN PUNICODE_STRING ValueName, IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass, OUT PVOID KeyValueInformation, IN ULONG Length, OUT PULONG ResultLength ); NTSYSAPI NTSTATUS NTAPI ZwSetValueKey( IN HANDLE KeyHandle, IN PUNICODE_STRING ValueName, IN ULONG TitleIndex OPTIONAL, IN ULONG Type, IN PVOID Data, IN ULONG DataSize ); NTSYSAPI NTSTATUS NTAPI ZwOpenSection( OUT PHANDLE SectionHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes ); NTSYSAPI NTSTATUS NTAPI ZwMapViewOfSection( IN HANDLE SectionHandle, IN HANDLE ProcessHandle, IN OUT PVOID *BaseAddress, IN ULONG ZeroBits, IN ULONG CommitSize, IN OUT PLARGE_INTEGER SectionOffset OPTIONAL, IN OUT PSIZE_T ViewSize, IN SECTION_INHERIT InheritDisposition, IN ULONG AllocationType, IN ULONG Protect ); NTSYSAPI NTSTATUS NTAPI ZwUnmapViewOfSection( IN HANDLE ProcessHandle, IN PVOID BaseAddress ); NTSYSAPI NTSTATUS NTAPI ZwSetInformationThread( IN HANDLE ThreadHandle, IN THREADINFOCLASS ThreadInformationClass, IN PVOID ThreadInformation, IN ULONG ThreadInformationLength ); NTSYSAPI NTSTATUS NTAPI ZwCreateSection ( OUT PHANDLE SectionHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN PLARGE_INTEGER MaximumSize OPTIONAL, IN ULONG SectionPageProtection, IN ULONG AllocationAttributes, IN HANDLE FileHandle OPTIONAL ); NTSYSAPI NTSTATUS NTAPI ZwAllocateVirtualMemory( IN HANDLE ProcessHandle, IN OUT PVOID *BaseAddress, IN ULONG ZeroBits, IN OUT PSIZE_T RegionSize, IN ULONG AllocationType, IN ULONG Protect ); NTSYSAPI NTSTATUS NTAPI ZwFreeVirtualMemory( IN HANDLE ProcessHandle, IN OUT PVOID *BaseAddress, IN OUT PSIZE_T RegionSize, IN ULONG FreeType ); NTSYSAPI NTSTATUS NTAPI ZwWaitForSingleObject( IN HANDLE Handle, IN BOOLEAN Alertable, IN PLARGE_INTEGER Timeout OPTIONAL ); NTSYSAPI NTSTATUS NTAPI ZwSetEvent ( IN HANDLE Handle, OUT PLONG PreviousState OPTIONAL ); NTSYSAPI NTSTATUS NTAPI ZwFlushVirtualMemory( IN HANDLE ProcessHandle, IN OUT PVOID *BaseAddress, IN OUT PSIZE_T RegionSize, OUT PIO_STATUS_BLOCK IoStatus ); NTSYSAPI NTSTATUS NTAPI ZwOpenProcessTokenEx( IN HANDLE ProcessHandle, IN ACCESS_MASK DesiredAccess, IN ULONG HandleAttributes, OUT PHANDLE TokenHandle ); NTSYSAPI NTSTATUS NTAPI ZwOpenThreadTokenEx( IN HANDLE ThreadHandle, IN ACCESS_MASK DesiredAccess, IN BOOLEAN OpenAsSelf, IN ULONG HandleAttributes, OUT PHANDLE TokenHandle ); NTSYSAPI NTSTATUS NTAPI ZwSetInformationToken ( IN HANDLE TokenHandle, IN TOKEN_INFORMATION_CLASS TokenInformationClass, IN PVOID TokenInformation, IN ULONG TokenInformationLength ); NTSYSAPI NTSTATUS NTAPI ZwQueryInformationToken ( IN HANDLE TokenHandle, IN TOKEN_INFORMATION_CLASS TokenInformationClass, OUT PVOID TokenInformation, IN ULONG TokenInformationLength, OUT PULONG ReturnLength ); NTSYSAPI NTSTATUS NTAPI ZwSetSecurityObject( IN HANDLE Handle, IN SECURITY_INFORMATION SecurityInformation, IN PSECURITY_DESCRIPTOR SecurityDescriptor ); NTSYSAPI NTSTATUS NTAPI ZwQuerySecurityObject( IN HANDLE Handle, IN SECURITY_INFORMATION SecurityInformation, OUT PSECURITY_DESCRIPTOR SecurityDescriptor, IN ULONG Length, OUT PULONG LengthNeeded ); NTSYSAPI NTSTATUS NTAPI ZwLoadDriver( IN PUNICODE_STRING DriverServiceName ); NTSYSAPI NTSTATUS NTAPI ZwUnloadDriver( IN PUNICODE_STRING DriverServiceName ); #endif // _NTIFS_ << $(O)\wmikm.h: $(NTWMIKM_DEPENDS) makefil0 type << > $@ /*++ BUILD Version: ???? // Increment this if a change has global effects $(COPYRIGHT_STRING) Module Name: wmikm.h Abstract: This module defines the WMI types, constants, and functions that are exposed to internal device drivers. Revision History: --*/ #ifndef _WMIKM_H_ #define _WMIKM_H_ #include #include << hextract -o $@ -lt wmikm -bt begin_wmikm end_wmikm $(NTWMIKM_DEPENDS) type << >> $@ #endif // _WMIKM_H_ << $(O)\ntosp.h: $(NTOSP_DEPENDS) makefil0 type << > $@ /*++ BUILD Version: ???? // Increment this if a change has global effects $(COPYRIGHT_STRING) Module Name: ntosp.h Abstract: This module defines the NT types, constants, and functions that are exposed to external projects like Windows and Termsrv Revision History: --*/ #ifndef _NTOSP_ #define _NTOSP_ #ifdef _NTDDK_ #error "Can't include ntddk.h and ntosp.h" #else #define _NTDDK_ #endif #include #include #include #include #include #include #include << type $(NTOSINC)\exlevels.h >> $@ type << >> $@ #ifdef __cplusplus extern "C" { // extern "C" #endif // // Define types that are not exported. // typedef struct _ACCESS_STATE *PACCESS_STATE; typedef struct _BUS_HANDLER *PBUS_HANDLER; typedef struct _EJOB *PEJOB; typedef struct _EPROCESS *PEPROCESS; typedef struct _ERESOURCE *PERESOURCE; typedef struct _ETHREAD *PETHREAD; typedef struct _IO_TIMER *PIO_TIMER; typedef struct _IRP *PIRP; typedef struct _KPROCESS *PKPROCESS, *RESTRICTED_POINTER PRKPROCESS; typedef struct _KTHREAD *PKTHREAD, *PRKTHREAD; typedef struct _KTRAP_FRAME *PKTRAP_FRAME; typedef struct _LOADER_PARAMETER_BLOCK *PLOADER_PARAMETER_BLOCK; typedef struct _TRANSLATOR_INTERFACE *PTRANSLATOR_INTERFACE; typedef struct _HANDLE_TABLE *PHANDLE_TABLE; // // Define macros to fix up structure references // #define PEProcessToPKProcess(P) ((PKPROCESS)P) #if defined(_M_AMD64) PKTHREAD NTAPI KeGetCurrentThread( VOID ); #endif // defined(_M_AMD64) #if defined(_M_IX86) PKTHREAD NTAPI KeGetCurrentThread(); #endif // defined(_M_IX86) #if defined(_M_IA64) // // Define Address of Processor Control Registers. // #define KIPCR ((ULONG_PTR)(KADDRESS_BASE + 0xffff0000)) // kernel address of first PCR // // Define Pointer to Processor Control Registers. // #define PCR ((volatile KPCR * const)KIPCR) PKTHREAD NTAPI KeGetCurrentThread(); #endif // defined(_M_IA64) << hextract -o $@ -lt ntosp -bt begin_ntosp end_ntosp $(NTOSP_DEPENDS) type << >> $@ extern POBJECT_TYPE *ExEventPairObjectType; extern POBJECT_TYPE *IoFileObjectType; extern POBJECT_TYPE *IoDriverObjectType; extern POBJECT_TYPE *PsProcessType; extern POBJECT_TYPE *PsThreadType; extern POBJECT_TYPE *PsJobType; extern POBJECT_TYPE *LpcPortObjectType; extern POBJECT_TYPE *LpcWaitablePortObjectType; extern POBJECT_TYPE MmSectionObjectType; #ifdef __cplusplus } // extern "C" #endif #endif // _NTOSP_ << $(O)\ndisbase.w: $(NDIS_BASE_DEPENDS) makefil0 type << > $@ /*++ BUILD Version: ???? // Increment this if a change has global effects $(COPYRIGHT_STRING) Module Name: ndis.h Abstract: This module defines the structures, macros, and functions available to NDIS drivers. Revision History: --*/ #if !defined(_NDIS_) #define _NDIS_ #if !defined(NDIS_WDM) #define NDIS_WDM 0 #endif // // If we're building a miniport on x86, set BINARY_COMPATIBLE so that // we don't use functions that aren't available on Windows 9x. // #if !defined(BINARY_COMPATIBLE) #if defined(NDIS_MINIPORT_DRIVER) && defined(_M_IX86) #define BINARY_COMPATIBLE 1 #else #define BINARY_COMPATIBLE 0 #endif #endif #if !defined(_M_IX86) #undef BINARY_COMPATIBLE #define BINARY_COMPATIBLE 0 #endif // // BEGIN INTERNAL DEFINITIONS // // // BINARY_COMPATIBLE = 1 and NDIS_WDM = 1 then use wdm.h // BINARY_COMPATIBLE = 1 and NDIS_WDM = 0 then use ndis.h only // BINARY_COMPATIBLE = 0 and NDIS_WDM = 1 then use ntddk.h // BINARY_COMPATIBLE = 0 and NDIS_WDM = 0 then use ntddk.h // #if (BINARY_COMPATIBLE && !NDIS_WDM) // // BINARY_COMPATIBLE = 1 and NDIS_WDM = 0 then use ndis.h only // // The following internal definitions are included here in order to allow // the exported NDIS structures, macros, and functions to compile. They // must not be used directly by miniport drivers. // #define _NTDDK_ << hextract -o $@ -lt ntndis -bt begin_ntndis end_ntndis $(NDIS_BASE_DEPENDS) type << >> $@ #else // BINARY_COMPATIBLE && !NDIS_WDM #if (!BINARY_COMPATIBLE) // // BINARY_COMPATIBLE = 0 and NDIS_WDM = 1 then use ntddk.h // BINARY_COMPATIBLE = 0 and NDIS_WDM = 0 then use ntddk.h // // // The definitions available in ntddk.h must not be used directly by non-WDM miniport drivers. // #include #else // !BINARY_COMPATIBLE // // BINARY_COMPATIBLE = 1 and NDIS_WDM = 1 then use wdm.h // #include #endif // else !BINARY_COMPATIBLE #endif // else BINARY_COMPATIBLE && !NDIS_WDM << keheaders: cd $(PROJECT_ROOT)\ntos\ke\up build -OZ nmake -l genxx BUILDMSG= cd $(MAKEDIR)