Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

2317 lines
48 KiB

!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 <excpt.h>
#include <ntdef.h>
#include <ntstatus.h>
#include <bugcodes.h>
#include <ntiologc.h>
<<
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 <mce.h>
#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 <excpt.h>
#include <ntdef.h>
#include <ntstatus.h>
#include <bugcodes.h>
#include <ntiologc.h>
//
// 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 <mce.h>
#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 <excpt.h>
#include <ntdef.h>
#include <ntstatus.h>
#include <bugcodes.h>
#include <ntiologc.h>
//
// 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 <mce.h>
<<
hextract -o $@ -lt nthal -bt begin_nthal end_nthal $(NTHAL_DEPENDS1)
type << >> $@
#include <arc.h>
<<
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 <excpt.h>
#include <ntdef.h>
#include <ntnls.h>
#include <ntstatus.h>
#include <bugcodes.h>
#include <ntiologc.h>
<<
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 <evntrace.h>
#include <wmistr.h>
<<
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 <nt.h>
#include <ntrtl.h>
#include <excpt.h>
#include <ntdef.h>
#include <bugcodes.h>
#include <arc.h>
#include <arccodes.h>
<<
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 <ntddk.h>
#else // !BINARY_COMPATIBLE
//
// BINARY_COMPATIBLE = 1 and NDIS_WDM = 1 then use wdm.h
//
#include <wdm.h>
#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)