2006-02-17 23:20:14 +00:00
|
|
|
/*
|
|
|
|
* ntddk.h
|
|
|
|
*
|
|
|
|
* Windows Device Driver Kit
|
|
|
|
*
|
|
|
|
* This file is part of the w32api package.
|
|
|
|
*
|
|
|
|
* Contributors:
|
|
|
|
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
|
|
|
|
*
|
|
|
|
* THIS SOFTWARE IS NOT COPYRIGHTED
|
|
|
|
*
|
|
|
|
* This source code is offered for use in the public domain. You may
|
|
|
|
* use, modify or distribute it freely.
|
|
|
|
*
|
|
|
|
* This code is distributed in the hope that it will be useful but
|
|
|
|
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
|
|
|
* DISCLAIMED. This includes but is not limited to warranties of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
|
|
*
|
|
|
|
* DEFINES:
|
|
|
|
* DBG - Debugging enabled/disabled (0/1)
|
|
|
|
* POOL_TAGGING - Enable pool tagging
|
|
|
|
* _X86_ - X86 environment
|
|
|
|
*/
|
|
|
|
|
2009-02-09 22:50:40 +00:00
|
|
|
#ifndef _NTDDK_
|
|
|
|
#define _NTDDK_
|
2006-02-17 23:20:14 +00:00
|
|
|
|
2010-03-10 17:42:51 +00:00
|
|
|
#if !defined(_NTHAL_) && !defined(_NTIFS_)
|
|
|
|
#define _NTDDK_INCLUDED_
|
|
|
|
#define _DDK_DRIVER_
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/* Dependencies */
|
|
|
|
|
2008-12-01 15:12:23 +00:00
|
|
|
#define NT_INCLUDED
|
2010-03-10 17:42:51 +00:00
|
|
|
#define _CTYPE_DISABLE_MACROS
|
|
|
|
|
2008-12-01 15:12:23 +00:00
|
|
|
#include <wdm.h>
|
2006-02-17 23:20:14 +00:00
|
|
|
#include <excpt.h>
|
|
|
|
#include <ntdef.h>
|
2008-12-01 15:12:23 +00:00
|
|
|
#include <ntstatus.h>
|
2006-02-17 23:20:14 +00:00
|
|
|
|
2010-03-10 17:42:51 +00:00
|
|
|
/* FIXME
|
|
|
|
#include <bugcodes.h>
|
|
|
|
#include <ntiologc.h>
|
|
|
|
*/
|
|
|
|
|
2008-12-01 15:12:23 +00:00
|
|
|
#include <stdarg.h> // FIXME
|
|
|
|
#include <basetyps.h> // FIXME
|
2007-04-20 02:30:53 +00:00
|
|
|
|
2006-02-17 23:20:14 +00:00
|
|
|
|
|
|
|
|
2008-12-01 15:12:23 +00:00
|
|
|
//
|
|
|
|
// GUID and UUID
|
|
|
|
//
|
|
|
|
#ifndef GUID_DEFINED
|
|
|
|
#include <guiddef.h>
|
2006-02-17 23:20:14 +00:00
|
|
|
#endif
|
2008-12-01 15:12:23 +00:00
|
|
|
typedef GUID UUID;
|
2006-02-17 23:20:14 +00:00
|
|
|
|
2010-03-10 17:42:51 +00:00
|
|
|
typedef struct _BUS_HANDLER *PBUS_HANDLER;
|
|
|
|
|
|
|
|
#define KERNEL_STACK_SIZE 12288
|
|
|
|
#define KERNEL_LARGE_STACK_SIZE 61440
|
|
|
|
#define KERNEL_LARGE_STACK_COMMIT 12288
|
|
|
|
|
|
|
|
#ifdef _X86_
|
|
|
|
|
|
|
|
#define SIZE_OF_80387_REGISTERS 80
|
|
|
|
|
|
|
|
typedef struct _FLOATING_SAVE_AREA {
|
|
|
|
ULONG ControlWord;
|
|
|
|
ULONG StatusWord;
|
|
|
|
ULONG TagWord;
|
|
|
|
ULONG ErrorOffset;
|
|
|
|
ULONG ErrorSelector;
|
|
|
|
ULONG DataOffset;
|
|
|
|
ULONG DataSelector;
|
|
|
|
UCHAR RegisterArea[SIZE_OF_80387_REGISTERS];
|
|
|
|
ULONG Cr0NpxState;
|
|
|
|
} FLOATING_SAVE_AREA, *PFLOATING_SAVE_AREA;
|
|
|
|
|
|
|
|
#include "pshpack4.h"
|
|
|
|
typedef struct _CONTEXT {
|
|
|
|
ULONG ContextFlags;
|
|
|
|
ULONG Dr0;
|
|
|
|
ULONG Dr1;
|
|
|
|
ULONG Dr2;
|
|
|
|
ULONG Dr3;
|
|
|
|
ULONG Dr6;
|
|
|
|
ULONG Dr7;
|
|
|
|
FLOATING_SAVE_AREA FloatSave;
|
|
|
|
ULONG SegGs;
|
|
|
|
ULONG SegFs;
|
|
|
|
ULONG SegEs;
|
|
|
|
ULONG SegDs;
|
|
|
|
ULONG Edi;
|
|
|
|
ULONG Esi;
|
|
|
|
ULONG Ebx;
|
|
|
|
ULONG Edx;
|
|
|
|
ULONG Ecx;
|
|
|
|
ULONG Eax;
|
|
|
|
ULONG Ebp;
|
|
|
|
ULONG Eip;
|
|
|
|
ULONG SegCs;
|
|
|
|
ULONG EFlags;
|
|
|
|
ULONG Esp;
|
|
|
|
ULONG SegSs;
|
|
|
|
UCHAR ExtendedRegisters[MAXIMUM_SUPPORTED_EXTENSION];
|
2010-03-10 20:41:13 +00:00
|
|
|
} CONTEXT;
|
2010-03-10 17:42:51 +00:00
|
|
|
#include "poppack.h"
|
|
|
|
|
2010-03-10 20:41:13 +00:00
|
|
|
#endif /* _X86_ */
|
2010-03-10 17:42:51 +00:00
|
|
|
|
|
|
|
#ifdef _AMD64_
|
|
|
|
|
|
|
|
#if !defined(RC_INVOKED)
|
|
|
|
|
|
|
|
#define CONTEXT_AMD64 0x100000
|
|
|
|
|
|
|
|
#define CONTEXT_CONTROL (CONTEXT_AMD64 | 0x1L)
|
|
|
|
#define CONTEXT_INTEGER (CONTEXT_AMD64 | 0x2L)
|
|
|
|
#define CONTEXT_SEGMENTS (CONTEXT_AMD64 | 0x4L)
|
|
|
|
#define CONTEXT_FLOATING_POINT (CONTEXT_AMD64 | 0x8L)
|
|
|
|
#define CONTEXT_DEBUG_REGISTERS (CONTEXT_AMD64 | 0x10L)
|
|
|
|
|
|
|
|
#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT)
|
|
|
|
#define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS)
|
|
|
|
|
|
|
|
#define CONTEXT_XSTATE (CONTEXT_AMD64 | 0x20L)
|
|
|
|
|
|
|
|
#define CONTEXT_EXCEPTION_ACTIVE 0x8000000
|
|
|
|
#define CONTEXT_SERVICE_ACTIVE 0x10000000
|
|
|
|
#define CONTEXT_EXCEPTION_REQUEST 0x40000000
|
|
|
|
#define CONTEXT_EXCEPTION_REPORTING 0x80000000
|
|
|
|
|
2010-03-10 20:41:13 +00:00
|
|
|
#endif /* RC_INVOKED */
|
|
|
|
|
|
|
|
#endif /* _AMD64_ */
|
2010-03-10 17:42:51 +00:00
|
|
|
|
|
|
|
typedef enum _INTERLOCKED_RESULT {
|
|
|
|
ResultNegative = RESULT_NEGATIVE,
|
|
|
|
ResultZero = RESULT_ZERO,
|
|
|
|
ResultPositive = RESULT_POSITIVE
|
|
|
|
} INTERLOCKED_RESULT;
|
|
|
|
|
2010-03-10 20:41:13 +00:00
|
|
|
typedef struct _OSVERSIONINFOA {
|
|
|
|
ULONG dwOSVersionInfoSize;
|
|
|
|
ULONG dwMajorVersion;
|
|
|
|
ULONG dwMinorVersion;
|
|
|
|
ULONG dwBuildNumber;
|
|
|
|
ULONG dwPlatformId;
|
|
|
|
CHAR szCSDVersion[128];
|
|
|
|
} OSVERSIONINFOA, *POSVERSIONINFOA, *LPOSVERSIONINFOA;
|
|
|
|
|
|
|
|
typedef struct _OSVERSIONINFOW {
|
|
|
|
ULONG dwOSVersionInfoSize;
|
|
|
|
ULONG dwMajorVersion;
|
|
|
|
ULONG dwMinorVersion;
|
|
|
|
ULONG dwBuildNumber;
|
|
|
|
ULONG dwPlatformId;
|
|
|
|
WCHAR szCSDVersion[128];
|
|
|
|
} OSVERSIONINFOW, *POSVERSIONINFOW, *LPOSVERSIONINFOW, RTL_OSVERSIONINFOW, *PRTL_OSVERSIONINFOW;
|
|
|
|
|
|
|
|
typedef struct _OSVERSIONINFOEXA {
|
|
|
|
ULONG dwOSVersionInfoSize;
|
|
|
|
ULONG dwMajorVersion;
|
|
|
|
ULONG dwMinorVersion;
|
|
|
|
ULONG dwBuildNumber;
|
|
|
|
ULONG dwPlatformId;
|
|
|
|
CHAR szCSDVersion[128];
|
|
|
|
USHORT wServicePackMajor;
|
|
|
|
USHORT wServicePackMinor;
|
|
|
|
USHORT wSuiteMask;
|
|
|
|
UCHAR wProductType;
|
|
|
|
UCHAR wReserved;
|
|
|
|
} OSVERSIONINFOEXA, *POSVERSIONINFOEXA, *LPOSVERSIONINFOEXA;
|
|
|
|
|
|
|
|
typedef struct _OSVERSIONINFOEXW {
|
|
|
|
ULONG dwOSVersionInfoSize;
|
|
|
|
ULONG dwMajorVersion;
|
|
|
|
ULONG dwMinorVersion;
|
|
|
|
ULONG dwBuildNumber;
|
|
|
|
ULONG dwPlatformId;
|
|
|
|
WCHAR szCSDVersion[128];
|
|
|
|
USHORT wServicePackMajor;
|
|
|
|
USHORT wServicePackMinor;
|
|
|
|
USHORT wSuiteMask;
|
|
|
|
UCHAR wProductType;
|
|
|
|
UCHAR wReserved;
|
|
|
|
} OSVERSIONINFOEXW, *POSVERSIONINFOEXW, *LPOSVERSIONINFOEXW, RTL_OSVERSIONINFOEXW, *PRTL_OSVERSIONINFOEXW;
|
|
|
|
|
|
|
|
#ifdef UNICODE
|
|
|
|
typedef OSVERSIONINFOEXW OSVERSIONINFOEX;
|
|
|
|
typedef POSVERSIONINFOEXW POSVERSIONINFOEX;
|
|
|
|
typedef LPOSVERSIONINFOEXW LPOSVERSIONINFOEX;
|
|
|
|
typedef OSVERSIONINFOW OSVERSIONINFO;
|
|
|
|
typedef POSVERSIONINFOW POSVERSIONINFO;
|
|
|
|
typedef LPOSVERSIONINFOW LPOSVERSIONINFO;
|
|
|
|
#else
|
|
|
|
typedef OSVERSIONINFOEXA OSVERSIONINFOEX;
|
|
|
|
typedef POSVERSIONINFOEXA POSVERSIONINFOEX;
|
|
|
|
typedef LPOSVERSIONINFOEXA LPOSVERSIONINFOEX;
|
|
|
|
typedef OSVERSIONINFOA OSVERSIONINFO;
|
|
|
|
typedef POSVERSIONINFOA POSVERSIONINFO;
|
|
|
|
typedef LPOSVERSIONINFOA LPOSVERSIONINFO;
|
|
|
|
#endif /* UNICODE */
|
|
|
|
|
|
|
|
typedef struct _RTL_SPLAY_LINKS {
|
|
|
|
struct _RTL_SPLAY_LINKS *Parent;
|
|
|
|
struct _RTL_SPLAY_LINKS *LeftChild;
|
|
|
|
struct _RTL_SPLAY_LINKS *RightChild;
|
|
|
|
} RTL_SPLAY_LINKS, *PRTL_SPLAY_LINKS;
|
|
|
|
|
2010-03-10 17:42:51 +00:00
|
|
|
#if (defined(_M_AMD64) || defined(_M_IA64)) && !defined(_REALLY_GET_CALLERS_CALLER_)
|
|
|
|
|
|
|
|
#define RtlGetCallersAddress(CallersAddress, CallersCaller) \
|
|
|
|
*CallersAddress = (PVOID)_ReturnAddress(); \
|
|
|
|
*CallersCaller = NULL;
|
|
|
|
#else
|
|
|
|
|
|
|
|
#if (NTDDI_VERSION >= NTDDI_WIN2K)
|
|
|
|
NTSYSAPI
|
|
|
|
VOID
|
|
|
|
NTAPI
|
|
|
|
RtlGetCallersAddress(
|
|
|
|
OUT PVOID *CallersAddress,
|
|
|
|
OUT PVOID *CallersCaller);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#if !defined(MIDL_PASS)
|
|
|
|
|
|
|
|
FORCEINLINE
|
|
|
|
LUID
|
|
|
|
NTAPI_INLINE
|
|
|
|
RtlConvertLongToLuid(
|
|
|
|
IN LONG Val)
|
|
|
|
{
|
|
|
|
LUID Luid;
|
|
|
|
LARGE_INTEGER Temp;
|
|
|
|
|
|
|
|
Temp.QuadPart = Val;
|
|
|
|
Luid.LowPart = Temp.u.LowPart;
|
|
|
|
Luid.HighPart = Temp.u.HighPart;
|
|
|
|
return Luid;
|
|
|
|
}
|
|
|
|
|
|
|
|
FORCEINLINE
|
|
|
|
LUID
|
|
|
|
NTAPI_INLINE
|
|
|
|
RtlConvertUlongToLuid(
|
|
|
|
IN ULONG Val)
|
|
|
|
{
|
|
|
|
LUID Luid;
|
|
|
|
|
|
|
|
Luid.LowPart = Val;
|
|
|
|
Luid.HighPart = 0;
|
|
|
|
return Luid;
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#if (NTDDI_VERSION >= NTDDI_WIN2K)
|
|
|
|
|
|
|
|
NTSYSAPI
|
|
|
|
BOOLEAN
|
|
|
|
NTAPI
|
|
|
|
RtlPrefixUnicodeString(
|
|
|
|
IN PCUNICODE_STRING String1,
|
|
|
|
IN PCUNICODE_STRING String2,
|
|
|
|
IN BOOLEAN CaseInSensitive);
|
|
|
|
|
|
|
|
NTSYSAPI
|
|
|
|
VOID
|
|
|
|
NTAPI
|
|
|
|
RtlUpperString(
|
|
|
|
IN OUT PSTRING DestinationString,
|
|
|
|
IN const PSTRING SourceString);
|
|
|
|
|
|
|
|
NTSYSAPI
|
|
|
|
NTSTATUS
|
|
|
|
NTAPI
|
|
|
|
RtlUpcaseUnicodeString(
|
|
|
|
IN OUT PUNICODE_STRING DestinationString,
|
|
|
|
IN PCUNICODE_STRING SourceString,
|
|
|
|
IN BOOLEAN AllocateDestinationString);
|
|
|
|
|
|
|
|
NTSYSAPI
|
|
|
|
VOID
|
|
|
|
NTAPI
|
|
|
|
RtlMapGenericMask(
|
|
|
|
IN OUT PACCESS_MASK AccessMask,
|
|
|
|
IN PGENERIC_MAPPING GenericMapping);
|
|
|
|
|
|
|
|
NTSYSAPI
|
|
|
|
NTSTATUS
|
|
|
|
NTAPI
|
|
|
|
RtlVolumeDeviceToDosName(
|
|
|
|
IN PVOID VolumeDeviceObject,
|
|
|
|
OUT PUNICODE_STRING DosName);
|
|
|
|
|
|
|
|
NTSYSAPI
|
|
|
|
NTSTATUS
|
|
|
|
NTAPI
|
|
|
|
RtlGetVersion(
|
|
|
|
IN OUT PRTL_OSVERSIONINFOW lpVersionInformation);
|
|
|
|
|
|
|
|
NTSYSAPI
|
|
|
|
NTSTATUS
|
|
|
|
NTAPI
|
|
|
|
RtlVerifyVersionInfo(
|
|
|
|
IN PRTL_OSVERSIONINFOEXW VersionInfo,
|
|
|
|
IN ULONG TypeMask,
|
|
|
|
IN ULONGLONG ConditionMask);
|
|
|
|
|
|
|
|
NTSYSAPI
|
|
|
|
LONG
|
|
|
|
NTAPI
|
|
|
|
RtlCompareString(
|
|
|
|
IN const PSTRING String1,
|
|
|
|
IN const PSTRING String2,
|
|
|
|
BOOLEAN CaseInSensitive);
|
|
|
|
|
|
|
|
NTSYSAPI
|
|
|
|
VOID
|
|
|
|
NTAPI
|
|
|
|
RtlCopyString(
|
|
|
|
OUT PSTRING DestinationString,
|
|
|
|
IN const PSTRING SourceString OPTIONAL);
|
|
|
|
|
|
|
|
NTSYSAPI
|
|
|
|
BOOLEAN
|
|
|
|
NTAPI
|
|
|
|
RtlEqualString(
|
|
|
|
IN const PSTRING String1,
|
|
|
|
IN const PSTRING String2,
|
|
|
|
IN BOOLEAN CaseInSensitive);
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/* Executive Types */
|
|
|
|
|
|
|
|
#define PROTECTED_POOL 0x80000000
|
|
|
|
|
|
|
|
typedef struct _ZONE_SEGMENT_HEADER {
|
|
|
|
SINGLE_LIST_ENTRY SegmentList;
|
|
|
|
PVOID Reserved;
|
|
|
|
} ZONE_SEGMENT_HEADER, *PZONE_SEGMENT_HEADER;
|
|
|
|
|
|
|
|
typedef struct _ZONE_HEADER {
|
|
|
|
SINGLE_LIST_ENTRY FreeList;
|
|
|
|
SINGLE_LIST_ENTRY SegmentList;
|
|
|
|
ULONG BlockSize;
|
|
|
|
ULONG TotalSegmentSize;
|
|
|
|
} ZONE_HEADER, *PZONE_HEADER;
|
|
|
|
|
|
|
|
/* Executive Functions */
|
|
|
|
|
|
|
|
/*
|
|
|
|
* BOOLEAN
|
|
|
|
* ExIsFullZone(
|
|
|
|
* IN PZONE_HEADER Zone)
|
|
|
|
*/
|
|
|
|
#define ExIsFullZone(Zone) \
|
|
|
|
((Zone)->FreeList.Next == (PSINGLE_LIST_ENTRY) NULL)
|
|
|
|
|
|
|
|
/* BOOLEAN
|
|
|
|
* ExIsObjectInFirstZoneSegment(
|
|
|
|
* IN PZONE_HEADER Zone,
|
|
|
|
* IN PVOID Object);
|
|
|
|
*/
|
|
|
|
#define ExIsObjectInFirstZoneSegment(Zone,Object) \
|
|
|
|
((BOOLEAN)( ((PUCHAR)(Object) >= (PUCHAR)(Zone)->SegmentList.Next) && \
|
|
|
|
((PUCHAR)(Object) < (PUCHAR)(Zone)->SegmentList.Next + \
|
|
|
|
(Zone)->TotalSegmentSize)) )
|
|
|
|
|
|
|
|
#define ExAcquireResourceExclusive ExAcquireResourceExclusiveLite
|
|
|
|
#define ExAcquireResourceShared ExAcquireResourceSharedLite
|
|
|
|
#define ExConvertExclusiveToShared ExConvertExclusiveToSharedLite
|
|
|
|
#define ExDeleteResource ExDeleteResourceLite
|
|
|
|
#define ExInitializeResource ExInitializeResourceLite
|
|
|
|
#define ExIsResourceAcquiredExclusive ExIsResourceAcquiredExclusiveLite
|
|
|
|
#define ExIsResourceAcquiredShared ExIsResourceAcquiredSharedLite
|
|
|
|
#define ExIsResourceAcquired ExIsResourceAcquiredSharedLite
|
|
|
|
#define ExReleaseResourceForThread ExReleaseResourceForThreadLite
|
|
|
|
|
|
|
|
#if (NTDDI_VERSION >= NTDDI_WIN2K)
|
|
|
|
|
|
|
|
NTKERNELAPI
|
|
|
|
NTSTATUS
|
|
|
|
NTAPI
|
|
|
|
ExExtendZone(
|
|
|
|
IN OUT PZONE_HEADER Zone,
|
|
|
|
IN OUT PVOID Segment,
|
|
|
|
IN ULONG SegmentSize);
|
|
|
|
|
|
|
|
NTKERNELAPI
|
|
|
|
NTSTATUS
|
|
|
|
NTAPI
|
|
|
|
ExInitializeZone(
|
|
|
|
OUT PZONE_HEADER Zone,
|
|
|
|
IN ULONG BlockSize,
|
|
|
|
IN OUT PVOID InitialSegment,
|
|
|
|
IN ULONG InitialSegmentSize);
|
|
|
|
|
|
|
|
NTKERNELAPI
|
|
|
|
NTSTATUS
|
|
|
|
NTAPI
|
|
|
|
ExInterlockedExtendZone(
|
|
|
|
IN OUT PZONE_HEADER Zone,
|
|
|
|
IN OUT PVOID Segment,
|
|
|
|
IN ULONG SegmentSize,
|
|
|
|
IN OUT PKSPIN_LOCK Lock);
|
|
|
|
|
|
|
|
NTKERNELAPI
|
|
|
|
NTSTATUS
|
|
|
|
NTAPI
|
|
|
|
ExUuidCreate(
|
|
|
|
OUT UUID *Uuid);
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
2010-03-10 20:41:13 +00:00
|
|
|
#ifndef _ARC_DDK_
|
|
|
|
#define _ARC_DDK_
|
|
|
|
typedef enum _CONFIGURATION_TYPE {
|
|
|
|
ArcSystem,
|
|
|
|
CentralProcessor,
|
|
|
|
FloatingPointProcessor,
|
|
|
|
PrimaryIcache,
|
|
|
|
PrimaryDcache,
|
|
|
|
SecondaryIcache,
|
|
|
|
SecondaryDcache,
|
|
|
|
SecondaryCache,
|
|
|
|
EisaAdapter,
|
|
|
|
TcAdapter,
|
|
|
|
ScsiAdapter,
|
|
|
|
DtiAdapter,
|
|
|
|
MultiFunctionAdapter,
|
|
|
|
DiskController,
|
|
|
|
TapeController,
|
|
|
|
CdromController,
|
|
|
|
WormController,
|
|
|
|
SerialController,
|
|
|
|
NetworkController,
|
|
|
|
DisplayController,
|
|
|
|
ParallelController,
|
|
|
|
PointerController,
|
|
|
|
KeyboardController,
|
|
|
|
AudioController,
|
|
|
|
OtherController,
|
|
|
|
DiskPeripheral,
|
|
|
|
FloppyDiskPeripheral,
|
|
|
|
TapePeripheral,
|
|
|
|
ModemPeripheral,
|
|
|
|
MonitorPeripheral,
|
|
|
|
PrinterPeripheral,
|
|
|
|
PointerPeripheral,
|
|
|
|
KeyboardPeripheral,
|
|
|
|
TerminalPeripheral,
|
|
|
|
OtherPeripheral,
|
|
|
|
LinePeripheral,
|
|
|
|
NetworkPeripheral,
|
|
|
|
SystemMemory,
|
|
|
|
DockingInformation,
|
|
|
|
RealModeIrqRoutingTable,
|
|
|
|
RealModePCIEnumeration,
|
|
|
|
MaximumType
|
|
|
|
} CONFIGURATION_TYPE, *PCONFIGURATION_TYPE;
|
|
|
|
#endif /* !_ARC_DDK_ */
|
|
|
|
|
|
|
|
typedef struct _CONTROLLER_OBJECT {
|
|
|
|
CSHORT Type;
|
|
|
|
CSHORT Size;
|
|
|
|
PVOID ControllerExtension;
|
|
|
|
KDEVICE_QUEUE DeviceWaitQueue;
|
|
|
|
ULONG Spare1;
|
|
|
|
LARGE_INTEGER Spare2;
|
|
|
|
} CONTROLLER_OBJECT, *PCONTROLLER_OBJECT;
|
|
|
|
|
|
|
|
typedef struct _CONFIGURATION_INFORMATION {
|
|
|
|
ULONG DiskCount;
|
|
|
|
ULONG FloppyCount;
|
|
|
|
ULONG CdRomCount;
|
|
|
|
ULONG TapeCount;
|
|
|
|
ULONG ScsiPortCount;
|
|
|
|
ULONG SerialCount;
|
|
|
|
ULONG ParallelCount;
|
|
|
|
BOOLEAN AtDiskPrimaryAddressClaimed;
|
|
|
|
BOOLEAN AtDiskSecondaryAddressClaimed;
|
|
|
|
ULONG Version;
|
|
|
|
ULONG MediumChangerCount;
|
|
|
|
} CONFIGURATION_INFORMATION, *PCONFIGURATION_INFORMATION;
|
|
|
|
|
|
|
|
typedef
|
|
|
|
NTSTATUS
|
|
|
|
(DDKAPI *PIO_QUERY_DEVICE_ROUTINE)(
|
|
|
|
IN PVOID Context,
|
|
|
|
IN PUNICODE_STRING PathName,
|
|
|
|
IN INTERFACE_TYPE BusType,
|
|
|
|
IN ULONG BusNumber,
|
|
|
|
IN PKEY_VALUE_FULL_INFORMATION *BusInformation,
|
|
|
|
IN CONFIGURATION_TYPE ControllerType,
|
|
|
|
IN ULONG ControllerNumber,
|
|
|
|
IN PKEY_VALUE_FULL_INFORMATION *ControllerInformation,
|
|
|
|
IN CONFIGURATION_TYPE PeripheralType,
|
|
|
|
IN ULONG PeripheralNumber,
|
|
|
|
IN PKEY_VALUE_FULL_INFORMATION *PeripheralInformation);
|
|
|
|
|
|
|
|
typedef
|
|
|
|
VOID
|
|
|
|
(DDKAPI DRIVER_REINITIALIZE)(
|
|
|
|
IN struct _DRIVER_OBJECT *DriverObject,
|
|
|
|
IN PVOID Context,
|
|
|
|
IN ULONG Count);
|
|
|
|
|
|
|
|
typedef DRIVER_REINITIALIZE *PDRIVER_REINITIALIZE;
|
|
|
|
|
2010-03-10 17:42:51 +00:00
|
|
|
/* I/O Manager Functions */
|
|
|
|
|
|
|
|
#if (NTDDI_VERSION >= NTDDI_WIN2K)
|
|
|
|
|
|
|
|
#if !(defined(USE_DMA_MACROS) && (defined(_NTDDK_) || defined(_NTDRIVER_)) || defined(_WDM_INCLUDED_))
|
|
|
|
NTKERNELAPI
|
|
|
|
NTSTATUS
|
|
|
|
NTAPI
|
|
|
|
IoAllocateAdapterChannel(
|
|
|
|
IN PADAPTER_OBJECT AdapterObject,
|
|
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
|
|
IN ULONG NumberOfMapRegisters,
|
|
|
|
IN PDRIVER_CONTROL ExecutionRoutine,
|
|
|
|
IN PVOID Context);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
//DECLSPEC_DEPRECATED_DDK
|
|
|
|
NTHALAPI
|
|
|
|
PHYSICAL_ADDRESS
|
|
|
|
NTAPI
|
|
|
|
IoMapTransfer(
|
|
|
|
IN PADAPTER_OBJECT AdapterObject,
|
|
|
|
IN PMDL Mdl,
|
|
|
|
IN PVOID MapRegisterBase,
|
|
|
|
IN PVOID CurrentVa,
|
|
|
|
IN OUT PULONG Length,
|
|
|
|
IN BOOLEAN WriteToDevice);
|
|
|
|
|
|
|
|
NTKERNELAPI
|
|
|
|
VOID
|
|
|
|
NTAPI
|
|
|
|
IoAllocateController(
|
|
|
|
IN PCONTROLLER_OBJECT ControllerObject,
|
|
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
|
|
IN PDRIVER_CONTROL ExecutionRoutine,
|
|
|
|
IN PVOID Context OPTIONAL);
|
|
|
|
|
|
|
|
NTKERNELAPI
|
|
|
|
PCONTROLLER_OBJECT
|
|
|
|
NTAPI
|
|
|
|
IoCreateController(
|
|
|
|
IN ULONG Size);
|
|
|
|
|
|
|
|
NTKERNELAPI
|
|
|
|
VOID
|
|
|
|
NTAPI
|
|
|
|
IoDeleteController(
|
|
|
|
IN PCONTROLLER_OBJECT ControllerObject);
|
|
|
|
|
|
|
|
NTKERNELAPI
|
|
|
|
VOID
|
|
|
|
NTAPI
|
|
|
|
IoFreeController(
|
|
|
|
IN PCONTROLLER_OBJECT ControllerObject);
|
|
|
|
|
|
|
|
NTKERNELAPI
|
|
|
|
PCONFIGURATION_INFORMATION
|
|
|
|
NTAPI
|
|
|
|
IoGetConfigurationInformation(
|
|
|
|
VOID);
|
|
|
|
|
|
|
|
NTKERNELAPI
|
|
|
|
PDEVICE_OBJECT
|
|
|
|
NTAPI
|
|
|
|
IoGetDeviceToVerify(
|
|
|
|
IN PETHREAD Thread);
|
|
|
|
|
|
|
|
NTKERNELAPI
|
|
|
|
VOID
|
|
|
|
NTAPI
|
|
|
|
IoCancelFileOpen(
|
|
|
|
IN PDEVICE_OBJECT DeviceObject,
|
|
|
|
IN PFILE_OBJECT FileObject);
|
|
|
|
|
|
|
|
NTKERNELAPI
|
|
|
|
PGENERIC_MAPPING
|
|
|
|
NTAPI
|
|
|
|
IoGetFileObjectGenericMapping(
|
|
|
|
VOID);
|
|
|
|
|
|
|
|
NTKERNELAPI
|
|
|
|
PIRP
|
|
|
|
NTAPI
|
|
|
|
IoMakeAssociatedIrp(
|
|
|
|
IN PIRP Irp,
|
|
|
|
IN CCHAR StackSize);
|
|
|
|
|
|
|
|
NTKERNELAPI
|
|
|
|
NTSTATUS
|
|
|
|
NTAPI
|
|
|
|
IoQueryDeviceDescription(
|
|
|
|
IN PINTERFACE_TYPE BusType OPTIONAL,
|
|
|
|
IN PULONG BusNumber OPTIONAL,
|
|
|
|
IN PCONFIGURATION_TYPE ControllerType OPTIONAL,
|
|
|
|
IN PULONG ControllerNumber OPTIONAL,
|
|
|
|
IN PCONFIGURATION_TYPE PeripheralType OPTIONAL,
|
|
|
|
IN PULONG PeripheralNumber OPTIONAL,
|
|
|
|
IN PIO_QUERY_DEVICE_ROUTINE CalloutRoutine,
|
|
|
|
IN OUT PVOID Context OPTIONAL);
|
|
|
|
|
|
|
|
NTKERNELAPI
|
|
|
|
VOID
|
|
|
|
NTAPI
|
|
|
|
IoRaiseHardError(
|
|
|
|
IN PIRP Irp,
|
|
|
|
IN PVPB Vpb OPTIONAL,
|
|
|
|
IN PDEVICE_OBJECT RealDeviceObject);
|
|
|
|
|
|
|
|
NTKERNELAPI
|
|
|
|
BOOLEAN
|
|
|
|
NTAPI
|
|
|
|
IoRaiseInformationalHardError(
|
|
|
|
IN NTSTATUS ErrorStatus,
|
|
|
|
IN PUNICODE_STRING String OPTIONAL,
|
|
|
|
IN PKTHREAD Thread OPTIONAL);
|
|
|
|
|
|
|
|
NTKERNELAPI
|
|
|
|
VOID
|
|
|
|
NTAPI
|
|
|
|
IoRegisterBootDriverReinitialization(
|
|
|
|
IN PDRIVER_OBJECT DriverObject,
|
|
|
|
IN PDRIVER_REINITIALIZE DriverReinitializationRoutine,
|
|
|
|
IN PVOID Context OPTIONAL);
|
|
|
|
|
|
|
|
NTKERNELAPI
|
|
|
|
VOID
|
|
|
|
NTAPI
|
|
|
|
IoRegisterDriverReinitialization(
|
|
|
|
IN PDRIVER_OBJECT DriverObject,
|
|
|
|
IN PDRIVER_REINITIALIZE DriverReinitializationRoutine,
|
|
|
|
IN PVOID Context OPTIONAL);
|
|
|
|
|
|
|
|
NTKERNELAPI
|
|
|
|
NTSTATUS
|
|
|
|
NTAPI
|
|
|
|
IoAttachDeviceByPointer(
|
|
|
|
IN PDEVICE_OBJECT SourceDevice,
|
|
|
|
IN PDEVICE_OBJECT TargetDevice);
|
|
|
|
|
|
|
|
#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
|
|
|
|
|
2010-03-10 20:41:13 +00:00
|
|
|
|
|
|
|
/* Memory Manager Types */
|
|
|
|
|
|
|
|
typedef struct _PHYSICAL_MEMORY_RANGE {
|
|
|
|
PHYSICAL_ADDRESS BaseAddress;
|
|
|
|
LARGE_INTEGER NumberOfBytes;
|
|
|
|
} PHYSICAL_MEMORY_RANGE, *PPHYSICAL_MEMORY_RANGE;
|
|
|
|
|
2010-03-10 17:42:51 +00:00
|
|
|
/* Memory Manager Functions */
|
|
|
|
|
|
|
|
#if (NTDDI_VERSION >= NTDDI_WIN2K)
|
|
|
|
|
|
|
|
NTKERNELAPI
|
|
|
|
PPHYSICAL_MEMORY_RANGE
|
|
|
|
NTAPI
|
|
|
|
MmGetPhysicalMemoryRanges(
|
|
|
|
VOID);
|
|
|
|
|
|
|
|
NTKERNELAPI
|
|
|
|
PHYSICAL_ADDRESS
|
|
|
|
NTAPI
|
|
|
|
MmGetPhysicalAddress(
|
|
|
|
IN PVOID BaseAddress);
|
|
|
|
|
|
|
|
#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
|
2006-02-17 23:20:14 +00:00
|
|
|
|
|
|
|
/* Windows Device Driver Kit */
|
|
|
|
#include "winddk.h"
|
|
|
|
|
|
|
|
|
2009-02-09 22:50:40 +00:00
|
|
|
#endif /* _NTDDK_ */
|