- Define LANGID and fix definition of PLANGID.
- Define PVM_COUNTERS, SYSTEM_CACHE_INFORMATION and SYSTEM_INTERRUPT_INFORMATION.
- Match the ROS version of LPC_MESSAGE (the structure itself should be named PORT_MESSAGE and belongs to ntifs.h).
- Move KEY_SET_INFORMATION_CLASS definiton to winddk.h.
- Make the first parameter of NtAllocateUuids PULARGE_INTEGER.
- Declare NtSetUuidSeed.
- Fix definition of ATOM_INFORMATION_CLASS and ATOM_BASIC_INFORMATION to match ReactOS versions.
winddk.h:
- Define NTHALAPI and use it to mark HAL exports instead of NTOSAPI.
- Define PADAPTER_OBJECT, EVENT_QUERY_STATE, EVENT_MODIFY_STATE, EVENT_ALL_ACCESS, SEMAPHORE_QUERY_STATE, SEMAPHORE_MODIFY_STATE, SEMAPHORE_ALL_ACCESS, IRP_QUOTA_CHARGED, IRP_ALLOCATED_MUST_SUCCEED, IRP_ALLOCATED_FIXED_SIZE, IRP_LOOKASIDE_ALLOCATION, HalDispatchTableVersion, HalQuerySystemInformation, HalSetSystemInformation, HalQueryBusSlots, HalDeviceControl, HalIoAssignDriveLetters, HalIoReadPartitionTable, HalIoSetPartitionInformation, HalIoWritePartitionTable, HalReferenceHandlerForBus, HalReferenceBusHandler, HalDereferenceBusHandler, IO_TYPE_ADAPTER, IO_TYPE_CONTROLLER, IO_TYPE_DEVICE, IO_TYPE_DRIVER,
IO_TYPE_FILE, IO_TYPE_IRP, IO_TYPE_MASTER_ADAPTER, IO_TYPE_OPEN_PACKET,
IO_TYPE_TIMER, IO_TYPE_VPB, IO_TYPE_ERROR_LOG, IO_TYPE_ERROR_MESSAGE,
IO_TYPE_DEVICE_OBJECT_EXTENSION, IO_FORCE_ACCESS_CHECK and IO_NO_PARAMETER_CHECKING.
- Remove declaration of HalPrivateDispatchTable, it doesn't belong to public headers.
- Fix declaration of WAIT_CONTEXT_BLOCK, HalDispatchTable, DRIVER_EXTENSION, GENERAL_LOOKASIDE, NPAGED_LOOKASIDE_LIST, PAGED_LOOKASIDE_LIST, KPCR_TIB, MmHighestUserAddress, MmSystemRangeStart, MmUserProbeAddress, KdDebuggerNotPresent and KdDebuggerEnabled.
- Declare KEY_WRITE_TIME_INFORMATION, KEY_USER_FLAGS_INFORMATION, KEY_SET_INFORMATION_CLASS, KfAcquireSpinLock, KfReleaseSpinLock and ExfInterlockedCompareExchange64.
winnt4.h:
- Declare HalAcquireDisplayOwnership and HalAllocateAdapterChannel.
ntifs.h:
- Fix definition of NTKERNELAPI.
- Fix declaration of FsRtlLegalAnsiCharacterArray, FsRtlNotifyInitializeSync, FsRtlNotifyUninitializeSync, IoCheckFunctionAccess and PsGetProcessExitTime.
- Declare IoStatisticsLock, IoReadOperationCount, IoWriteOperationCount, IoOtherOperationCount, IoReadTransferCount, IoWriteTransferCount,
IoOtherTransferCount, FSRTL_ADVANCED_FCB_HEADER, FSRTL_PER_STREAM_CONTEXT, PFILTER_REPORT_CHANGE, FS_FILTER_SECTION_SYNC_TYPE, FS_FILTER_PARAMETERS, FS_FILTER_CALLBACK_DATA, PFS_FILTER_CALLBACK, PFS_FILTER_COMPLETION_CALLBACK, FS_FILTER_CALLBACKS, READ_LIST, ExInitializeRundownProtection, ExReInitializeRundownProtection, ExAcquireRundownProtection, ExAcquireRundownProtectionEx, ExReleaseRundownProtection, ExReleaseRundownProtectionEx, ExRundownCompleted, ExWaitForRundownProtectionRelease, FsRtlMdlReadDev, FsRtlPrepareMdlWriteDev, PFSRTL_STACK_OVERFLOW_ROUTINE, FsRtlPostStackOverflow, FsRtlPostPagingFileStackOverflow, IoAttachDeviceToDeviceStackSafe, IoQueueThreadIrp, KeInitializeMutant, KeReadStateMutant, KeReleaseMutant and PsIsSystemThread.
- Define FSRTL_FAT_LEGAL, FSRTL_HPFS_LEGAL, FSRTL_NTFS_LEGAL, FSRTL_WILD_CHARACTER, FSRTL_OLE_LEGAL, FSRTL_NTFS_STREAM_LEGAL, EX_RUNDOWN_ACTIVE, EX_RUNDOWN_COUNT_SHIFT, EX_RUNDOWN_COUNT_INC, FsRtlIsLeadDbcsCharacter and FsRtlIsAnsiCharacterWild.
- Remove declaration of SYSTEM_CACHE_INFORMATION and SeCreateAccessState, they don't belong to public headers.

svn path=/trunk/; revision=16028
This commit is contained in:
Filip Navara 2005-06-18 12:39:24 +00:00
parent 69b04c6fd2
commit 186c8b72d1
4 changed files with 590 additions and 163 deletions

View file

@ -46,7 +46,8 @@ typedef struct _PEB *PPEB;
/* FIXME: Unknown definitions */ /* FIXME: Unknown definitions */
typedef PVOID POBJECT_TYPE_LIST; typedef PVOID POBJECT_TYPE_LIST;
typedef PVOID PEXECUTION_STATE; typedef PVOID PEXECUTION_STATE;
typedef PVOID PLANGID;
typedef unsigned short LANGID, *PLANGID;
#ifndef NtCurrentProcess #ifndef NtCurrentProcess
#define NtCurrentProcess() ( (HANDLE) 0xFFFFFFFF ) #define NtCurrentProcess() ( (HANDLE) 0xFFFFFFFF )
@ -261,7 +262,7 @@ typedef struct _VM_COUNTERS {
ULONG QuotaNonPagedPoolUsage; ULONG QuotaNonPagedPoolUsage;
ULONG PagefileUsage; ULONG PagefileUsage;
ULONG PeakPagefileUsage; ULONG PeakPagefileUsage;
} VM_COUNTERS; } VM_COUNTERS, *PVM_COUNTERS;
typedef enum _THREAD_STATE { typedef enum _THREAD_STATE {
Initialized, Initialized,
@ -463,6 +464,15 @@ typedef struct _SYSTEM_INSTRUCTION_EMULATION_INFORMATION {
ULONG GenericInvalidOpcode; ULONG GenericInvalidOpcode;
} SYSTEM_INSTRUCTION_EMULATION_INFORMATION, *PSYSTEM_INSTRUCTION_EMULATION_INFORMATION; } SYSTEM_INSTRUCTION_EMULATION_INFORMATION, *PSYSTEM_INSTRUCTION_EMULATION_INFORMATION;
typedef struct _SYSTEM_CACHE_INFORMATION {
ULONG CurrentSize;
ULONG PeakSize;
ULONG PageFaultCount;
ULONG MinimumWorkingSet;
ULONG MaximumWorkingSet;
ULONG Unused[4];
} SYSTEM_CACHE_INFORMATION, *PSYSTEM_CACHE_INFORMATION;
typedef struct _SYSTEM_POOL_TAG_INFORMATION { typedef struct _SYSTEM_POOL_TAG_INFORMATION {
CHAR Tag[4]; CHAR Tag[4];
ULONG PagedPoolAllocs; ULONG PagedPoolAllocs;
@ -473,6 +483,15 @@ typedef struct _SYSTEM_POOL_TAG_INFORMATION {
ULONG NonPagedPoolUsage; ULONG NonPagedPoolUsage;
} SYSTEM_POOL_TAG_INFORMATION, *PSYSTEM_POOL_TAG_INFORMATION; } SYSTEM_POOL_TAG_INFORMATION, *PSYSTEM_POOL_TAG_INFORMATION;
typedef struct _SYSTEM_INTERRUPT_INFORMATION {
ULONG ContextSwitches;
ULONG DpcCount;
ULONG DpcRate;
ULONG TimeIncrement;
ULONG DpcBypassCount;
ULONG ApcBypassCount;
} SYSTEM_INTERRUPT_INFORMATION, *PSYSTEM_INTERRUPT_INFORMATION;
typedef struct _SYSTEM_PROCESSOR_STATISTICS { typedef struct _SYSTEM_PROCESSOR_STATISTICS {
ULONG ContextSwitches; ULONG ContextSwitches;
ULONG DpcCount; ULONG DpcCount;
@ -1991,7 +2010,6 @@ typedef struct _LPC_MESSAGE {
CLIENT_ID ClientId; CLIENT_ID ClientId;
ULONG MessageId; ULONG MessageId;
ULONG SectionSize; ULONG SectionSize;
UCHAR Data[ANYSIZE_ARRAY];
} LPC_MESSAGE, *PLPC_MESSAGE; } LPC_MESSAGE, *PLPC_MESSAGE;
#define LPC_MESSAGE_BASE_SIZE 24 #define LPC_MESSAGE_BASE_SIZE 24
@ -2332,10 +2350,6 @@ ZwReplaceKey(
IN HANDLE KeyHandle, IN HANDLE KeyHandle,
IN POBJECT_ATTRIBUTES OldFileObjectAttributes); IN POBJECT_ATTRIBUTES OldFileObjectAttributes);
typedef enum _KEY_SET_INFORMATION_CLASS {
KeyLastWriteTimeInformation
} KEY_SET_INFORMATION_CLASS;
NTOSAPI NTOSAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
@ -2802,11 +2816,17 @@ NTOSAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
NtAllocateUuids( NtAllocateUuids(
OUT PLARGE_INTEGER UuidLastTimeAllocated, OUT PULARGE_INTEGER UuidLastTimeAllocated,
OUT PULONG UuidDeltaTime, OUT PULONG UuidDeltaTime,
OUT PULONG UuidSequenceNumber, OUT PULONG UuidSequenceNumber,
OUT PUCHAR UuidSeed); OUT PUCHAR UuidSeed);
NTOSAPI
NTSTATUS
NTAPI
NtSetUuidSeed(
IN PUCHAR UuidSeed);
NTOSAPI NTOSAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
@ -2893,7 +2913,7 @@ NtDeleteAtom(
typedef enum _ATOM_INFORMATION_CLASS { typedef enum _ATOM_INFORMATION_CLASS {
AtomBasicInformation, AtomBasicInformation,
AtomListInformation AtomTableInformation
} ATOM_INFORMATION_CLASS; } ATOM_INFORMATION_CLASS;
NTOSAPI NTOSAPI
@ -2907,8 +2927,8 @@ NtQueryInformationAtom(
OUT PULONG ReturnLength OPTIONAL); OUT PULONG ReturnLength OPTIONAL);
typedef struct _ATOM_BASIC_INFORMATION { typedef struct _ATOM_BASIC_INFORMATION {
USHORT ReferenceCount; USHORT UsageCount;
USHORT Pinned; USHORT Flags;
USHORT NameLength; USHORT NameLength;
WCHAR Name[1]; WCHAR Name[1];
} ATOM_BASIC_INFORMATION, *PATOM_BASIC_INFORMATION; } ATOM_BASIC_INFORMATION, *PATOM_BASIC_INFORMATION;

View file

@ -44,16 +44,28 @@ extern "C" {
#endif #endif
#ifndef NTKERNELAPI #ifndef NTKERNELAPI
#define NTKERNELAPI STDCALL #define NTKERNELAPI DECLSPEC_IMPORT
#endif #endif
typedef struct _SE_EXPORTS *PSE_EXPORTS; typedef struct _SE_EXPORTS *PSE_EXPORTS;
extern PUCHAR *FsRtlLegalAnsiCharacterArray; #ifdef _NTOSKRNL_
extern PUCHAR FsRtlLegalAnsiCharacterArray;
#else
extern DECLSPEC_IMPORT PUCHAR FsRtlLegalAnsiCharacterArray;
#endif
extern PSE_EXPORTS SeExports; extern PSE_EXPORTS SeExports;
extern PACL SePublicDefaultDacl; extern PACL SePublicDefaultDacl;
extern PACL SeSystemDefaultDacl; extern PACL SeSystemDefaultDacl;
extern KSPIN_LOCK IoStatisticsLock;
extern ULONG IoReadOperationCount;
extern ULONG IoWriteOperationCount;
extern ULONG IoOtherOperationCount;
extern LARGE_INTEGER IoReadTransferCount;
extern LARGE_INTEGER IoWriteTransferCount;
extern LARGE_INTEGER IoOtherTransferCount;
#define ANSI_DOS_STAR ('<') #define ANSI_DOS_STAR ('<')
#define ANSI_DOS_QM ('>') #define ANSI_DOS_QM ('>')
#define ANSI_DOS_DOT ('"') #define ANSI_DOS_DOT ('"')
@ -241,6 +253,13 @@ extern PACL SeSystemDefaultDacl;
#define FSRTL_WILD_CHARACTER 0x08 #define FSRTL_WILD_CHARACTER 0x08
#define FSRTL_FAT_LEGAL 0x01
#define FSRTL_HPFS_LEGAL 0x02
#define FSRTL_NTFS_LEGAL 0x04
#define FSRTL_WILD_CHARACTER 0x08
#define FSRTL_OLE_LEGAL 0x10
#define FSRTL_NTFS_STREAM_LEGAL 0x14
#ifdef _X86_ #ifdef _X86_
#define HARDWARE_PTE HARDWARE_PTE_X86 #define HARDWARE_PTE HARDWARE_PTE_X86
#define PHARDWARE_PTE PHARDWARE_PTE_X86 #define PHARDWARE_PTE PHARDWARE_PTE_X86
@ -502,7 +521,6 @@ extern PACL SeSystemDefaultDacl;
#define IOCTL_REDIR_QUERY_PATH CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 99, METHOD_NEITHER, FILE_ANY_ACCESS) #define IOCTL_REDIR_QUERY_PATH CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 99, METHOD_NEITHER, FILE_ANY_ACCESS)
typedef PVOID PEJOB;
typedef PVOID OPLOCK, *POPLOCK; typedef PVOID OPLOCK, *POPLOCK;
typedef struct _CACHE_MANAGER_CALLBACKS *PCACHE_MANAGER_CALLBACKS; typedef struct _CACHE_MANAGER_CALLBACKS *PCACHE_MANAGER_CALLBACKS;
@ -718,6 +736,10 @@ typedef struct _EX_PUSH_LOCK {
} DUMMYUNIONNAME; } DUMMYUNIONNAME;
} EX_PUSH_LOCK, *PEX_PUSH_LOCK; } EX_PUSH_LOCK, *PEX_PUSH_LOCK;
#define EX_RUNDOWN_ACTIVE 0x1
#define EX_RUNDOWN_COUNT_SHIFT 0x1
#define EX_RUNDOWN_COUNT_INC (1 << EX_RUNDOWN_COUNT_SHIFT)
typedef struct _EX_RUNDOWN_REF { typedef struct _EX_RUNDOWN_REF {
_ANONYMOUS_UNION union { _ANONYMOUS_UNION union {
ULONG Count; ULONG Count;
@ -1197,6 +1219,33 @@ typedef struct _FSRTL_COMMON_FCB_HEADER {
LARGE_INTEGER ValidDataLength; LARGE_INTEGER ValidDataLength;
} FSRTL_COMMON_FCB_HEADER, *PFSRTL_COMMON_FCB_HEADER; } FSRTL_COMMON_FCB_HEADER, *PFSRTL_COMMON_FCB_HEADER;
#if (VER_PRODUCTBUILD >= 2600)
typedef struct _FSRTL_ADVANCED_FCB_HEADER {
CSHORT NodeTypeCode;
CSHORT NodeByteSize;
UCHAR Flags;
UCHAR IsFastIoPossible;
UCHAR Flags2;
UCHAR Reserved;
PERESOURCE Resource;
PERESOURCE PagingIoResource;
LARGE_INTEGER AllocationSize;
LARGE_INTEGER FileSize;
LARGE_INTEGER ValidDataLength;
PFAST_MUTEX FastMutex;
LIST_ENTRY FilterContexts;
} FSRTL_ADVANCED_FCB_HEADER, *PFSRTL_ADVANCED_FCB_HEADER;
typedef struct _FSRTL_PER_STREAM_CONTEXT {
LIST_ENTRY Links;
PVOID OwnerId;
PVOID InstanceId;
PFREE_FUNCTION FreeCallback;
} FSRTL_PER_STREAM_CONTEXT, *PFSRTL_PER_STREAM_CONTEXT;
#endif /* (VER_PRODUCTBUILD >= 2600) */
typedef struct _GENERATE_NAME_CONTEXT { typedef struct _GENERATE_NAME_CONTEXT {
USHORT Checksum; USHORT Checksum;
BOOLEAN CheckSumInserted; BOOLEAN CheckSumInserted;
@ -1549,15 +1598,6 @@ typedef struct _STARTING_VCN_INPUT_BUFFER {
LARGE_INTEGER StartingVcn; LARGE_INTEGER StartingVcn;
} STARTING_VCN_INPUT_BUFFER, *PSTARTING_VCN_INPUT_BUFFER; } STARTING_VCN_INPUT_BUFFER, *PSTARTING_VCN_INPUT_BUFFER;
typedef struct _SYSTEM_CACHE_INFORMATION {
ULONG CurrentSize;
ULONG PeakSize;
ULONG PageFaultCount;
ULONG MinimumWorkingSet;
ULONG MaximumWorkingSet;
ULONG Unused[4];
} SYSTEM_CACHE_INFORMATION, *PSYSTEM_CACHE_INFORMATION;
typedef struct _SECURITY_CLIENT_CONTEXT { typedef struct _SECURITY_CLIENT_CONTEXT {
SECURITY_QUALITY_OF_SERVICE SecurityQos; SECURITY_QUALITY_OF_SERVICE SecurityQos;
PACCESS_TOKEN ClientToken; PACCESS_TOKEN ClientToken;
@ -1598,6 +1638,90 @@ typedef struct _VAD_HEADER {
LIST_ENTRY Secured; LIST_ENTRY Secured;
} VAD_HEADER, *PVAD_HEADER; } VAD_HEADER, *PVAD_HEADER;
#if (VER_PRODUCTBUILD >= 2600)
typedef BOOLEAN
(NTAPI *PFILTER_REPORT_CHANGE) (
IN PVOID NotifyContext,
IN PVOID FilterContext
);
typedef enum _FS_FILTER_SECTION_SYNC_TYPE {
SyncTypeOther = 0,
SyncTypeCreateSection
} FS_FILTER_SECTION_SYNC_TYPE, *PFS_FILTER_SECTION_SYNC_TYPE;
typedef union _FS_FILTER_PARAMETERS {
struct {
PLARGE_INTEGER EndingOffset;
} AcquireForModifiedPageWriter;
struct {
PERESOURCE ResourceToRelease;
} ReleaseForModifiedPageWriter;
struct {
FS_FILTER_SECTION_SYNC_TYPE SyncType;
ULONG PageProtection;
} AcquireForSectionSynchronization;
struct {
PVOID Argument1;
PVOID Argument2;
PVOID Argument3;
PVOID Argument4;
PVOID Argument5;
} Others;
} FS_FILTER_PARAMETERS, *PFS_FILTER_PARAMETERS;
typedef struct _FS_FILTER_CALLBACK_DATA {
ULONG SizeOfFsFilterCallbackData;
UCHAR Operation;
UCHAR Reserved;
struct _DEVICE_OBJECT *DeviceObject;
struct _FILE_OBJECT *FileObject;
FS_FILTER_PARAMETERS Parameters;
} FS_FILTER_CALLBACK_DATA, *PFS_FILTER_CALLBACK_DATA;
typedef NTSTATUS
(NTAPI *PFS_FILTER_CALLBACK) (
IN PFS_FILTER_CALLBACK_DATA Data,
OUT PVOID *CompletionContext
);
typedef VOID
(NTAPI *PFS_FILTER_COMPLETION_CALLBACK) (
IN PFS_FILTER_CALLBACK_DATA Data,
IN NTSTATUS OperationStatus,
IN PVOID CompletionContext
);
typedef struct _FS_FILTER_CALLBACKS {
ULONG SizeOfFsFilterCallbacks;
ULONG Reserved;
PFS_FILTER_CALLBACK PreAcquireForSectionSynchronization;
PFS_FILTER_COMPLETION_CALLBACK PostAcquireForSectionSynchronization;
PFS_FILTER_CALLBACK PreReleaseForSectionSynchronization;
PFS_FILTER_COMPLETION_CALLBACK PostReleaseForSectionSynchronization;
PFS_FILTER_CALLBACK PreAcquireForCcFlush;
PFS_FILTER_COMPLETION_CALLBACK PostAcquireForCcFlush;
PFS_FILTER_CALLBACK PreReleaseForCcFlush;
PFS_FILTER_COMPLETION_CALLBACK PostReleaseForCcFlush;
PFS_FILTER_CALLBACK PreAcquireForModifiedPageWriter;
PFS_FILTER_COMPLETION_CALLBACK PostAcquireForModifiedPageWriter;
PFS_FILTER_CALLBACK PreReleaseForModifiedPageWriter;
PFS_FILTER_COMPLETION_CALLBACK PostReleaseForModifiedPageWriter;
} FS_FILTER_CALLBACKS, *PFS_FILTER_CALLBACKS;
typedef struct _READ_LIST {
PFILE_OBJECT FileObject;
ULONG NumberOfEntries;
LOGICAL IsImage;
FILE_SEGMENT_ELEMENT List[ANYSIZE_ARRAY];
} READ_LIST, *PREAD_LIST;
#endif
NTKERNELAPI NTKERNELAPI
BOOLEAN BOOLEAN
NTAPI NTAPI
@ -1734,6 +1858,7 @@ CcGetFlushedValidData (
NTKERNELAPI NTKERNELAPI
LARGE_INTEGER LARGE_INTEGER
NTAPI
CcGetLsnForFileObject ( CcGetLsnForFileObject (
IN PFILE_OBJECT FileObject, IN PFILE_OBJECT FileObject,
OUT PLARGE_INTEGER OldestLsn OPTIONAL OUT PLARGE_INTEGER OldestLsn OPTIONAL
@ -2051,17 +2176,79 @@ NTKERNELAPI
VOID VOID
NTAPI NTAPI
ExDisableResourceBoostLite ( ExDisableResourceBoostLite (
IN PERESOURCE Resource IN PERESOURCE Resource
); );
NTKERNELAPI NTKERNELAPI
ULONG ULONG
NTAPI NTAPI
ExQueryPoolBlockSize ( ExQueryPoolBlockSize (
IN PVOID PoolBlock, IN PVOID PoolBlock,
OUT PBOOLEAN QuotaCharged OUT PBOOLEAN QuotaCharged
); );
#if (VER_PRODUCTBUILD >= 2600)
NTKERNELAPI
VOID
FASTCALL
ExInitializeRundownProtection (
IN PEX_RUNDOWN_REF RunRef
);
NTKERNELAPI
VOID
FASTCALL
ExReInitializeRundownProtection (
IN PEX_RUNDOWN_REF RunRef
);
NTKERNELAPI
BOOLEAN
FASTCALL
ExAcquireRundownProtection (
IN PEX_RUNDOWN_REF RunRef
);
NTKERNELAPI
BOOLEAN
FASTCALL
ExAcquireRundownProtectionEx (
IN PEX_RUNDOWN_REF RunRef,
IN ULONG Count
);
NTKERNELAPI
VOID
FASTCALL
ExReleaseRundownProtection (
IN PEX_RUNDOWN_REF RunRef
);
NTKERNELAPI
VOID
FASTCALL
ExReleaseRundownProtectionEx (
IN PEX_RUNDOWN_REF RunRef,
IN ULONG Count
);
NTKERNELAPI
VOID
FASTCALL
ExRundownCompleted (
IN PEX_RUNDOWN_REF RunRef
);
NTKERNELAPI
VOID
FASTCALL
ExWaitForRundownProtectionRelease (
IN PEX_RUNDOWN_REF RunRef
);
#endif /* (VER_PRODUCTBUILD >= 2600) */
#define FlagOn(x, f) ((x) & (f)) #define FlagOn(x, f) ((x) & (f))
NTKERNELAPI NTKERNELAPI
@ -2442,12 +2629,35 @@ FsRtlIsNtstatusExpected (
IN NTSTATUS Ntstatus IN NTSTATUS Ntstatus
); );
#define FsRtlIsLeadDbcsCharacter(DBCS_CHAR) ( \
(BOOLEAN)((UCHAR)(DBCS_CHAR) < 0x80 ? FALSE : \
(NLS_MB_CODE_PAGE_TAG && \
(NLS_OEM_LEAD_BYTE_INFO[(UCHAR)(DBCS_CHAR)] != 0))) \
)
#define FsRtlIsAnsiCharacterWild(C) ( \
FlagOn(FsRtlLegalAnsiCharacterArray[(UCHAR)(C)], FSRTL_WILD_CHARACTER ) \
)
#define FsRtlIsUnicodeCharacterWild(C) ( \ #define FsRtlIsUnicodeCharacterWild(C) ( \
(((C) >= 0x40) ? \ (((C) >= 0x40) ? \
FALSE : \ FALSE : \
FlagOn((*FsRtlLegalAnsiCharacterArray)[(C)], FSRTL_WILD_CHARACTER )) \ FlagOn(FsRtlLegalAnsiCharacterArray[(C)], FSRTL_WILD_CHARACTER )) \
) )
NTKERNELAPI
BOOLEAN
NTAPI
FsRtlMdlReadDev (
IN PFILE_OBJECT FileObject,
IN PLARGE_INTEGER FileOffset,
IN ULONG Length,
IN ULONG LockKey,
OUT PMDL *MdlChain,
OUT PIO_STATUS_BLOCK IoStatus,
IN PDEVICE_OBJECT DeviceObject
);
NTKERNELAPI NTKERNELAPI
BOOLEAN BOOLEAN
NTAPI NTAPI
@ -2465,6 +2675,19 @@ FsRtlMdlReadCompleteDev (
IN PDEVICE_OBJECT DeviceObject IN PDEVICE_OBJECT DeviceObject
); );
NTKERNELAPI
BOOLEAN
NTAPI
FsRtlPrepareMdlWriteDev (
IN PFILE_OBJECT FileObject,
IN PLARGE_INTEGER FileOffset,
IN ULONG Length,
IN ULONG LockKey,
OUT PMDL *MdlChain,
OUT PIO_STATUS_BLOCK IoStatus,
IN PDEVICE_OBJECT DeviceObject
);
NTKERNELAPI NTKERNELAPI
BOOLEAN BOOLEAN
NTAPI NTAPI
@ -2555,7 +2778,7 @@ NTKERNELAPI
VOID VOID
NTAPI NTAPI
FsRtlNotifyInitializeSync ( FsRtlNotifyInitializeSync (
IN PNOTIFY_SYNC NotifySync IN PNOTIFY_SYNC *NotifySync
); );
NTKERNELAPI NTKERNELAPI
@ -2573,7 +2796,7 @@ NTKERNELAPI
VOID VOID
NTAPI NTAPI
FsRtlNotifyUninitializeSync ( FsRtlNotifyUninitializeSync (
IN PNOTIFY_SYNC NotifySync IN PNOTIFY_SYNC *NotifySync
); );
#if (VER_PRODUCTBUILD >= 2195) #if (VER_PRODUCTBUILD >= 2195)
@ -2670,6 +2893,30 @@ FsRtlRegisterUncProvider (
IN BOOLEAN MailslotsSupported IN BOOLEAN MailslotsSupported
); );
typedef VOID
(NTAPI *PFSRTL_STACK_OVERFLOW_ROUTINE) (
IN PVOID Context,
IN PKEVENT Event
);
NTKERNELAPI
VOID
NTAPI
FsRtlPostStackOverflow (
IN PVOID Context,
IN PKEVENT Event,
IN PFSRTL_STACK_OVERFLOW_ROUTINE StackOverflowRoutine
);
NTKERNELAPI
VOID
NTAPI
FsRtlPostPagingFileStackOverflow (
IN PVOID Context,
IN PKEVENT Event,
IN PFSRTL_STACK_OVERFLOW_ROUTINE StackOverflowRoutine
);
NTKERNELAPI NTKERNELAPI
VOID VOID
NTAPI NTAPI
@ -2712,6 +2959,15 @@ HalSetRealTimeClock (
(m)->DataInfoOffset = 0; \ (m)->DataInfoOffset = 0; \
} }
NTKERNELAPI
NTSTATUS
NTAPI
IoAttachDeviceToDeviceStackSafe(
IN PDEVICE_OBJECT SourceDevice,
IN PDEVICE_OBJECT TargetDevice,
OUT PDEVICE_OBJECT *AttachedToDeviceObject
);
NTKERNELAPI NTKERNELAPI
VOID VOID
NTAPI NTAPI
@ -2744,8 +3000,8 @@ IoCheckFunctionAccess (
IN UCHAR MajorFunction, IN UCHAR MajorFunction,
IN UCHAR MinorFunction, IN UCHAR MinorFunction,
IN ULONG IoControlCode, IN ULONG IoControlCode,
IN PFILE_INFORMATION_CLASS FileInformationClass OPTIONAL, IN PVOID Argument1 OPTIONAL,
IN PFS_INFORMATION_CLASS FsInformationClass OPTIONAL IN PVOID Argument2 OPTIONAL
); );
#if (VER_PRODUCTBUILD >= 2195) #if (VER_PRODUCTBUILD >= 2195)
@ -2898,6 +3154,13 @@ IoQueryVolumeInformation (
OUT PULONG ReturnedLength OUT PULONG ReturnedLength
); );
NTKERNELAPI
VOID
NTAPI
IoQueueThreadIrp(
IN PIRP Irp
);
NTKERNELAPI NTKERNELAPI
VOID VOID
NTAPI NTAPI
@ -2982,7 +3245,7 @@ IoUnregisterFileSystem (
#if (VER_PRODUCTBUILD >= 1381) #if (VER_PRODUCTBUILD >= 1381)
NTKERNELAPI NTKERNELAPI
NTSTATUS VOID
NTAPI NTAPI
IoUnregisterFsRegistrationChange ( IoUnregisterFsRegistrationChange (
IN PDRIVER_OBJECT DriverObject, IN PDRIVER_OBJECT DriverObject,
@ -3070,6 +3333,31 @@ KeRundownQueue (
IN PRKQUEUE Queue IN PRKQUEUE Queue
); );
NTKERNELAPI
VOID
NTAPI
KeInitializeMutant (
IN PRKMUTANT Mutant,
IN BOOLEAN InitialOwner
);
NTKERNELAPI
LONG
NTAPI
KeReadStateMutant (
IN PRKMUTANT Mutant
);
NTKERNELAPI
LONG
NTAPI
KeReleaseMutant (
IN PRKMUTANT Mutant,
IN KPRIORITY Increment,
IN BOOLEAN Abandoned,
IN BOOLEAN Wait
);
#if (VER_PRODUCTBUILD >= 2195) #if (VER_PRODUCTBUILD >= 2195)
NTKERNELAPI NTKERNELAPI
@ -3261,12 +3549,19 @@ PsChargePoolQuota (
#define PsDereferencePrimaryToken(T) (ObDereferenceObject((T))) #define PsDereferencePrimaryToken(T) (ObDereferenceObject((T)))
NTKERNELAPI NTKERNELAPI
ULONGLONG LARGE_INTEGER
NTAPI NTAPI
PsGetProcessExitTime ( PsGetProcessExitTime (
VOID VOID
); );
NTKERNELAPI
BOOLEAN
NTAPI
PsIsSystemThread(
IN PETHREAD Thread
);
NTKERNELAPI NTKERNELAPI
BOOLEAN BOOLEAN
NTAPI NTAPI
@ -3679,16 +3974,6 @@ SeCaptureSubjectContext (
OUT PSECURITY_SUBJECT_CONTEXT SubjectContext OUT PSECURITY_SUBJECT_CONTEXT SubjectContext
); );
NTKERNELAPI
NTSTATUS
NTAPI
SeCreateAccessState (
OUT PACCESS_STATE AccessState,
IN PVOID AuxData,
IN ACCESS_MASK AccessMask,
IN PGENERIC_MAPPING Mapping
);
NTKERNELAPI NTKERNELAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
@ -3946,6 +4231,7 @@ SeUnlockSubjectContext (
NTKERNELAPI NTKERNELAPI
NTSTATUS NTSTATUS
NTAPI
SeUnregisterLogonSessionTerminatedRoutine ( SeUnregisterLogonSessionTerminatedRoutine (
IN PSE_LOGON_SESSION_TERMINATED_ROUTINE CallbackRoutine IN PSE_LOGON_SESSION_TERMINATED_ROUTINE CallbackRoutine
); );

View file

@ -52,6 +52,16 @@ extern "C" {
#define DECLARE_INTERNAL_OBJECT2(x,y) struct _##x; typedef struct _##x *P##y; #define DECLARE_INTERNAL_OBJECT2(x,y) struct _##x; typedef struct _##x *P##y;
#endif #endif
#if defined(_NTHAL_)
#ifndef NTHALAPI
#define NTHALAPI DECL_EXPORT
#endif
#else
#ifndef NTHALAPI
#define NTHALAPI DECL_IMPORT
#endif
#endif
/* Pseudo modifiers for parameters */ /* Pseudo modifiers for parameters */
#define IN #define IN
#define OUT #define OUT
@ -170,6 +180,7 @@ typedef struct _HAL_DISPATCH_TABLE *PHAL_DISPATCH_TABLE;
typedef struct _HAL_PRIVATE_DISPATCH_TABLE *PHAL_PRIVATE_DISPATCH_TABLE; typedef struct _HAL_PRIVATE_DISPATCH_TABLE *PHAL_PRIVATE_DISPATCH_TABLE;
typedef struct _DEVICE_HANDLER_OBJECT *PDEVICE_HANDLER_OBJECT; typedef struct _DEVICE_HANDLER_OBJECT *PDEVICE_HANDLER_OBJECT;
typedef struct _BUS_HANDLER *PBUS_HANDLER; typedef struct _BUS_HANDLER *PBUS_HANDLER;
typedef struct _ADAPTER_OBJECT *PADAPTER_OBJECT;
typedef struct _DRIVE_LAYOUT_INFORMATION *PDRIVE_LAYOUT_INFORMATION; typedef struct _DRIVE_LAYOUT_INFORMATION *PDRIVE_LAYOUT_INFORMATION;
typedef struct _DRIVE_LAYOUT_INFORMATION_EX *PDRIVE_LAYOUT_INFORMATION_EX; typedef struct _DRIVE_LAYOUT_INFORMATION_EX *PDRIVE_LAYOUT_INFORMATION_EX;
typedef struct _NAMED_PIPE_CREATE_PARAMETERS *PNAMED_PIPE_CREATE_PARAMETERS; typedef struct _NAMED_PIPE_CREATE_PARAMETERS *PNAMED_PIPE_CREATE_PARAMETERS;
@ -315,6 +326,14 @@ typedef struct _FILE_GET_QUOTA_INFORMATION *PFILE_GET_QUOTA_INFORMATION;
#define DIRECTORY_CREATE_SUBDIRECTORY (0x0008) #define DIRECTORY_CREATE_SUBDIRECTORY (0x0008)
#define DIRECTORY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0xF) #define DIRECTORY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0xF)
#define EVENT_QUERY_STATE (0x0001)
#define EVENT_MODIFY_STATE (0x0002)
#define EVENT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3)
#define SEMAPHORE_QUERY_STATE (0x0001)
#define SEMAPHORE_MODIFY_STATE (0x0002)
#define SEMAPHORE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3)
/* Exported object types */ /* Exported object types */
extern NTOSAPI POBJECT_TYPE ExDesktopObjectType; extern NTOSAPI POBJECT_TYPE ExDesktopObjectType;
extern NTOSAPI POBJECT_TYPE ExEventObjectType; extern NTOSAPI POBJECT_TYPE ExEventObjectType;
@ -331,7 +350,6 @@ extern NTOSAPI POBJECT_TYPE MmSectionObjectType;
extern NTOSAPI POBJECT_TYPE SeTokenObjectType; extern NTOSAPI POBJECT_TYPE SeTokenObjectType;
extern NTOSAPI CCHAR KeNumberProcessors; extern NTOSAPI CCHAR KeNumberProcessors;
extern NTOSAPI PHAL_PRIVATE_DISPATCH_TABLE HalPrivateDispatchTable;
/* /*
@ -897,7 +915,7 @@ typedef struct _KDPC_DATA {
typedef struct _WAIT_CONTEXT_BLOCK { typedef struct _WAIT_CONTEXT_BLOCK {
KDEVICE_QUEUE_ENTRY WaitQueueEntry; KDEVICE_QUEUE_ENTRY WaitQueueEntry;
struct _DRIVER_CONTROL *DeviceRoutine; PDRIVER_CONTROL DeviceRoutine;
PVOID DeviceContext; PVOID DeviceContext;
ULONG NumberOfMapRegisters; ULONG NumberOfMapRegisters;
PVOID DeviceObject; PVOID DeviceObject;
@ -1092,6 +1110,11 @@ enum
IRP_RETRY_IO_COMPLETION = 0x4000 IRP_RETRY_IO_COMPLETION = 0x4000
}; };
#define IRP_QUOTA_CHARGED 0x01
#define IRP_ALLOCATED_MUST_SUCCEED 0x02
#define IRP_ALLOCATED_FIXED_SIZE 0x04
#define IRP_LOOKASIDE_ALLOCATION 0x08
typedef struct _BOOTDISK_INFORMATION { typedef struct _BOOTDISK_INFORMATION {
LONGLONG BootPartitionOffset; LONGLONG BootPartitionOffset;
LONGLONG SystemPartitionOffset; LONGLONG SystemPartitionOffset;
@ -2324,8 +2347,27 @@ typedef struct {
pHalMirrorVerify HalMirrorVerify; pHalMirrorVerify HalMirrorVerify;
} HAL_DISPATCH, *PHAL_DISPATCH; } HAL_DISPATCH, *PHAL_DISPATCH;
extern HAL_DISPATCH HalDispatchTable; #if defined(_NTDRIVER_) || defined(_NTDDK_) || defined(_NTIFS_) || defined(_NTHAL_)
#define HALDISPATCH HalDispatchTable extern DECL_IMPORT PHAL_DISPATCH HalDispatchTable;
#define HALDISPATCH ((PHAL_DISPATCH)&HalDispatchTable)
#else
extern DECL_EXPORT HAL_DISPATCH HalDispatchTable;
#define HALDISPATCH (&HalDispatchTable)
#endif
#define HAL_DISPATCH_VERSION 3
#define HalDispatchTableVersion HALDISPATCH->Version
#define HalQuerySystemInformation HALDISPATCH->HalQuerySystemInformation
#define HalSetSystemInformation HALDISPATCH->HalSetSystemInformation
#define HalQueryBusSlots HALDISPATCH->HalQueryBusSlots
#define HalDeviceControl HALDISPATCH->HalDeviceControl
#define HalIoAssignDriveLetters HALDISPATCH->HalIoAssignDriveLetters
#define HalIoReadPartitionTable HALDISPATCH->HalIoReadPartitionTable
#define HalIoSetPartitionInformation HALDISPATCH->HalIoSetPartitionInformation
#define HalIoWritePartitionTable HALDISPATCH->HalIoWritePartitionTable
#define HalReferenceHandlerForBus HALDISPATCH->HalReferenceHandlerForBus
#define HalReferenceBusHandler HALDISPATCH->HalReferenceBusHandler
#define HalDereferenceBusHandler HALDISPATCH->HalDereferenceBusHandler
typedef enum _FILE_INFORMATION_CLASS { typedef enum _FILE_INFORMATION_CLASS {
FileDirectoryInformation = 1, FileDirectoryInformation = 1,
@ -2492,10 +2534,9 @@ typedef struct _ERESOURCE {
KSPIN_LOCK SpinLock; KSPIN_LOCK SpinLock;
} ERESOURCE, *PERESOURCE; } ERESOURCE, *PERESOURCE;
/* NOTE: PVOID for methods to avoid 'assignment from incompatible pointer type' warning */
typedef struct _DRIVER_EXTENSION { typedef struct _DRIVER_EXTENSION {
struct _DRIVER_OBJECT *DriverObject; struct _DRIVER_OBJECT *DriverObject;
PVOID AddDevice; PDRIVER_ADD_DEVICE AddDevice;
ULONG Count; ULONG Count;
UNICODE_STRING ServiceKeyName; UNICODE_STRING ServiceKeyName;
} DRIVER_EXTENSION, *PDRIVER_EXTENSION; } DRIVER_EXTENSION, *PDRIVER_EXTENSION;
@ -2894,6 +2935,20 @@ typedef struct _IO_SECURITY_CONTEXT {
ULONG FullCreateOptions; ULONG FullCreateOptions;
} IO_SECURITY_CONTEXT, *PIO_SECURITY_CONTEXT; } IO_SECURITY_CONTEXT, *PIO_SECURITY_CONTEXT;
#define IO_TYPE_ADAPTER 1
#define IO_TYPE_CONTROLLER 2
#define IO_TYPE_DEVICE 3
#define IO_TYPE_DRIVER 4
#define IO_TYPE_FILE 5
#define IO_TYPE_IRP 6
#define IO_TYPE_MASTER_ADAPTER 7
#define IO_TYPE_OPEN_PACKET 8
#define IO_TYPE_TIMER 9
#define IO_TYPE_VPB 10
#define IO_TYPE_ERROR_LOG 11
#define IO_TYPE_ERROR_MESSAGE 12
#define IO_TYPE_DEVICE_OBJECT_EXTENSION 13
#define IO_TYPE_CSQ_IRP_CONTEXT 1 #define IO_TYPE_CSQ_IRP_CONTEXT 1
#define IO_TYPE_CSQ 2 #define IO_TYPE_CSQ 2
@ -3241,6 +3296,20 @@ typedef enum _KEY_VALUE_INFORMATION_CLASS {
KeyValuePartialInformationAlign64 KeyValuePartialInformationAlign64
} KEY_VALUE_INFORMATION_CLASS; } KEY_VALUE_INFORMATION_CLASS;
typedef struct _KEY_WRITE_TIME_INFORMATION {
LARGE_INTEGER LastWriteTime;
} KEY_WRITE_TIME_INFORMATION, *PKEY_WRITE_TIME_INFORMATION;
typedef struct _KEY_USER_FLAGS_INFORMATION {
ULONG UserFlags;
} KEY_USER_FLAGS_INFORMATION, *PKEY_USER_FLAGS_INFORMATION;
typedef enum _KEY_SET_INFORMATION_CLASS {
KeyWriteTimeInformation,
KeyUserFlagsInformation,
MaxKeySetInfoClass
} KEY_SET_INFORMATION_CLASS;
/* KEY_VALUE_Xxx.Type */ /* KEY_VALUE_Xxx.Type */
#define REG_NONE 0 #define REG_NONE 0
@ -3642,44 +3711,41 @@ typedef VOID
(DDKAPI *PFREE_FUNCTION)( (DDKAPI *PFREE_FUNCTION)(
IN PVOID Buffer); IN PVOID Buffer);
#define GENERAL_LOOKASIDE_S \
SLIST_HEADER ListHead; \
USHORT Depth; \
USHORT MaximumDepth; \
ULONG TotalAllocates; \
_ANONYMOUS_UNION union { \
ULONG AllocateMisses; \
ULONG AllocateHits; \
} DUMMYUNIONNAME; \
ULONG TotalFrees; \
_ANONYMOUS_UNION union { \
ULONG FreeMisses; \
ULONG FreeHits; \
} DUMMYUNIONNAME2; \
POOL_TYPE Type; \
ULONG Tag; \
ULONG Size; \
PALLOCATE_FUNCTION Allocate; \
PFREE_FUNCTION Free; \
LIST_ENTRY ListEntry; \
ULONG LastTotalAllocates; \
_ANONYMOUS_UNION union { \
ULONG LastAllocateMisses; \
ULONG LastAllocateHits; \
} DUMMYUNIONNAME3; \
ULONG Future[2];
typedef struct _GENERAL_LOOKASIDE { typedef struct _GENERAL_LOOKASIDE {
GENERAL_LOOKASIDE_S SLIST_HEADER ListHead;
USHORT Depth;
USHORT MaximumDepth;
ULONG TotalAllocates;
union {
ULONG AllocateMisses;
ULONG AllocateHits;
};
ULONG TotalFrees;
union {
ULONG FreeMisses;
ULONG FreeHits;
};
POOL_TYPE Type;
ULONG Tag;
ULONG Size;
PALLOCATE_FUNCTION Allocate;
PFREE_FUNCTION Free;
LIST_ENTRY ListEntry;
ULONG LastTotalAllocates;
union {
ULONG LastAllocateMisses;
ULONG LastAllocateHits;
};
ULONG Future[2];
} GENERAL_LOOKASIDE, *PGENERAL_LOOKASIDE; } GENERAL_LOOKASIDE, *PGENERAL_LOOKASIDE;
typedef struct _NPAGED_LOOKASIDE_LIST { typedef struct _NPAGED_LOOKASIDE_LIST {
GENERAL_LOOKASIDE_S GENERAL_LOOKASIDE L;
KSPIN_LOCK Obsoleted; KSPIN_LOCK Obsoleted;
} NPAGED_LOOKASIDE_LIST, *PNPAGED_LOOKASIDE_LIST; } NPAGED_LOOKASIDE_LIST, *PNPAGED_LOOKASIDE_LIST;
typedef struct _PAGED_LOOKASIDE_LIST { typedef struct _PAGED_LOOKASIDE_LIST {
GENERAL_LOOKASIDE_S GENERAL_LOOKASIDE L;
FAST_MUTEX Obsoleted; FAST_MUTEX Obsoleted;
} PAGED_LOOKASIDE_LIST, *PPAGED_LOOKASIDE_LIST; } PAGED_LOOKASIDE_LIST, *PPAGED_LOOKASIDE_LIST;
@ -3895,6 +3961,9 @@ typedef enum _CONFIGURATION_TYPE {
MaximumType MaximumType
} CONFIGURATION_TYPE, *PCONFIGURATION_TYPE; } CONFIGURATION_TYPE, *PCONFIGURATION_TYPE;
#define IO_FORCE_ACCESS_CHECK 0x001
#define IO_NO_PARAMETER_CHECKING 0x100
typedef NTSTATUS typedef NTSTATUS
(DDKAPI *PIO_QUERY_DEVICE_ROUTINE)( (DDKAPI *PIO_QUERY_DEVICE_ROUTINE)(
IN PVOID Context, IN PVOID Context,
@ -4350,7 +4419,7 @@ typedef struct _KPCR_TIB {
DWORD Version; /* 10 */ DWORD Version; /* 10 */
} DUMMYUNIONNAME; } DUMMYUNIONNAME;
PVOID ArbitraryUserPointer; /* 14 */ PVOID ArbitraryUserPointer; /* 14 */
struct _NT_TIB *Self; /* 18 */ struct _KPCR_TIB *Self; /* 18 */
} KPCR_TIB, *PKPCR_TIB; /* 1C */ } KPCR_TIB, *PKPCR_TIB; /* 1C */
#define PCR_MINOR_VERSION 1 #define PCR_MINOR_VERSION 1
@ -4390,13 +4459,13 @@ typedef struct _KFLOATING_SAVE {
#define PAGE_SIZE 0x1000 #define PAGE_SIZE 0x1000
#define PAGE_SHIFT 12L #define PAGE_SHIFT 12L
extern NTOSAPI PVOID *MmHighestUserAddress; extern NTOSAPI PVOID MmHighestUserAddress;
extern NTOSAPI PVOID *MmSystemRangeStart; extern NTOSAPI PVOID MmSystemRangeStart;
extern NTOSAPI ULONG *MmUserProbeAddress; extern NTOSAPI ULONG_PTR MmUserProbeAddress;
#define MM_HIGHEST_USER_ADDRESS *MmHighestUserAddress #define MM_HIGHEST_USER_ADDRESS MmHighestUserAddress
#define MM_SYSTEM_RANGE_START *MmSystemRangeStart #define MM_SYSTEM_RANGE_START MmSystemRangeStart
#define MM_USER_PROBE_ADDRESS *MmUserProbeAddress #define MM_USER_PROBE_ADDRESS MmUserProbeAddress
#define MM_LOWEST_USER_ADDRESS (PVOID)0x10000 #define MM_LOWEST_USER_ADDRESS (PVOID)0x10000
#define MM_LOWEST_SYSTEM_ADDRESS (PVOID)0xC0C00000 #define MM_LOWEST_SYSTEM_ADDRESS (PVOID)0xC0C00000
@ -4417,7 +4486,7 @@ typedef enum _INTERLOCKED_RESULT {
ResultPositive = RESULT_POSITIVE ResultPositive = RESULT_POSITIVE
} INTERLOCKED_RESULT; } INTERLOCKED_RESULT;
NTOSAPI NTHALAPI
KIRQL KIRQL
DDKAPI DDKAPI
KeGetCurrentIrql( KeGetCurrentIrql(
@ -4501,8 +4570,23 @@ DDKFASTAPI
KefReleaseSpinLockFromDpcLevel( KefReleaseSpinLockFromDpcLevel(
IN PKSPIN_LOCK SpinLock); IN PKSPIN_LOCK SpinLock);
NTHALAPI
KIRQL
DDKFASTAPI
KfAcquireSpinLock(
IN PKSPIN_LOCK SpinLock);
NTHALAPI
VOID
DDKFASTAPI
KfReleaseSpinLock(
IN PKSPIN_LOCK SpinLock,
IN KIRQL NewIrql);
#define KeAcquireSpinLockAtDpcLevel(SpinLock) KefAcquireSpinLockAtDpcLevel(SpinLock) #define KeAcquireSpinLockAtDpcLevel(SpinLock) KefAcquireSpinLockAtDpcLevel(SpinLock)
#define KeReleaseSpinLockFromDpcLevel(SpinLock) KefReleaseSpinLockFromDpcLevel(SpinLock) #define KeReleaseSpinLockFromDpcLevel(SpinLock) KefReleaseSpinLockFromDpcLevel(SpinLock)
#define KeAcquireSpinLock(a,b) *(b) = KfAcquireSpinLock(a)
#define KeReleaseSpinLock(a,b) KfReleaseSpinLock(a,b)
#define RtlCopyMemoryNonTemporal RtlCopyMemory #define RtlCopyMemoryNonTemporal RtlCopyMemory
@ -5655,7 +5739,11 @@ KeTryToAcquireGuardedMutex(
/** Executive support routines **/ /** Executive support routines **/
#if defined(_X86_)
NTHALAPI
#else
NTOSAPI NTOSAPI
#endif
VOID VOID
DDKFASTAPI DDKFASTAPI
ExAcquireFastMutex( ExAcquireFastMutex(
@ -5699,14 +5787,14 @@ static __inline PVOID
ExAllocateFromNPagedLookasideList( ExAllocateFromNPagedLookasideList(
IN PNPAGED_LOOKASIDE_LIST Lookaside) IN PNPAGED_LOOKASIDE_LIST Lookaside)
{ {
PVOID Entry; PVOID Entry;
Lookaside->TotalAllocates++; Lookaside->L.TotalAllocates++;
Entry = InterlockedPopEntrySList(&Lookaside->ListHead); Entry = InterlockedPopEntrySList(&Lookaside->L.ListHead);
if (Entry == NULL) { if (Entry == NULL) {
Lookaside->_DDK_DUMMYUNION_MEMBER(AllocateMisses)++; Lookaside->L.AllocateMisses++;
Entry = (Lookaside->Allocate)(Lookaside->Type, Lookaside->Size, Lookaside->Tag); Entry = (Lookaside->L.Allocate)(Lookaside->L.Type, Lookaside->L.Size, Lookaside->L.Tag);
} }
return Entry; return Entry;
} }
@ -5716,12 +5804,11 @@ ExAllocateFromPagedLookasideList(
{ {
PVOID Entry; PVOID Entry;
Lookaside->TotalAllocates++; Lookaside->L.TotalAllocates++;
Entry = InterlockedPopEntrySList(&Lookaside->ListHead); Entry = InterlockedPopEntrySList(&Lookaside->L.ListHead);
if (Entry == NULL) { if (Entry == NULL) {
Lookaside->_DDK_DUMMYUNION_MEMBER(AllocateMisses)++; Lookaside->L.AllocateMisses++;
Entry = (Lookaside->Allocate)(Lookaside->Type, Entry = (Lookaside->L.Allocate)(Lookaside->L.Type, Lookaside->L.Size, Lookaside->L.Tag);
Lookaside->Size, Lookaside->Tag);
} }
return Entry; return Entry;
} }
@ -5833,14 +5920,13 @@ ExFreeToNPagedLookasideList(
IN PNPAGED_LOOKASIDE_LIST Lookaside, IN PNPAGED_LOOKASIDE_LIST Lookaside,
IN PVOID Entry) IN PVOID Entry)
{ {
Lookaside->TotalFrees++; Lookaside->L.TotalFrees++;
if (ExQueryDepthSList(&Lookaside->ListHead) >= Lookaside->Depth) { if (ExQueryDepthSList(&Lookaside->L.ListHead) >= Lookaside->L.Depth) {
Lookaside->_DDK_DUMMYUNION_N_MEMBER(2,FreeMisses)++; Lookaside->L.FreeMisses++;
(Lookaside->Free)(Entry); (Lookaside->L.Free)(Entry);
} else { } else {
InterlockedPushEntrySList(&Lookaside->ListHead, InterlockedPushEntrySList(&Lookaside->L.ListHead, (PSLIST_ENTRY)Entry);
(PSLIST_ENTRY)Entry); }
}
} }
static __inline VOID static __inline VOID
@ -5848,12 +5934,12 @@ ExFreeToPagedLookasideList(
IN PPAGED_LOOKASIDE_LIST Lookaside, IN PPAGED_LOOKASIDE_LIST Lookaside,
IN PVOID Entry) IN PVOID Entry)
{ {
Lookaside->TotalFrees++; Lookaside->L.TotalFrees++;
if (ExQueryDepthSList(&Lookaside->ListHead) >= Lookaside->Depth) { if (ExQueryDepthSList(&Lookaside->L.ListHead) >= Lookaside->L.Depth) {
Lookaside->_DDK_DUMMYUNION_N_MEMBER(2,FreeMisses)++; Lookaside->L.FreeMisses++;
(Lookaside->Free)(Entry); (Lookaside->L.Free)(Entry);
} else { } else {
InterlockedPushEntrySList(&Lookaside->ListHead, (PSLIST_ENTRY)Entry); InterlockedPushEntrySList(&Lookaside->L.ListHead, (PSLIST_ENTRY)Entry);
} }
} }
@ -5975,6 +6061,14 @@ ExInterlockedCompareExchange64(
IN PLONGLONG Comparand, IN PLONGLONG Comparand,
IN PKSPIN_LOCK Lock); IN PKSPIN_LOCK Lock);
NTOSAPI
LONGLONG
DDKFASTAPI
ExfInterlockedCompareExchange64(
IN OUT LONGLONG volatile *Destination,
IN PLONGLONG Exchange,
IN PLONGLONG Comperand);
NTOSAPI NTOSAPI
PSINGLE_LIST_ENTRY PSINGLE_LIST_ENTRY
DDKFASTAPI DDKFASTAPI
@ -6112,7 +6206,11 @@ DDKAPI
ExReinitializeResourceLite( ExReinitializeResourceLite(
IN PERESOURCE Resource); IN PERESOURCE Resource);
#if defined(_X86_)
NTHALAPI
#else
NTOSAPI NTOSAPI
#endif
VOID VOID
DDKFASTAPI DDKFASTAPI
ExReleaseFastMutex( ExReleaseFastMutex(
@ -6158,7 +6256,11 @@ ExSystemTimeToLocalTime(
IN PLARGE_INTEGER SystemTime, IN PLARGE_INTEGER SystemTime,
OUT PLARGE_INTEGER LocalTime); OUT PLARGE_INTEGER LocalTime);
#ifdef _M_IX86
NTHALAPI
#else
NTOSAPI NTOSAPI
#endif
BOOLEAN BOOLEAN
DDKFASTAPI DDKFASTAPI
ExTryToAcquireFastMutex( ExTryToAcquireFastMutex(
@ -6251,7 +6353,7 @@ FsRtlIsTotalDeviceFailure(
/** Hardware abstraction layer routines **/ /** Hardware abstraction layer routines **/
NTOSAPI NTHALAPI
BOOLEAN BOOLEAN
DDKAPI DDKAPI
HalMakeBeep( HalMakeBeep(
@ -6266,7 +6368,7 @@ HalExamineMBR(
IN ULONG MBRTypeIdentifier, IN ULONG MBRTypeIdentifier,
OUT PVOID *Buffer); OUT PVOID *Buffer);
NTOSAPI NTHALAPI
VOID VOID
DDKAPI DDKAPI
READ_PORT_BUFFER_UCHAR( READ_PORT_BUFFER_UCHAR(
@ -6274,7 +6376,7 @@ READ_PORT_BUFFER_UCHAR(
IN PUCHAR Buffer, IN PUCHAR Buffer,
IN ULONG Count); IN ULONG Count);
NTOSAPI NTHALAPI
VOID VOID
DDKAPI DDKAPI
READ_PORT_BUFFER_ULONG( READ_PORT_BUFFER_ULONG(
@ -6282,7 +6384,7 @@ READ_PORT_BUFFER_ULONG(
IN PULONG Buffer, IN PULONG Buffer,
IN ULONG Count); IN ULONG Count);
NTOSAPI NTHALAPI
VOID VOID
DDKAPI DDKAPI
READ_PORT_BUFFER_USHORT( READ_PORT_BUFFER_USHORT(
@ -6290,19 +6392,19 @@ READ_PORT_BUFFER_USHORT(
IN PUSHORT Buffer, IN PUSHORT Buffer,
IN ULONG Count); IN ULONG Count);
NTOSAPI NTHALAPI
UCHAR UCHAR
DDKAPI DDKAPI
READ_PORT_UCHAR( READ_PORT_UCHAR(
IN PUCHAR Port); IN PUCHAR Port);
NTOSAPI NTHALAPI
ULONG ULONG
DDKAPI DDKAPI
READ_PORT_ULONG( READ_PORT_ULONG(
IN PULONG Port); IN PULONG Port);
NTOSAPI NTHALAPI
USHORT USHORT
DDKAPI DDKAPI
READ_PORT_USHORT( READ_PORT_USHORT(
@ -6350,7 +6452,7 @@ DDKAPI
READ_REGISTER_USHORT( READ_REGISTER_USHORT(
IN PUSHORT Register); IN PUSHORT Register);
NTOSAPI NTHALAPI
VOID VOID
DDKAPI DDKAPI
WRITE_PORT_BUFFER_UCHAR( WRITE_PORT_BUFFER_UCHAR(
@ -6358,7 +6460,7 @@ WRITE_PORT_BUFFER_UCHAR(
IN PUCHAR Buffer, IN PUCHAR Buffer,
IN ULONG Count); IN ULONG Count);
NTOSAPI NTHALAPI
VOID VOID
DDKAPI DDKAPI
WRITE_PORT_BUFFER_ULONG( WRITE_PORT_BUFFER_ULONG(
@ -6366,7 +6468,7 @@ WRITE_PORT_BUFFER_ULONG(
IN PULONG Buffer, IN PULONG Buffer,
IN ULONG Count); IN ULONG Count);
NTOSAPI NTHALAPI
VOID VOID
DDKAPI DDKAPI
WRITE_PORT_BUFFER_USHORT( WRITE_PORT_BUFFER_USHORT(
@ -6374,21 +6476,21 @@ WRITE_PORT_BUFFER_USHORT(
IN PUSHORT Buffer, IN PUSHORT Buffer,
IN ULONG Count); IN ULONG Count);
NTOSAPI NTHALAPI
VOID VOID
DDKAPI DDKAPI
WRITE_PORT_UCHAR( WRITE_PORT_UCHAR(
IN PUCHAR Port, IN PUCHAR Port,
IN UCHAR Value); IN UCHAR Value);
NTOSAPI NTHALAPI
VOID VOID
DDKAPI DDKAPI
WRITE_PORT_ULONG( WRITE_PORT_ULONG(
IN PULONG Port, IN PULONG Port,
IN ULONG Value); IN ULONG Value);
NTOSAPI NTHALAPI
VOID VOID
DDKAPI DDKAPI
WRITE_PORT_USHORT( WRITE_PORT_USHORT(
@ -7420,14 +7522,14 @@ IoReuseIrp(
} }
NTOSAPI NTOSAPI
VOID NTSTATUS
DDKAPI DDKAPI
IoSetCompletionRoutineEx( IoSetCompletionRoutineEx(
IN PDEVICE_OBJECT DeviceObject, IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp, IN PIRP Irp,
IN PIO_COMPLETION_ROUTINE CompletionRoutine, IN PIO_COMPLETION_ROUTINE CompletionRoutine,
IN PVOID Context, IN PVOID Context,
IN BOOLEAN InvokeOnSuccess, IN BOOLEAN InvokeOnSuccess,
IN BOOLEAN InvokeOnError, IN BOOLEAN InvokeOnError,
IN BOOLEAN InvokeOnCancel); IN BOOLEAN InvokeOnCancel);
@ -7734,7 +7836,7 @@ IoWritePartitionTableEx(
/** Kernel routines **/ /** Kernel routines **/
NTOSAPI NTHALAPI
VOID VOID
DDKFASTAPI DDKFASTAPI
KeAcquireInStackQueuedSpinLock( KeAcquireInStackQueuedSpinLock(
@ -7754,12 +7856,6 @@ DDKAPI
KeAcquireInterruptSpinLock( KeAcquireInterruptSpinLock(
IN PKINTERRUPT Interrupt); IN PKINTERRUPT Interrupt);
NTOSAPI
VOID
DDKAPI
KeAcquireSpinLock(
IN PKSPIN_LOCK SpinLock,
OUT PKIRQL OldIrql);
/* System Service Dispatch Table */ /* System Service Dispatch Table */
typedef PVOID (NTAPI * SSDT)(VOID); typedef PVOID (NTAPI * SSDT)(VOID);
@ -7958,7 +8054,7 @@ DDKAPI
KeQueryInterruptTime( KeQueryInterruptTime(
VOID); VOID);
NTOSAPI NTHALAPI
LARGE_INTEGER LARGE_INTEGER
DDKAPI DDKAPI
KeQueryPerformanceCounter( KeQueryPerformanceCounter(
@ -8022,7 +8118,7 @@ KeRegisterBugCheckCallback(
IN ULONG Length, IN ULONG Length,
IN PUCHAR Component); IN PUCHAR Component);
NTOSAPI NTHALAPI
VOID VOID
DDKFASTAPI DDKFASTAPI
KeReleaseInStackQueuedSpinLock( KeReleaseInStackQueuedSpinLock(
@ -8057,13 +8153,6 @@ KeReleaseSemaphore(
IN LONG Adjustment, IN LONG Adjustment,
IN BOOLEAN Wait); IN BOOLEAN Wait);
NTOSAPI
VOID
DDKAPI
KeReleaseSpinLock(
IN PKSPIN_LOCK SpinLock,
IN KIRQL NewIrql);
NTOSAPI NTOSAPI
PKDEVICE_QUEUE_ENTRY PKDEVICE_QUEUE_ENTRY
DDKAPI DDKAPI
@ -8167,7 +8256,7 @@ DDKFASTAPI
KeSetTimeUpdateNotifyRoutine( KeSetTimeUpdateNotifyRoutine(
IN PTIME_UPDATE_NOTIFY_ROUTINE NotifyRoutine); IN PTIME_UPDATE_NOTIFY_ROUTINE NotifyRoutine);
NTOSAPI NTHALAPI
VOID VOID
DDKAPI DDKAPI
KeStallExecutionProcessor( KeStallExecutionProcessor(
@ -8216,18 +8305,24 @@ KeWaitForSingleObject(
#if defined(_X86_) #if defined(_X86_)
NTOSAPI NTHALAPI
VOID VOID
FASTCALL FASTCALL
KfLowerIrql( KfLowerIrql(
IN KIRQL NewIrql); IN KIRQL NewIrql);
NTOSAPI NTHALAPI
KIRQL KIRQL
FASTCALL FASTCALL
KfRaiseIrql( KfRaiseIrql(
IN KIRQL NewIrql); IN KIRQL NewIrql);
NTHALAPI
KIRQL
DDKAPI
KeRaiseIrqlToDpcLevel(
VOID);
#define KeLowerIrql(a) KfLowerIrql(a) #define KeLowerIrql(a) KfLowerIrql(a)
#define KeRaiseIrql(a,b) *(b) = KfRaiseIrql(a) #define KeRaiseIrql(a,b) *(b) = KfRaiseIrql(a)
@ -8245,14 +8340,14 @@ DDKAPI
KeRaiseIrql( KeRaiseIrql(
IN KIRQL NewIrql); IN KIRQL NewIrql);
#endif
NTOSAPI NTOSAPI
KIRQL KIRQL
DDKAPI DDKAPI
KeRaiseIrqlToDpcLevel( KeRaiseIrqlToDpcLevel(
VOID); VOID);
#endif
/** Memory manager routines **/ /** Memory manager routines **/
NTOSAPI NTOSAPI
@ -9742,11 +9837,22 @@ KeRosDumpStackFrames ( PULONG Frame, ULONG FrameCount );
#endif /* !DBG */ #endif /* !DBG */
#if defined(_NTDDK_) || defined(_NTIFS_) || defined(_NTHAL_) || defined(_WDMDDK_) || defined(_NTOSP_)
extern NTOSAPI PBOOLEAN KdDebuggerNotPresent; extern NTOSAPI PBOOLEAN KdDebuggerNotPresent;
extern NTOSAPI PBOOLEAN KdDebuggerEnabled; extern NTOSAPI PBOOLEAN KdDebuggerEnabled;
#define KD_DEBUGGER_ENABLED *KdDebuggerEnabled #define KD_DEBUGGER_ENABLED *KdDebuggerEnabled
#define KD_DEBUGGER_NOT_PRESENT *KdDebuggerNotPresent #define KD_DEBUGGER_NOT_PRESENT *KdDebuggerNotPresent
#else
extern BOOLEAN KdDebuggerNotPresent;
extern BOOLEAN KdDebuggerEnabled;
#define KD_DEBUGGER_ENABLED KdDebuggerEnabled
#define KD_DEBUGGER_NOT_PRESENT KdDebuggerNotPresent
#endif
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View file

@ -182,7 +182,22 @@ ExInterlockedIncrementLong(
IN PLONG Addend, IN PLONG Addend,
IN PKSPIN_LOCK Lock); IN PKSPIN_LOCK Lock);
NTOSAPI NTHALAPI
VOID
DDKAPI
HalAcquireDisplayOwnership(
IN PHAL_RESET_DISPLAY_PARAMETERS ResetDisplayParameters);
NTHALAPI
NTSTATUS
DDKAPI
HalAllocateAdapterChannel(
IN PADAPTER_OBJECT AdapterObject,
IN PWAIT_CONTEXT_BLOCK Wcb,
IN ULONG NumberOfMapRegisters,
IN PDRIVER_CONTROL ExecutionRoutine);
NTHALAPI
PVOID PVOID
DDKAPI DDKAPI
HalAllocateCommonBuffer( HalAllocateCommonBuffer(
@ -191,7 +206,7 @@ HalAllocateCommonBuffer(
OUT PPHYSICAL_ADDRESS LogicalAddress, OUT PPHYSICAL_ADDRESS LogicalAddress,
IN BOOLEAN CacheEnabled); IN BOOLEAN CacheEnabled);
NTOSAPI NTHALAPI
NTSTATUS NTSTATUS
DDKAPI DDKAPI
HalAssignSlotResources( HalAssignSlotResources(
@ -204,7 +219,7 @@ HalAssignSlotResources(
IN ULONG SlotNumber, IN ULONG SlotNumber,
IN OUT PCM_RESOURCE_LIST *AllocatedResources); IN OUT PCM_RESOURCE_LIST *AllocatedResources);
NTOSAPI NTHALAPI
VOID VOID
DDKAPI DDKAPI
HalFreeCommonBuffer( HalFreeCommonBuffer(
@ -214,14 +229,14 @@ HalFreeCommonBuffer(
IN PVOID VirtualAddress, IN PVOID VirtualAddress,
IN BOOLEAN CacheEnabled); IN BOOLEAN CacheEnabled);
NTOSAPI NTHALAPI
PADAPTER_OBJECT PADAPTER_OBJECT
DDKAPI DDKAPI
HalGetAdapter( HalGetAdapter(
IN PDEVICE_DESCRIPTION DeviceDescription, IN PDEVICE_DESCRIPTION DeviceDescription,
IN OUT PULONG NumberOfMapRegisters); IN OUT PULONG NumberOfMapRegisters);
NTOSAPI NTHALAPI
ULONG ULONG
DDKAPI DDKAPI
HalGetBusData( HalGetBusData(
@ -231,7 +246,7 @@ HalGetBusData(
IN PVOID Buffer, IN PVOID Buffer,
IN ULONG Length); IN ULONG Length);
NTOSAPI NTHALAPI
ULONG ULONG
DDKAPI DDKAPI
HalGetBusDataByOffset( HalGetBusDataByOffset(
@ -242,13 +257,13 @@ HalGetBusDataByOffset(
IN ULONG Offset, IN ULONG Offset,
IN ULONG Length); IN ULONG Length);
NTOSAPI NTHALAPI
ULONG ULONG
DDKAPI DDKAPI
HalGetDmaAlignmentRequirement( HalGetDmaAlignmentRequirement(
VOID); VOID);
NTOSAPI NTHALAPI
ULONG ULONG
DDKAPI DDKAPI
HalGetInterruptVector( HalGetInterruptVector(
@ -259,13 +274,13 @@ HalGetInterruptVector(
OUT PKIRQL Irql, OUT PKIRQL Irql,
OUT PKAFFINITY Affinity); OUT PKAFFINITY Affinity);
NTOSAPI NTHALAPI
ULONG ULONG
DDKAPI DDKAPI
HalReadDmaCounter( HalReadDmaCounter(
IN PADAPTER_OBJECT AdapterObject); IN PADAPTER_OBJECT AdapterObject);
NTOSAPI NTHALAPI
ULONG ULONG
DDKAPI DDKAPI
HalSetBusData( HalSetBusData(
@ -275,7 +290,7 @@ HalSetBusData(
IN PVOID Buffer, IN PVOID Buffer,
IN ULONG Length); IN ULONG Length);
NTOSAPI NTHALAPI
ULONG ULONG
DDKAPI DDKAPI
HalSetBusDataByOffset( HalSetBusDataByOffset(
@ -286,7 +301,7 @@ HalSetBusDataByOffset(
IN ULONG Offset, IN ULONG Offset,
IN ULONG Length); IN ULONG Length);
NTOSAPI NTHALAPI
BOOLEAN BOOLEAN
DDKAPI DDKAPI
HalTranslateBusAddress( HalTranslateBusAddress(
@ -324,7 +339,7 @@ IoAttachDeviceByPointer(
IN PDEVICE_OBJECT SourceDevice, IN PDEVICE_OBJECT SourceDevice,
IN PDEVICE_OBJECT TargetDevice); IN PDEVICE_OBJECT TargetDevice);
NTOSAPI NTHALAPI
BOOLEAN BOOLEAN
DDKAPI DDKAPI
IoFlushAdapterBuffers( IoFlushAdapterBuffers(
@ -335,13 +350,13 @@ IoFlushAdapterBuffers(
IN ULONG Length, IN ULONG Length,
IN BOOLEAN WriteToDevice); IN BOOLEAN WriteToDevice);
NTOSAPI NTHALAPI
VOID VOID
DDKAPI DDKAPI
IoFreeAdapterChannel( IoFreeAdapterChannel(
IN PADAPTER_OBJECT AdapterObject); IN PADAPTER_OBJECT AdapterObject);
NTOSAPI NTHALAPI
VOID VOID
DDKAPI DDKAPI
IoFreeMapRegisters( IoFreeMapRegisters(
@ -349,7 +364,7 @@ IoFreeMapRegisters(
IN PVOID MapRegisterBase, IN PVOID MapRegisterBase,
IN ULONG NumberOfMapRegisters); IN ULONG NumberOfMapRegisters);
NTOSAPI NTHALAPI
PHYSICAL_ADDRESS PHYSICAL_ADDRESS
DDKAPI DDKAPI
IoMapTransfer( IoMapTransfer(