mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-08-29 04:13:32 +00:00
Reverted latest changes
svn path=/trunk/; revision=3474
This commit is contained in:
@@ -0,0 +1,328 @@
|
||||
|
||||
#ifndef _NTOS_CCFUNCS_H
|
||||
#define _NTOS_CCFUNCS_H
|
||||
/* $Id: ccfuncs.h,v 1.8 2002/09/08 10:47:43 chorns Exp $ */
|
||||
|
||||
/* exported variables */
|
||||
/*
|
||||
CcFastMdlReadWait
|
||||
CcFastReadNotPossible
|
||||
CcFastReadWait
|
||||
*/
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcCanIWrite (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN ULONG BytesToWrite,
|
||||
IN BOOLEAN Wait,
|
||||
IN BOOLEAN Retrying
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcCopyRead (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length,
|
||||
IN BOOLEAN Wait,
|
||||
OUT PVOID Buffer,
|
||||
OUT PIO_STATUS_BLOCK IoStatus
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcCopyWrite (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length,
|
||||
IN BOOLEAN Wait,
|
||||
IN PVOID Buffer
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
CcDeferWrite (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PCC_POST_DEFERRED_WRITE PostRoutine,
|
||||
IN PVOID Context1,
|
||||
IN PVOID Context2,
|
||||
IN ULONG BytesToWrite,
|
||||
IN BOOLEAN Retrying
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcFastCopyRead (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN ULONG FileOffset,
|
||||
IN ULONG Length,
|
||||
IN ULONG PageCount,
|
||||
OUT PVOID Buffer,
|
||||
OUT PIO_STATUS_BLOCK IoStatus
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcFastCopyWrite (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length,
|
||||
IN PVOID Buffer
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
CcFlushCache (
|
||||
IN PSECTION_OBJECT_POINTERS SectionObjectPointer,
|
||||
IN PLARGE_INTEGER FileOffset OPTIONAL,
|
||||
IN ULONG Length,
|
||||
OUT PIO_STATUS_BLOCK IoStatus OPTIONAL
|
||||
);
|
||||
|
||||
LARGE_INTEGER
|
||||
STDCALL
|
||||
CcGetDirtyPages (
|
||||
IN PVOID LogHandle,
|
||||
IN PDIRTY_PAGE_ROUTINE DirtyPageRoutine,
|
||||
IN PVOID Context1,
|
||||
IN PVOID Context2
|
||||
);
|
||||
|
||||
PFILE_OBJECT
|
||||
STDCALL
|
||||
CcGetFileObjectFromBcb (
|
||||
IN PVOID Bcb
|
||||
);
|
||||
|
||||
PFILE_OBJECT
|
||||
STDCALL
|
||||
CcGetFileObjectFromSectionPtrs (
|
||||
IN PSECTION_OBJECT_POINTERS SectionObjectPointer
|
||||
);
|
||||
|
||||
LARGE_INTEGER
|
||||
STDCALL
|
||||
CcGetLsnForFileObject (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
OUT PLARGE_INTEGER OldestLsn OPTIONAL
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
CcInitializeCacheMap (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PCC_FILE_SIZES FileSizes,
|
||||
IN BOOLEAN PinAccess,
|
||||
IN PCACHE_MANAGER_CALLBACKS CallBacks,
|
||||
IN PVOID LazyWriterContext
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcIsThereDirtyData (
|
||||
IN PVPB Vpb
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcMapData (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length,
|
||||
IN BOOLEAN Wait,
|
||||
OUT PVOID * Bcb,
|
||||
OUT PVOID * Buffer
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
CcMdlRead (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length,
|
||||
OUT PMDL * MdlChain,
|
||||
OUT PIO_STATUS_BLOCK IoStatus
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
CcMdlReadComplete (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PMDL MdlChain
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
CcMdlWriteComplete (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN PMDL MdlChain
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcPinMappedData (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length,
|
||||
IN BOOLEAN Wait,
|
||||
OUT PVOID * Bcb
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcPinRead (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length,
|
||||
IN BOOLEAN Wait,
|
||||
OUT PVOID * Bcb,
|
||||
OUT PVOID * Buffer
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
CcPrepareMdlWrite (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length,
|
||||
OUT PMDL * MdlChain,
|
||||
OUT PIO_STATUS_BLOCK IoStatus
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcPreparePinWrite (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length,
|
||||
IN BOOLEAN Zero,
|
||||
IN BOOLEAN Wait,
|
||||
OUT PVOID * Bcb,
|
||||
OUT PVOID * Buffer
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcPurgeCacheSection (
|
||||
IN PSECTION_OBJECT_POINTERS SectionObjectPointer,
|
||||
IN PLARGE_INTEGER FileOffset OPTIONAL,
|
||||
IN ULONG Length,
|
||||
IN BOOLEAN UninitializeCacheMaps
|
||||
);
|
||||
|
||||
#define CcReadAhead(FO,FOFF,LEN) \
|
||||
{ \
|
||||
if ((LEN) >= 256) \
|
||||
{ \
|
||||
CcScheduleReadAhead((FO),(FOFF),(LEN)); \
|
||||
} \
|
||||
}
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
CcRepinBcb (
|
||||
IN PVOID Bcb
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
CcScheduleReadAhead (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
CcSetAdditionalCacheAttributes (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN BOOLEAN DisableReadAhead,
|
||||
IN BOOLEAN DisableWriteBehind
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
CcSetBcbOwnerPointer (
|
||||
IN PVOID Bcb,
|
||||
IN PVOID Owner
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
CcSetDirtyPageThreshold (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN ULONG DirtyPageThreshold
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
CcSetDirtyPinnedData (
|
||||
IN PVOID Bcb,
|
||||
IN PLARGE_INTEGER Lsn OPTIONAL
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
CcSetFileSizes (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PCC_FILE_SIZES FileSizes
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
CcSetLogHandleForFile (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PVOID LogHandle,
|
||||
IN PFLUSH_TO_LSN FlushToLsnRoutine
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
CcSetReadAheadGranularity (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN ULONG Granularity
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcUninitializeCacheMap (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER TruncateSize OPTIONAL,
|
||||
IN PCACHE_UNINITIALIZE_EVENT UninitializeCompleteEvent OPTIONAL
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
CcUnpinData (
|
||||
IN PVOID Bcb
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
CcUnpinDataForThread (
|
||||
IN PVOID Bcb,
|
||||
IN ERESOURCE_THREAD ResourceThreadId
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
CcUnpinRepinnedBcb (
|
||||
IN PVOID Bcb,
|
||||
IN BOOLEAN WriteThrough,
|
||||
IN PIO_STATUS_BLOCK IoStatus
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcZeroData (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER StartOffset,
|
||||
IN PLARGE_INTEGER EndOffset,
|
||||
IN BOOLEAN Wait
|
||||
);
|
||||
|
||||
#endif
|
||||
|
||||
/* EOF */
|
||||
@@ -0,0 +1,86 @@
|
||||
#ifndef __INCLUDE_DDK_CCTYPES_H
|
||||
#define __INCLUDE_DDK_CCTYPES_H
|
||||
|
||||
typedef struct _CACHE_UNINITIALIZE_EVENT
|
||||
{
|
||||
struct _CACHE_UNINITIALIZE_EVENT * Next;
|
||||
KEVENT Event;
|
||||
} CACHE_UNINITIALIZE_EVENT, *PCACHE_UNINITIALIZE_EVENT;
|
||||
|
||||
typedef struct _CC_FILE_SIZES
|
||||
{
|
||||
LARGE_INTEGER AllocationSize;
|
||||
LARGE_INTEGER FileSize;
|
||||
LARGE_INTEGER ValidDataLength;
|
||||
} CC_FILE_SIZES, *PCC_FILE_SIZES;
|
||||
|
||||
|
||||
typedef VOID STDCALL
|
||||
(*PCC_POST_DEFERRED_WRITE)(IN PVOID Context1,
|
||||
IN PVOID Context2);
|
||||
|
||||
typedef struct _PUBLIC_BCB
|
||||
{
|
||||
CSHORT NodeTypeCode;
|
||||
CSHORT NodeByteSize;
|
||||
ULONG MappedLength;
|
||||
LARGE_INTEGER MappedFileOffset;
|
||||
} PUBLIC_BCB, *PPUBLIC_BCB;
|
||||
|
||||
typedef VOID (*PDIRTY_PAGE_ROUTINE) (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length,
|
||||
IN PLARGE_INTEGER OldestLsn,
|
||||
IN PLARGE_INTEGER NewestLsn,
|
||||
IN PVOID Context1,
|
||||
IN PVOID Context2
|
||||
);
|
||||
|
||||
typedef BOOLEAN STDCALL
|
||||
(*PACQUIRE_FOR_LAZY_WRITE)(IN PVOID Context,
|
||||
IN BOOLEAN Wait);
|
||||
|
||||
typedef VOID STDCALL
|
||||
(*PRELEASE_FROM_LAZY_WRITE)(IN PVOID Context);
|
||||
|
||||
typedef BOOLEAN STDCALL
|
||||
(*PACQUIRE_FOR_READ_AHEAD)(IN PVOID Context,
|
||||
IN BOOLEAN Wait);
|
||||
|
||||
typedef VOID STDCALL
|
||||
(*PRELEASE_FROM_READ_AHEAD)(IN PVOID Context);
|
||||
|
||||
typedef struct _CACHE_MANAGER_CALLBACKS
|
||||
{
|
||||
PACQUIRE_FOR_LAZY_WRITE AcquireForLazyWrite;
|
||||
PRELEASE_FROM_LAZY_WRITE ReleaseFromLazyWrite;
|
||||
PACQUIRE_FOR_READ_AHEAD AcquireForReadAhead;
|
||||
PRELEASE_FROM_READ_AHEAD ReleaseFromReadAhead;
|
||||
} CACHE_MANAGER_CALLBACKS, *PCACHE_MANAGER_CALLBACKS;
|
||||
|
||||
/* this is already defined in iotypes.h */
|
||||
/*
|
||||
typedef struct _SECTION_OBJECT_POINTERS
|
||||
{
|
||||
PVOID DataSectionObject;
|
||||
PVOID SharedCacheMap;
|
||||
PVOID ImageSectionObject;
|
||||
} SECTION_OBJECT_POINTERS, *PSECTION_OBJECT_POINTERS;
|
||||
*/
|
||||
|
||||
typedef VOID STDCALL
|
||||
(*PFLUSH_TO_LSN)(IN PVOID LogHandle,
|
||||
IN LARGE_INTEGER Lsn);
|
||||
|
||||
typedef struct _REACTOS_COMMON_FCB_HEADER
|
||||
{
|
||||
CSHORT NodeTypeCode;
|
||||
CSHORT NodeByteSize;
|
||||
struct _BCB* Bcb;
|
||||
LARGE_INTEGER AllocationSize;
|
||||
LARGE_INTEGER FileSize;
|
||||
LARGE_INTEGER ValidDataLength;
|
||||
} REACTOS_COMMON_FCB_HEADER, *PREACTOS_COMMON_FCB_HEADER;
|
||||
|
||||
#endif /* __INCLUDE_DDK_CCTYPES_H */
|
||||
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* FUNCTION: Creates a registry key
|
||||
* ARGUMENTS:
|
||||
* KeyHandle (OUT) = Caller supplied storage for the resulting handle
|
||||
* DesiredAccess = Specifies the allowed or desired access to the key
|
||||
* It can have a combination of the following values:
|
||||
* KEY_READ | KEY_WRITE | KEY_EXECUTE | KEY_ALL_ACCESS
|
||||
* or
|
||||
* KEY_QUERY_VALUE The values of the key can be queried.
|
||||
* KEY_SET_VALUE The values of the key can be modified.
|
||||
* KEY_CREATE_SUB_KEYS The key may contain subkeys.
|
||||
* KEY_ENUMERATE_SUB_KEYS Subkeys can be queried.
|
||||
* KEY_NOTIFY
|
||||
* KEY_CREATE_LINK A symbolic link to the key can be created.
|
||||
* ObjectAttributes = The name of the key may be specified directly in the name field
|
||||
* of object attributes or relative to a key in rootdirectory.
|
||||
* TitleIndex = Might specify the position in the sequential order of subkeys.
|
||||
* Class = Specifies the kind of data, for example REG_SZ for string data. [ ??? ]
|
||||
* CreateOptions = Specifies additional options with which the key is created
|
||||
* REG_OPTION_VOLATILE The key is not preserved across boots.
|
||||
* REG_OPTION_NON_VOLATILE The key is preserved accross boots.
|
||||
* REG_OPTION_CREATE_LINK The key is a symbolic link to another key.
|
||||
* REG_OPTION_BACKUP_RESTORE Key is being opened or created for backup/restore operations.
|
||||
* Disposition = Indicates if the call to NtCreateKey resulted in the creation of a key it
|
||||
* can have the following values: REG_CREATED_NEW_KEY | REG_OPENED_EXISTING_KEY
|
||||
* RETURNS:
|
||||
* Status
|
||||
*/
|
||||
|
||||
NTSTATUS STDCALL
|
||||
NtCreateKey(OUT PHANDLE KeyHandle,
|
||||
IN ACCESS_MASK DesiredAccess,
|
||||
IN POBJECT_ATTRIBUTES ObjectAttributes,
|
||||
IN ULONG TitleIndex,
|
||||
IN PUNICODE_STRING Class OPTIONAL,
|
||||
IN ULONG CreateOptions,
|
||||
IN PULONG Disposition OPTIONAL);
|
||||
|
||||
NTSTATUS STDCALL
|
||||
ZwCreateKey(OUT PHANDLE KeyHandle,
|
||||
IN ACCESS_MASK DesiredAccess,
|
||||
IN POBJECT_ATTRIBUTES ObjectAttributes,
|
||||
IN ULONG TitleIndex,
|
||||
IN PUNICODE_STRING Class OPTIONAL,
|
||||
IN ULONG CreateOptions,
|
||||
IN PULONG Disposition OPTIONAL);
|
||||
|
||||
@@ -0,0 +1,100 @@
|
||||
|
||||
/*
|
||||
* Object Manager structures and typedefs
|
||||
*/
|
||||
|
||||
/*
|
||||
* key query information class
|
||||
*/
|
||||
|
||||
typedef enum _KEY_INFORMATION_CLASS
|
||||
{
|
||||
KeyBasicInformation,
|
||||
KeyNodeInformation,
|
||||
KeyFullInformation
|
||||
} KEY_INFORMATION_CLASS;
|
||||
|
||||
typedef struct _KEY_BASIC_INFORMATION
|
||||
{
|
||||
LARGE_INTEGER LastWriteTime;
|
||||
ULONG TitleIndex;
|
||||
ULONG NameLength;
|
||||
WCHAR Name[1];
|
||||
} KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION;
|
||||
|
||||
typedef struct _KEY_FULL_INFORMATION
|
||||
{
|
||||
LARGE_INTEGER LastWriteTime;
|
||||
ULONG TitleIndex;
|
||||
ULONG ClassOffset;
|
||||
ULONG ClassLength;
|
||||
ULONG SubKeys;
|
||||
ULONG MaxNameLen;
|
||||
ULONG MaxClassLen;
|
||||
ULONG Values;
|
||||
ULONG MaxValueNameLen;
|
||||
ULONG MaxValueDataLen;
|
||||
WCHAR Class[1];
|
||||
} KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION;
|
||||
|
||||
typedef struct _KEY_NODE_INFORMATION
|
||||
{
|
||||
LARGE_INTEGER LastWriteTime;
|
||||
ULONG TitleIndex;
|
||||
ULONG ClassOffset;
|
||||
ULONG ClassLength;
|
||||
ULONG NameLength;
|
||||
WCHAR Name[1];
|
||||
} KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION;
|
||||
|
||||
/* key set information class */
|
||||
/*
|
||||
* KeyWriteTimeInformation
|
||||
*/
|
||||
|
||||
/* key value information class */
|
||||
|
||||
typedef enum _KEY_VALUE_INFORMATION_CLASS
|
||||
{
|
||||
KeyValueBasicInformation,
|
||||
KeyValueFullInformation,
|
||||
KeyValuePartialInformation
|
||||
} KEY_VALUE_INFORMATION_CLASS;
|
||||
|
||||
typedef struct _KEY_VALUE_BASIC_INFORMATION
|
||||
{
|
||||
ULONG TitleIndex;
|
||||
ULONG Type;
|
||||
ULONG NameLength;
|
||||
WCHAR Name[1];
|
||||
} KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION;
|
||||
|
||||
typedef struct _KEY_VALUE_FULL_INFORMATION
|
||||
{
|
||||
ULONG TitleIndex;
|
||||
ULONG Type;
|
||||
ULONG DataOffset;
|
||||
ULONG DataLength;
|
||||
ULONG NameLength;
|
||||
WCHAR Name[1];
|
||||
} KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION;
|
||||
|
||||
typedef struct _KEY_VALUE_PARTIAL_INFORMATION
|
||||
{
|
||||
ULONG TitleIndex;
|
||||
ULONG Type;
|
||||
ULONG DataLength;
|
||||
UCHAR Data[1];
|
||||
} KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION;
|
||||
|
||||
|
||||
/* used by [Nt/Zw]QueryMultipleValueKey */
|
||||
|
||||
typedef struct _KEY_VALUE_ENTRY
|
||||
{
|
||||
PUNICODE_STRING ValueName;
|
||||
ULONG DataLength;
|
||||
ULONG DataOffset;
|
||||
ULONG Type;
|
||||
} KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY;
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
#ifndef __INCLUDE_DDK_DBGFUNCS_H
|
||||
#define __INCLUDE_DDK_DBGFUNCS_H
|
||||
/* $Id: dbgfuncs.h,v 1.7 2002/09/08 10:47:43 chorns Exp $ */
|
||||
|
||||
#define DBG_STATUS_CONTROL_C 1
|
||||
#define DBG_STATUS_SYSRQ 2
|
||||
#define DBG_STATUS_BUGCHECK_FIRST 3
|
||||
#define DBG_STATUS_BUGCHECK_SECOND 4
|
||||
#define DBG_STATUS_FATAL 5
|
||||
VOID STDCALL DbgBreakPointWithStatus (ULONG Status);
|
||||
VOID STDCALL DbgBreakPoint(VOID);
|
||||
ULONG DbgPrint(PCH Format,...);
|
||||
VOID STDCALL DbgPrompt (PCH OutputString, PCH InputString, USHORT InputSize);
|
||||
|
||||
|
||||
#define DBG_GET_SHOW_FACILITY 0x0001
|
||||
#define DBG_GET_SHOW_SEVERITY 0x0002
|
||||
#define DBG_GET_SHOW_ERRCODE 0x0004
|
||||
#define DBG_GET_SHOW_ERRTEXT 0x0008
|
||||
VOID DbgGetErrorText(NTSTATUS ErrorCode, PUNICODE_STRING ErrorText, ULONG Flags);
|
||||
VOID DbgPrintErrorMessage(NTSTATUS ErrorCode);
|
||||
|
||||
#endif /* __INCLUDE_DDK_DBGFUNCS_H */
|
||||
@@ -0,0 +1,234 @@
|
||||
#ifndef _DDK_DEFINES_H
|
||||
#define _DDK_DEFINES_H
|
||||
|
||||
/* GENERAL DEFINITIONS ****************************************************/
|
||||
|
||||
#ifndef __ASM__
|
||||
|
||||
#define _WIN32_WINNT 0x0400
|
||||
|
||||
#include <ddk/kedef.h>
|
||||
#include <ddk/iodef.h>
|
||||
|
||||
#define EXPORTED __declspec(dllexport)
|
||||
#define IMPORTED __declspec(dllimport)
|
||||
|
||||
/*
|
||||
* PURPOSE: Number of a thread priority levels
|
||||
*/
|
||||
#define NR_PRIORITY_LEVELS (32)
|
||||
|
||||
/*
|
||||
* PURPOSE: Type of queue to insert a work item in
|
||||
*/
|
||||
enum
|
||||
{
|
||||
CriticalWorkQueue,
|
||||
DelayedWorkQueue,
|
||||
HyperCriticalWorkQueue,
|
||||
};
|
||||
|
||||
/*
|
||||
* Types of memory to allocate
|
||||
*/
|
||||
enum
|
||||
{
|
||||
NonPagedPool,
|
||||
NonPagedPoolMustSucceed,
|
||||
NonPagedPoolCacheAligned,
|
||||
NonPagedPoolCacheAlignedMustS,
|
||||
PagedPool,
|
||||
PagedPoolCacheAligned,
|
||||
};
|
||||
|
||||
/*
|
||||
* This is a list of bug check types (not MS's)
|
||||
*/
|
||||
enum
|
||||
{
|
||||
APC_INDEX_MISMATCH = 1,
|
||||
DEVICE_QUEUE_NOT_BUSY,
|
||||
INVALID_AFFINITY_SET,
|
||||
INVALID_DATA_ACCESS_TRAP,
|
||||
INVALID_PROCESS_ATTACH_ATTEMPT,
|
||||
INVALID_PROCESS_DEATTACH_ATTEMPT,
|
||||
INVALID_SOFTWARE_INTERRUPT,
|
||||
IRQL_NOT_DISPATCH_LEVEL,
|
||||
IRQL_NOT_GREATER_OR_EQUAL,
|
||||
NO_EXCEPTION_HANDLING_SUPPORT,
|
||||
MAXIMUM_WAIT_OBJECTS_EXCEEDED,
|
||||
MUTEX_LEVEL_NUMBER_VIOLATION,
|
||||
NO_USER_MODE_CONTEXT,
|
||||
SPIN_LOCK_ALREADY_OWNED,
|
||||
SPIN_LOCK_NOT_OWNED,
|
||||
THREAD_NOT_MUTEX_OWNER,
|
||||
TRAP_CAUSE_UNKNOWN,
|
||||
EMPTY_THREAD_REAPER_LIST,
|
||||
CREATE_DELETE_LOCK_NOT_LOCKED,
|
||||
LAST_CHANCE_CALLED_FROM_KMODE,
|
||||
CID_HANDLE_CREATION,
|
||||
CID_HANDLE_DELETION,
|
||||
REFERENCE_BY_POINTER,
|
||||
BAD_POOL_HEADER,
|
||||
MEMORY_MANAGMENT,
|
||||
PFN_SHARE_COUNT,
|
||||
PFN_REFERENCE_COUNT,
|
||||
NO_SPIN_LOCK_AVAILABLE,
|
||||
KMODE_EXCEPTION_NOT_HANDLED,
|
||||
SHARED_RESOURCE_CONV_ERROR,
|
||||
KERNEL_APC_PENDING_DURING_EXIT,
|
||||
QUOTA_UNDERFLOW,
|
||||
FILE_SYSTEM,
|
||||
FAT_FILE_SYSTEM,
|
||||
NTFS_FILE_SYSTEM,
|
||||
NPFS_FILE_SYSTEM,
|
||||
CDFS_FILE_SYSTEM,
|
||||
RDR_FILE_SYSTEM,
|
||||
CORRUPT_ACCESS_TOKEN,
|
||||
SECURITY_SYSTEM,
|
||||
INCONSISTENT_IRP,
|
||||
PANIC_STACK_SWITCH,
|
||||
PORT_DRIVER_INTERNAL,
|
||||
SCSI_DISK_DRIVER_INTERNAL,
|
||||
INSTRUCTION_BUS_ERROR,
|
||||
SET_OF_INVALID_CONTEXT,
|
||||
PHASE0_INITIALIZATION_FAILED,
|
||||
PHASE1_INITIALIZATION_FAILED,
|
||||
UNEXPECTED_INITIALIZATION_CALL,
|
||||
CACHE_MANAGER,
|
||||
NO_MORE_IRP_STACK_LOCATIONS,
|
||||
DEVICE_REFERENCE_COUNT_NOT_ZERO,
|
||||
FLOPPY_INTERNAL_ERROR,
|
||||
SERIAL_DRIVER_INTERNAL,
|
||||
SYSTEM_EXIT_OWNED_MUTEX,
|
||||
SYSTEM_UNWIND_PREVIOUS_USER,
|
||||
SYSTEN_SERVICE_EXCEPTION,
|
||||
INTERRUPT_UNWIND_ATTEMPTED,
|
||||
INTERRUPT_EXCEPTION_NOT_HANDLED,
|
||||
MULTIPROCESSOR_CONFIGURATION_NOT_SUPPORTED,
|
||||
NO_MORE_SYSTEM_PTES,
|
||||
TARGET_MDL_TOO_SMALL,
|
||||
MUST_SUCCEED_POOL_EMPTY,
|
||||
ATDISK_DRIVER_INTERNAL,
|
||||
NO_SUCH_PARTITION,
|
||||
MULTIPLE_IRP_COMPLETE_REQUESTS,
|
||||
INSUFFICENT_SYSTEM_MAP_PAGES,
|
||||
DEREF_UNKNOWN_LOGON_SERVICE,
|
||||
REF_UNKNOWN_LOGON_SERVICE,
|
||||
CANCEL_STATE_IN_COMPLETED_IRP,
|
||||
PAGE_FAULT_WITH_INTERRUPTS_OFF,
|
||||
IRQL_GT_ZERO_AT_SYSTEM_SERVICE,
|
||||
STREAMS_INTERNAL_ERROR,
|
||||
FATAL_UNHANDLED_HARD_ERROR,
|
||||
NO_PAGES_AVAILABLE,
|
||||
PFN_LIST_CORRUPT,
|
||||
NDIS_INTERNAL_ERROR,
|
||||
PAGE_FAULT_IN_NONPAGED_AREA,
|
||||
REGISTRY_ERROR,
|
||||
MAILSLOT_FILE_SYSTEM,
|
||||
NO_BOOT_DEVICE,
|
||||
LM_SERVER_INTERNAL_ERROR,
|
||||
DATA_COHERENCY_EXCEPTION,
|
||||
INSTRUCTION_COHERENCY_EXCEPTION,
|
||||
XNS_INTERNAL_ERROR,
|
||||
FTDISK_INTERNAL_ERROR,
|
||||
PINBALL_FILE_SYSTEM,
|
||||
CRITICAL_SERVICE_FAILED,
|
||||
SET_ENV_VAR_FAILED,
|
||||
HAL_INITIALIZED_FAILED,
|
||||
UNSUPPORTED_PROCESSOR,
|
||||
OBJECT_INITIALIZATION_FAILED,
|
||||
SECURITY_INITIALIZATION_FAILED,
|
||||
PROCESS_INITIALIZATION_FAILED,
|
||||
HAL1_INITIALIZATION_FAILED,
|
||||
};
|
||||
enum
|
||||
{
|
||||
KBUG_NONE,
|
||||
KBUG_ORPHANED_IRP,
|
||||
KBUG_IO_STACK_OVERFLOW,
|
||||
KBUG_OUT_OF_MEMORY,
|
||||
KBUG_POOL_FREE_LIST_CORRUPT,
|
||||
|
||||
/*
|
||||
* These are well known but the actual value is unknown
|
||||
*/
|
||||
// NO_PAGES_AVAILABLE,
|
||||
|
||||
/*
|
||||
* These are well known (MS) bug types
|
||||
* (Reference: NT Insider 1997 - http://www.osr.com)
|
||||
*/
|
||||
IRQL_NOT_LESS_OR_EQUAL = 0xa,
|
||||
// KMODE_EXCEPTION_NOT_HANDLED = 0x1e,
|
||||
UNEXPECTED_KERNEL_MODE_TRAP = 0x7f,
|
||||
PAGE_FAULT_IN_NON_PAGED_AREA = 0x50,
|
||||
};
|
||||
|
||||
/*
|
||||
* PURPOSE: Object attributes
|
||||
*/
|
||||
enum
|
||||
{
|
||||
OBJ_INHERIT = 0x2,
|
||||
OBJ_PERMANENT = 0x10,
|
||||
OBJ_EXCLUSIVE = 0x20,
|
||||
OBJ_CASE_INSENSITIVE = 0x40,
|
||||
OBJ_OPENIF = 0x80,
|
||||
OBJ_OPENLINK = 0x100,
|
||||
OBJ_VALID_ATTRIBUTES = 0x1F2,
|
||||
};
|
||||
|
||||
/*
|
||||
* PURPOSE: Timer types
|
||||
*/
|
||||
enum
|
||||
{
|
||||
NotificationTimer,
|
||||
SynchronizationTimer,
|
||||
};
|
||||
|
||||
/*
|
||||
* PURPOSE: Some drivers use these
|
||||
*/
|
||||
#ifndef IN
|
||||
#define IN
|
||||
#define OUT
|
||||
#define OPTIONAL
|
||||
#endif
|
||||
|
||||
/*
|
||||
* PURPOSE: Arguments to MmProbeAndLockPages
|
||||
*/
|
||||
enum
|
||||
{
|
||||
IoReadAccess,
|
||||
IoWriteAccess,
|
||||
IoModifyAccess,
|
||||
};
|
||||
|
||||
#define MAXIMUM_VOLUME_LABEL_LENGTH (32)
|
||||
|
||||
#include <ddk/i386/irql.h>
|
||||
|
||||
#define PASSIVE_LEVEL 0 // Passive release level
|
||||
#define LOW_LEVEL 0 // Lowest interrupt level
|
||||
#define APC_LEVEL 1 // APC interrupt level
|
||||
#define DISPATCH_LEVEL 2 // Dispatcher level
|
||||
/* timer used for profiling */
|
||||
#define PROFILE_LEVEL 27
|
||||
/* Interval clock 1 level - Not used on x86 */
|
||||
#define CLOCK1_LEVEL 28
|
||||
#define CLOCK2_LEVEL 28 // Interval clock 2 level
|
||||
#define IPI_LEVEL 29 // Interprocessor interrupt level
|
||||
#define POWER_LEVEL 30 // Power failure level
|
||||
#define HIGH_LEVEL 31 // Highest interrupt level
|
||||
#define SYNCH_LEVEL (IPI_LEVEL-1) // synchronization level
|
||||
|
||||
#endif /* __ASM__ */
|
||||
|
||||
/* Values returned by KeGetPreviousMode() */
|
||||
#define KernelMode (0)
|
||||
#define UserMode (1)
|
||||
|
||||
#endif /* ndef _DDK_DEFINES_H */
|
||||
@@ -0,0 +1,912 @@
|
||||
#ifndef _NTOS_EXFUNCS_H
|
||||
#define _NTOS_EXFUNCS_H
|
||||
|
||||
/* EXECUTIVE ROUTINES ******************************************************/
|
||||
|
||||
#define TAG(A, B, C, D) (ULONG)(((A)<<0) + ((B)<<8) + ((C)<<16) + ((D)<<24))
|
||||
|
||||
VOID
|
||||
FASTCALL
|
||||
ExAcquireFastMutex (
|
||||
PFAST_MUTEX FastMutex
|
||||
);
|
||||
VOID
|
||||
FASTCALL
|
||||
ExAcquireFastMutexUnsafe (
|
||||
PFAST_MUTEX FastMutex
|
||||
);
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
ExAcquireResourceExclusive (
|
||||
PERESOURCE Resource,
|
||||
BOOLEAN Wait
|
||||
);
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
ExAcquireResourceExclusiveLite (
|
||||
PERESOURCE Resource,
|
||||
BOOLEAN Wait
|
||||
);
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
ExAcquireResourceSharedLite (
|
||||
PERESOURCE Resource,
|
||||
BOOLEAN Wait
|
||||
);
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
ExAcquireSharedStarveExclusive (
|
||||
PERESOURCE Resource,
|
||||
BOOLEAN Wait
|
||||
);
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
ExAcquireSharedWaitForExclusive (
|
||||
PERESOURCE Resource,
|
||||
BOOLEAN Wait
|
||||
);
|
||||
|
||||
PVOID
|
||||
STDCALL
|
||||
ExAllocateFromZone (
|
||||
PZONE_HEADER Zone
|
||||
);
|
||||
|
||||
/*
|
||||
* PVOID
|
||||
* ExAllocateFromZone (
|
||||
* PZONE_HEADER Zone
|
||||
* );
|
||||
*
|
||||
* FUNCTION:
|
||||
* Allocate a block from a zone
|
||||
*
|
||||
* ARGUMENTS:
|
||||
* Zone = Zone to allocate from
|
||||
*
|
||||
* RETURNS:
|
||||
* The base address of the block allocated
|
||||
*/
|
||||
#define ExAllocateFromZone(Zone) \
|
||||
(PVOID)((Zone)->FreeList.Next); \
|
||||
if ((Zone)->FreeList.Next) \
|
||||
(Zone)->FreeList.Next = (Zone)->FreeList.Next->Next
|
||||
|
||||
/*
|
||||
* FUNCTION: Allocates memory from the nonpaged pool
|
||||
* ARGUMENTS:
|
||||
* NumberOfBytes = minimum size of the block to be allocated
|
||||
* PoolType = the type of memory to use for the block (ignored)
|
||||
* RETURNS:
|
||||
* the address of the block if it succeeds
|
||||
*/
|
||||
PVOID
|
||||
STDCALL
|
||||
ExAllocatePool (
|
||||
IN POOL_TYPE PoolType,
|
||||
IN ULONG NumberOfBytes
|
||||
);
|
||||
|
||||
PVOID
|
||||
STDCALL
|
||||
ExAllocatePoolWithQuota (
|
||||
IN POOL_TYPE PoolType,
|
||||
IN ULONG NumberOfBytes
|
||||
);
|
||||
PVOID
|
||||
STDCALL
|
||||
ExAllocatePoolWithQuotaTag (
|
||||
IN POOL_TYPE PoolType,
|
||||
IN ULONG NumberOfBytes,
|
||||
IN ULONG Tag
|
||||
);
|
||||
PVOID
|
||||
STDCALL
|
||||
ExAllocatePoolWithTag (
|
||||
IN POOL_TYPE PoolType,
|
||||
IN ULONG NumberOfBytes,
|
||||
IN ULONG Tag
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
ExConvertExclusiveToSharedLite (
|
||||
PERESOURCE Resource
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
ExCreateCallback (
|
||||
OUT PCALLBACK_OBJECT * CallbackObject,
|
||||
IN POBJECT_ATTRIBUTES ObjectAttributes,
|
||||
IN BOOLEAN Create,
|
||||
IN BOOLEAN AllowMultipleCallbacks
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
ExDeleteResource (
|
||||
PERESOURCE Resource
|
||||
);
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
ExDeleteResourceLite (
|
||||
PERESOURCE Resource
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
ExDisableResourceBoostLite (
|
||||
PERESOURCE Resource
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
ExExtendZone (
|
||||
PZONE_HEADER Zone,
|
||||
PVOID Segment,
|
||||
ULONG SegmentSize
|
||||
);
|
||||
|
||||
/*
|
||||
* FUNCTION: Releases previously allocated memory
|
||||
* ARGUMENTS:
|
||||
* block = block to free
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
ExFreePool (
|
||||
PVOID block
|
||||
);
|
||||
|
||||
/*
|
||||
* PVOID
|
||||
* ExFreeToZone (
|
||||
* PZONE_HEADER Zone,
|
||||
* PVOID Block
|
||||
* );
|
||||
*
|
||||
* FUNCTION:
|
||||
* Frees a block from a zone
|
||||
*
|
||||
* ARGUMENTS:
|
||||
* Zone = Zone the block was allocated from
|
||||
* Block = Block to free
|
||||
*/
|
||||
#define ExFreeToZone(Zone,Block) \
|
||||
(((PSINGLE_LIST_ENTRY)(Block))->Next = (Zone)->FreeList.Next, \
|
||||
(Zone)->FreeList.Next = ((PSINGLE_LIST_ENTRY)(Block)), \
|
||||
((PSINGLE_LIST_ENTRY)(Block))->Next)
|
||||
|
||||
/*
|
||||
* ERESOURCE_THREAD
|
||||
* ExGetCurrentResourceThread (
|
||||
* VOID
|
||||
* );
|
||||
*/
|
||||
#define ExGetCurrentResourceThread() \
|
||||
((ERESOURCE_THREAD)PsGetCurrentThread())
|
||||
|
||||
ULONG
|
||||
STDCALL
|
||||
ExGetExclusiveWaiterCount (
|
||||
PERESOURCE Resource
|
||||
);
|
||||
|
||||
ULONG
|
||||
STDCALL
|
||||
ExGetPreviousMode (
|
||||
VOID
|
||||
);
|
||||
|
||||
ULONG
|
||||
STDCALL
|
||||
ExGetSharedWaiterCount (
|
||||
PERESOURCE Resource
|
||||
);
|
||||
|
||||
/*
|
||||
* VOID
|
||||
* ExInitializeFastMutex (
|
||||
* PFAST_MUTEX FastMutex
|
||||
* );
|
||||
*/
|
||||
#define ExInitializeFastMutex(_FastMutex) \
|
||||
((PFAST_MUTEX)_FastMutex)->Count = 1; \
|
||||
((PFAST_MUTEX)_FastMutex)->Owner = NULL; \
|
||||
((PFAST_MUTEX)_FastMutex)->Contention = 0; \
|
||||
KeInitializeEvent(&((PFAST_MUTEX)_FastMutex)->Event, \
|
||||
SynchronizationEvent, \
|
||||
FALSE);
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
ExInitializeResource (
|
||||
PERESOURCE Resource
|
||||
);
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
ExInitializeResourceLite (
|
||||
PERESOURCE Resource
|
||||
);
|
||||
|
||||
/*
|
||||
* VOID
|
||||
* ExInitializeSListHead (
|
||||
* PSLIST_HEADER SListHead
|
||||
* );
|
||||
*/
|
||||
#define ExInitializeSListHead(ListHead) \
|
||||
(ListHead)->Alignment = 0
|
||||
|
||||
/*
|
||||
* VOID
|
||||
* ExInitializeWorkItem (
|
||||
* PWORK_QUEUE_ITEM Item,
|
||||
* PWORKER_THREAD_ROUTINE Routine,
|
||||
* PVOID Context
|
||||
* );
|
||||
*
|
||||
* FUNCTION:
|
||||
* Initializes a work item to be processed by one of the system
|
||||
* worker threads
|
||||
*
|
||||
* ARGUMENTS:
|
||||
* Item = Pointer to the item to be initialized
|
||||
* Routine = Routine to be called by the worker thread
|
||||
* Context = Parameter to be passed to the callback
|
||||
*/
|
||||
#define ExInitializeWorkItem(Item, WorkerRoutine, RoutineContext) \
|
||||
ASSERT_IRQL(DISPATCH_LEVEL); \
|
||||
(Item)->Routine = (WorkerRoutine); \
|
||||
(Item)->Context = (RoutineContext); \
|
||||
(Item)->Entry.Flink = NULL; \
|
||||
(Item)->Entry.Blink = NULL;
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
ExInitializeZone (
|
||||
PZONE_HEADER Zone,
|
||||
ULONG BlockSize,
|
||||
PVOID InitialSegment,
|
||||
ULONG InitialSegmentSize
|
||||
);
|
||||
|
||||
LARGE_INTEGER
|
||||
STDCALL
|
||||
ExInterlockedAddLargeInteger (
|
||||
PLARGE_INTEGER Addend,
|
||||
LARGE_INTEGER Increment,
|
||||
PKSPIN_LOCK Lock
|
||||
);
|
||||
|
||||
VOID
|
||||
FASTCALL
|
||||
ExInterlockedAddLargeStatistic (
|
||||
IN PLARGE_INTEGER Addend,
|
||||
IN ULONG Increment
|
||||
);
|
||||
|
||||
ULONG
|
||||
STDCALL
|
||||
ExInterlockedAddUlong (
|
||||
PULONG Addend,
|
||||
ULONG Increment,
|
||||
PKSPIN_LOCK Lock
|
||||
);
|
||||
|
||||
/*
|
||||
* PVOID
|
||||
* STDCALL
|
||||
* ExInterlockedAllocateFromZone (
|
||||
* PZONE_HEADER Zone,
|
||||
* PKSPIN_LOCK Lock
|
||||
* );
|
||||
*/
|
||||
#define ExInterlockedAllocateFromZone(Zone,Lock) \
|
||||
(PVOID)ExInterlockedPopEntryList(&(Zone)->FreeList,Lock)
|
||||
|
||||
LONGLONG
|
||||
FASTCALL
|
||||
ExInterlockedCompareExchange64 (
|
||||
IN OUT PLONGLONG Destination,
|
||||
IN PLONGLONG Exchange,
|
||||
IN PLONGLONG Comparand,
|
||||
IN PKSPIN_LOCK Lock
|
||||
);
|
||||
|
||||
INTERLOCKED_RESULT
|
||||
STDCALL
|
||||
ExInterlockedDecrementLong (
|
||||
PLONG Addend,
|
||||
PKSPIN_LOCK Lock
|
||||
);
|
||||
ULONG
|
||||
STDCALL
|
||||
ExInterlockedExchangeUlong (
|
||||
PULONG Target,
|
||||
ULONG Value,
|
||||
PKSPIN_LOCK Lock
|
||||
);
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
ExInterlockedExtendZone (
|
||||
PZONE_HEADER Zone,
|
||||
PVOID Segment,
|
||||
ULONG SegmentSize,
|
||||
PKSPIN_LOCK Lock
|
||||
);
|
||||
|
||||
/*
|
||||
* PVOID
|
||||
* ExInterlockedFreeToZone (
|
||||
* PZONE_HEADER Zone,
|
||||
* PVOID Block,
|
||||
* PKSPIN_LOCK Lock
|
||||
* );
|
||||
*/
|
||||
#define ExInterlockedFreeToZone(Zone,Block,Lock) \
|
||||
ExInterlockedPushEntryList(&(Zone)->FreeList,((PSINGLE_LIST_ENTRY)(Block)),(Lock))
|
||||
|
||||
INTERLOCKED_RESULT
|
||||
STDCALL
|
||||
ExInterlockedIncrementLong (
|
||||
PLONG Addend,
|
||||
PKSPIN_LOCK Lock
|
||||
);
|
||||
PLIST_ENTRY
|
||||
STDCALL
|
||||
ExInterlockedInsertHeadList (
|
||||
PLIST_ENTRY ListHead,
|
||||
PLIST_ENTRY ListEntry,
|
||||
PKSPIN_LOCK Lock
|
||||
);
|
||||
PLIST_ENTRY
|
||||
STDCALL
|
||||
ExInterlockedInsertTailList (
|
||||
PLIST_ENTRY ListHead,
|
||||
PLIST_ENTRY ListEntry,
|
||||
PKSPIN_LOCK Lock
|
||||
);
|
||||
PSINGLE_LIST_ENTRY
|
||||
STDCALL
|
||||
ExInterlockedPopEntryList (
|
||||
PSINGLE_LIST_ENTRY ListHead,
|
||||
PKSPIN_LOCK Lock
|
||||
);
|
||||
PSINGLE_LIST_ENTRY
|
||||
FASTCALL
|
||||
ExInterlockedPopEntrySList (
|
||||
PSLIST_HEADER ListHead,
|
||||
PKSPIN_LOCK Lock
|
||||
);
|
||||
PSINGLE_LIST_ENTRY
|
||||
STDCALL
|
||||
ExInterlockedPushEntryList (
|
||||
PSINGLE_LIST_ENTRY ListHead,
|
||||
PSINGLE_LIST_ENTRY ListEntry,
|
||||
PKSPIN_LOCK Lock
|
||||
);
|
||||
PSINGLE_LIST_ENTRY
|
||||
FASTCALL
|
||||
ExInterlockedPushEntrySList (
|
||||
PSLIST_HEADER ListHead,
|
||||
PSINGLE_LIST_ENTRY ListEntry,
|
||||
PKSPIN_LOCK Lock
|
||||
);
|
||||
|
||||
VOID
|
||||
ExInterlockedRemoveEntryList (
|
||||
PLIST_ENTRY ListHead,
|
||||
PLIST_ENTRY Entry,
|
||||
PKSPIN_LOCK Lock
|
||||
);
|
||||
|
||||
PLIST_ENTRY
|
||||
STDCALL
|
||||
ExInterlockedRemoveHeadList (
|
||||
PLIST_ENTRY Head,
|
||||
PKSPIN_LOCK Lock
|
||||
);
|
||||
|
||||
/*
|
||||
* BOOLEAN
|
||||
* ExIsFullZone (
|
||||
* PZONE_HEADER Zone
|
||||
* );
|
||||
*/
|
||||
#define ExIsFullZone(Zone) \
|
||||
((Zone)->FreeList.Next==(PSINGLE_LIST_ENTRY)NULL)
|
||||
|
||||
/*
|
||||
* BOOLEAN
|
||||
* ExIsObjectInFirstZoneSegment (
|
||||
* PZONE_HEADER Zone,
|
||||
* PVOID Object
|
||||
* );
|
||||
*/
|
||||
#define ExIsObjectInFirstZoneSegment(Zone,Object) \
|
||||
(((PUCHAR)(Object)>=(PUCHAR)(Zone)->SegmentList.Next) && \
|
||||
((PUCHAR)(Object)<(PUCHAR)(Zone)->SegmentList.Next+(Zone)->TotalSegmentSize))
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
ExIsProcessorFeaturePresent (
|
||||
IN ULONG ProcessorFeature
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
ExIsResourceAcquiredExclusiveLite (
|
||||
PERESOURCE Resource
|
||||
);
|
||||
|
||||
ULONG
|
||||
STDCALL
|
||||
ExIsResourceAcquiredSharedLite (
|
||||
PERESOURCE Resource
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
ExLocalTimeToSystemTime (
|
||||
PLARGE_INTEGER LocalTime,
|
||||
PLARGE_INTEGER SystemTime
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
ExNotifyCallback (
|
||||
IN PVOID CallbackObject,
|
||||
IN PVOID Argument1,
|
||||
IN PVOID Argument2
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
ExPostSystemEvent (
|
||||
ULONG Unknown1,
|
||||
ULONG Unknown2,
|
||||
ULONG Unknown3
|
||||
);
|
||||
|
||||
/*
|
||||
* USHORT
|
||||
* ExQueryDepthSList (
|
||||
* PSLIST_HEADER SListHead
|
||||
* );
|
||||
*/
|
||||
#define ExQueryDepthSList(ListHead) \
|
||||
(USHORT)(ListHead)->s.Depth
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
ExQueueWorkItem (
|
||||
PWORK_QUEUE_ITEM WorkItem,
|
||||
WORK_QUEUE_TYPE QueueType
|
||||
);
|
||||
VOID
|
||||
STDCALL
|
||||
ExRaiseAccessViolation (
|
||||
VOID
|
||||
);
|
||||
VOID
|
||||
STDCALL
|
||||
ExRaiseDatatypeMisalignment (
|
||||
VOID
|
||||
);
|
||||
VOID
|
||||
STDCALL
|
||||
ExRaiseStatus (
|
||||
NTSTATUS Status
|
||||
);
|
||||
|
||||
PVOID
|
||||
STDCALL
|
||||
ExRegisterCallback (
|
||||
IN PCALLBACK_OBJECT CallbackObject,
|
||||
IN PCALLBACK_FUNCTION CallbackFunction,
|
||||
IN PVOID CallbackContext
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
ExReinitializeResourceLite (
|
||||
PERESOURCE Resource
|
||||
);
|
||||
/* ReactOS Specific: begin */
|
||||
VOID
|
||||
FASTCALL
|
||||
ExReleaseFastMutex (
|
||||
PFAST_MUTEX Mutex
|
||||
);
|
||||
/* ReactOS Specific: end */
|
||||
VOID
|
||||
FASTCALL
|
||||
ExReleaseFastMutexUnsafe (
|
||||
PFAST_MUTEX Mutex
|
||||
);
|
||||
/*
|
||||
VOID
|
||||
STDCALL
|
||||
ExReleaseResource (
|
||||
PERESOURCE Resource
|
||||
);
|
||||
*/
|
||||
#define ExReleaseResource(Resource) \
|
||||
(ExReleaseResourceLite (Resource))
|
||||
|
||||
VOID
|
||||
FASTCALL
|
||||
ExReleaseResourceLite (
|
||||
PERESOURCE Resource
|
||||
);
|
||||
VOID
|
||||
STDCALL
|
||||
ExReleaseResourceForThread (
|
||||
PERESOURCE Resource,
|
||||
ERESOURCE_THREAD ResourceThreadId
|
||||
);
|
||||
VOID
|
||||
STDCALL
|
||||
ExReleaseResourceForThreadLite (
|
||||
PERESOURCE Resource,
|
||||
ERESOURCE_THREAD ResourceThreadId
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
ExSetResourceOwnerPointer (
|
||||
IN PERESOURCE Resource,
|
||||
IN PVOID OwnerPointer
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
ExSystemTimeToLocalTime (
|
||||
PLARGE_INTEGER SystemTime,
|
||||
PLARGE_INTEGER LocalTime
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
FASTCALL
|
||||
ExTryToAcquireFastMutex (
|
||||
PFAST_MUTEX FastMutex
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
ExTryToAcquireResourceExclusiveLite (
|
||||
PERESOURCE Resource
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
ExUnregisterCallback (
|
||||
IN PVOID CallbackRegistration
|
||||
);
|
||||
|
||||
|
||||
/*
|
||||
* PVOID
|
||||
* ExAllocateFromNPagedLookasideList (
|
||||
* PNPAGED_LOOKASIDE_LIST LookSide
|
||||
* );
|
||||
*
|
||||
* FUNCTION:
|
||||
* Removes (pops) the first entry from the specified nonpaged
|
||||
* lookaside list.
|
||||
*
|
||||
* ARGUMENTS:
|
||||
* Lookaside = Pointer to a nonpaged lookaside list
|
||||
*
|
||||
* RETURNS:
|
||||
* Address of the allocated list entry
|
||||
*/
|
||||
static
|
||||
inline
|
||||
PVOID
|
||||
ExAllocateFromNPagedLookasideList (
|
||||
IN PNPAGED_LOOKASIDE_LIST Lookaside
|
||||
)
|
||||
{
|
||||
PVOID Entry;
|
||||
|
||||
Lookaside->TotalAllocates++;
|
||||
Entry = ExInterlockedPopEntrySList (&Lookaside->ListHead,
|
||||
&Lookaside->Lock);
|
||||
if (Entry == NULL)
|
||||
{
|
||||
Lookaside->AllocateMisses++;
|
||||
Entry = (Lookaside->Allocate)(Lookaside->Type,
|
||||
Lookaside->Size,
|
||||
Lookaside->Tag);
|
||||
}
|
||||
|
||||
return Entry;
|
||||
}
|
||||
|
||||
PVOID
|
||||
STDCALL
|
||||
ExAllocateFromPagedLookasideList (
|
||||
PPAGED_LOOKASIDE_LIST LookSide
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
ExDeleteNPagedLookasideList (
|
||||
PNPAGED_LOOKASIDE_LIST Lookaside
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
ExDeletePagedLookasideList (
|
||||
PPAGED_LOOKASIDE_LIST Lookaside
|
||||
);
|
||||
|
||||
|
||||
/*
|
||||
* VOID
|
||||
* ExFreeToNPagedLookasideList (
|
||||
* PNPAGED_LOOKASIDE_LIST Lookaside,
|
||||
* PVOID Entry
|
||||
* );
|
||||
*
|
||||
* FUNCTION:
|
||||
* Inserts (pushes) the specified entry into the specified
|
||||
* nonpaged lookaside list.
|
||||
*
|
||||
* ARGUMENTS:
|
||||
* Lookaside = Pointer to the nonpaged lookaside list
|
||||
* Entry = Pointer to the entry that is inserted in the lookaside list
|
||||
*/
|
||||
static
|
||||
inline
|
||||
VOID
|
||||
ExFreeToNPagedLookasideList (
|
||||
IN PNPAGED_LOOKASIDE_LIST Lookaside,
|
||||
IN PVOID Entry
|
||||
)
|
||||
{
|
||||
Lookaside->TotalFrees++;
|
||||
if (ExQueryDepthSList (&Lookaside->ListHead) >= Lookaside->MinimumDepth)
|
||||
{
|
||||
Lookaside->FreeMisses++;
|
||||
(Lookaside->Free)(Entry);
|
||||
}
|
||||
else
|
||||
{
|
||||
ExInterlockedPushEntrySList (&Lookaside->ListHead,
|
||||
(PSINGLE_LIST_ENTRY)Entry,
|
||||
&Lookaside->Lock);
|
||||
}
|
||||
}
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
ExFreeToPagedLookasideList (
|
||||
PPAGED_LOOKASIDE_LIST Lookaside,
|
||||
PVOID Entry
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
ExInitializeNPagedLookasideList (
|
||||
PNPAGED_LOOKASIDE_LIST Lookaside,
|
||||
PALLOCATE_FUNCTION Allocate,
|
||||
PFREE_FUNCTION Free,
|
||||
ULONG Flags,
|
||||
ULONG Size,
|
||||
ULONG Tag,
|
||||
USHORT Depth
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
ExInitializePagedLookasideList (
|
||||
PPAGED_LOOKASIDE_LIST Lookaside,
|
||||
PALLOCATE_FUNCTION Allocate,
|
||||
PFREE_FUNCTION Free,
|
||||
ULONG Flags,
|
||||
ULONG Size,
|
||||
ULONG Tag,
|
||||
USHORT Depth
|
||||
);
|
||||
|
||||
ULONG FASTCALL
|
||||
ExfInterlockedAddUlong(IN PULONG Addend,
|
||||
IN ULONG Increment,
|
||||
IN PKSPIN_LOCK Lock);
|
||||
|
||||
PLIST_ENTRY FASTCALL
|
||||
ExfInterlockedInsertHeadList(IN PLIST_ENTRY ListHead,
|
||||
IN PLIST_ENTRY ListEntry,
|
||||
IN PKSPIN_LOCK Lock);
|
||||
|
||||
PLIST_ENTRY FASTCALL
|
||||
ExfInterlockedInsertTailList(IN PLIST_ENTRY ListHead,
|
||||
IN PLIST_ENTRY ListEntry,
|
||||
IN PKSPIN_LOCK Lock);
|
||||
|
||||
PSINGLE_LIST_ENTRY FASTCALL
|
||||
ExfInterlockedPopEntryList(IN PSINGLE_LIST_ENTRY ListHead,
|
||||
IN PKSPIN_LOCK Lock);
|
||||
|
||||
PSINGLE_LIST_ENTRY FASTCALL
|
||||
ExfInterlockedPushEntryList(IN PSINGLE_LIST_ENTRY ListHead,
|
||||
IN PSINGLE_LIST_ENTRY ListEntry,
|
||||
IN PKSPIN_LOCK Lock);
|
||||
|
||||
PLIST_ENTRY FASTCALL
|
||||
ExfInterlockedRemoveHeadList(IN PLIST_ENTRY Head,
|
||||
IN PKSPIN_LOCK Lock);
|
||||
|
||||
INTERLOCKED_RESULT FASTCALL
|
||||
Exfi386InterlockedIncrementLong(IN PLONG Addend);
|
||||
|
||||
INTERLOCKED_RESULT FASTCALL
|
||||
Exfi386InterlockedDecrementLong(IN PLONG Addend);
|
||||
|
||||
ULONG FASTCALL
|
||||
Exfi386InterlockedExchangeUlong(IN PULONG Target,
|
||||
IN ULONG Value);
|
||||
|
||||
INTERLOCKED_RESULT STDCALL
|
||||
Exi386InterlockedIncrementLong(IN PLONG Addend);
|
||||
|
||||
INTERLOCKED_RESULT STDCALL
|
||||
Exi386InterlockedDecrementLong(IN PLONG Addend);
|
||||
|
||||
ULONG STDCALL
|
||||
Exi386InterlockedExchangeUlong(IN PULONG Target,
|
||||
IN ULONG Value);
|
||||
|
||||
|
||||
LONG
|
||||
FASTCALL
|
||||
InterlockedCompareExchange (
|
||||
PLONG Destination,
|
||||
LONG Exchange,
|
||||
LONG Comperand
|
||||
);
|
||||
|
||||
#ifdef _GNU_H_WINDOWS_H
|
||||
#ifdef InterlockedDecrement
|
||||
#undef InterlockedDecrement
|
||||
#undef InterlockedExchange
|
||||
#undef InterlockedExchangeAdd
|
||||
#undef InterlockedIncrement
|
||||
#endif /* def InterlockedDecrement */
|
||||
#endif /* def _GNU_H_WINDOWS_H */
|
||||
LONG
|
||||
FASTCALL
|
||||
InterlockedDecrement (
|
||||
PLONG Addend
|
||||
);
|
||||
LONG
|
||||
FASTCALL
|
||||
InterlockedExchange (
|
||||
PLONG Target,
|
||||
LONG Value
|
||||
);
|
||||
LONG
|
||||
FASTCALL
|
||||
InterlockedExchangeAdd (
|
||||
PLONG Addend,
|
||||
LONG Value
|
||||
);
|
||||
LONG
|
||||
FASTCALL
|
||||
InterlockedIncrement (
|
||||
PLONG Addend
|
||||
);
|
||||
|
||||
/*---*/
|
||||
|
||||
typedef
|
||||
unsigned int
|
||||
(exception_hook) (
|
||||
CONTEXT * c,
|
||||
unsigned int exp
|
||||
);
|
||||
unsigned int
|
||||
ExHookException (
|
||||
exception_hook fn,
|
||||
unsigned int exp
|
||||
);
|
||||
|
||||
/* BEGIN REACTOS ONLY */
|
||||
|
||||
BOOLEAN STDCALL
|
||||
ExInitializeBinaryTree(IN PBINARY_TREE Tree,
|
||||
IN PKEY_COMPARATOR Compare,
|
||||
IN BOOLEAN UseNonPagedPool);
|
||||
|
||||
VOID STDCALL
|
||||
ExDeleteBinaryTree(IN PBINARY_TREE Tree);
|
||||
|
||||
VOID STDCALL
|
||||
ExInsertBinaryTree(IN PBINARY_TREE Tree,
|
||||
IN PVOID Key,
|
||||
IN PVOID Value);
|
||||
|
||||
BOOLEAN STDCALL
|
||||
ExSearchBinaryTree(IN PBINARY_TREE Tree,
|
||||
IN PVOID Key,
|
||||
OUT PVOID * Value);
|
||||
|
||||
BOOLEAN STDCALL
|
||||
ExRemoveBinaryTree(IN PBINARY_TREE Tree,
|
||||
IN PVOID Key,
|
||||
IN PVOID * Value);
|
||||
|
||||
BOOLEAN STDCALL
|
||||
ExTraverseBinaryTree(IN PBINARY_TREE Tree,
|
||||
IN TRAVERSE_METHOD Method,
|
||||
IN PTRAVERSE_ROUTINE Routine,
|
||||
IN PVOID Context);
|
||||
|
||||
BOOLEAN STDCALL
|
||||
ExInitializeSplayTree(IN PSPLAY_TREE Tree,
|
||||
IN PKEY_COMPARATOR Compare,
|
||||
IN BOOLEAN Weighted,
|
||||
IN BOOLEAN UseNonPagedPool);
|
||||
|
||||
VOID STDCALL
|
||||
ExDeleteSplayTree(IN PSPLAY_TREE Tree);
|
||||
|
||||
VOID STDCALL
|
||||
ExInsertSplayTree(IN PSPLAY_TREE Tree,
|
||||
IN PVOID Key,
|
||||
IN PVOID Value);
|
||||
|
||||
BOOLEAN STDCALL
|
||||
ExSearchSplayTree(IN PSPLAY_TREE Tree,
|
||||
IN PVOID Key,
|
||||
OUT PVOID * Value);
|
||||
|
||||
BOOLEAN STDCALL
|
||||
ExRemoveSplayTree(IN PSPLAY_TREE Tree,
|
||||
IN PVOID Key,
|
||||
IN PVOID * Value);
|
||||
|
||||
BOOLEAN STDCALL
|
||||
ExWeightOfSplayTree(IN PSPLAY_TREE Tree,
|
||||
OUT PULONG Weight);
|
||||
|
||||
BOOLEAN STDCALL
|
||||
ExTraverseSplayTree(IN PSPLAY_TREE Tree,
|
||||
IN TRAVERSE_METHOD Method,
|
||||
IN PTRAVERSE_ROUTINE Routine,
|
||||
IN PVOID Context);
|
||||
|
||||
BOOLEAN STDCALL
|
||||
ExInitializeHashTable(IN PHASH_TABLE HashTable,
|
||||
IN ULONG HashTableSize,
|
||||
IN PKEY_COMPARATOR Compare OPTIONAL,
|
||||
IN BOOLEAN UseNonPagedPool);
|
||||
|
||||
VOID STDCALL
|
||||
ExDeleteHashTable(IN PHASH_TABLE HashTable);
|
||||
|
||||
VOID STDCALL
|
||||
ExInsertHashTable(IN PHASH_TABLE HashTable,
|
||||
IN PVOID Key,
|
||||
IN ULONG KeyLength,
|
||||
IN PVOID Value);
|
||||
|
||||
BOOLEAN STDCALL
|
||||
ExSearchHashTable(IN PHASH_TABLE HashTable,
|
||||
IN PVOID Key,
|
||||
IN ULONG KeyLength,
|
||||
OUT PVOID * Value);
|
||||
|
||||
BOOLEAN STDCALL
|
||||
ExRemoveHashTable(IN PHASH_TABLE HashTable,
|
||||
IN PVOID Key,
|
||||
IN ULONG KeyLength,
|
||||
IN PVOID * Value);
|
||||
|
||||
/* END REACTOS ONLY */
|
||||
|
||||
#endif /* ndef _NTOS_EXFUNCS_H */
|
||||
@@ -0,0 +1,238 @@
|
||||
/* $Id: extypes.h,v 1.11 2002/09/08 10:47:43 chorns Exp $ */
|
||||
|
||||
#ifndef __INCLUDE_DDK_EXTYPES_H
|
||||
#define __INCLUDE_DDK_EXTYPES_H
|
||||
|
||||
#ifdef __NTOSKRNL__
|
||||
extern POBJECT_TYPE EXPORTED ExDesktopObjectType;
|
||||
extern POBJECT_TYPE EXPORTED ExEventObjectType;
|
||||
extern POBJECT_TYPE EXPORTED ExWindowStationObjectType;
|
||||
#else
|
||||
extern POBJECT_TYPE IMPORTED ExDesktopObjectType;
|
||||
extern POBJECT_TYPE IMPORTED ExEventObjectType;
|
||||
extern POBJECT_TYPE IMPORTED ExWindowStationObjectType;
|
||||
#endif
|
||||
|
||||
typedef ULONG INTERLOCKED_RESULT;
|
||||
typedef ULONG WORK_QUEUE_TYPE;
|
||||
|
||||
typedef ULONG ERESOURCE_THREAD, *PERESOURCE_THREAD;
|
||||
|
||||
typedef struct _OWNER_ENTRY
|
||||
{
|
||||
ERESOURCE_THREAD OwnerThread;
|
||||
union
|
||||
{
|
||||
LONG OwnerCount;
|
||||
ULONG TableSize;
|
||||
} a;
|
||||
} OWNER_ENTRY, *POWNER_ENTRY;
|
||||
|
||||
typedef struct _ERESOURCE
|
||||
{
|
||||
LIST_ENTRY SystemResourcesList;
|
||||
POWNER_ENTRY OwnerTable;
|
||||
SHORT ActiveCount;
|
||||
USHORT Flag;
|
||||
PKSEMAPHORE SharedWaiters;
|
||||
PKEVENT ExclusiveWaiters;
|
||||
OWNER_ENTRY OwnerThreads[2];
|
||||
ULONG ContentionCount;
|
||||
USHORT NumberOfSharedWaiters;
|
||||
USHORT NumberOfExclusiveWaiters;
|
||||
union
|
||||
{
|
||||
PVOID Address;
|
||||
ULONG CreatorBackTraceIndex;
|
||||
} a;
|
||||
KSPIN_LOCK SpinLock;
|
||||
} ERESOURCE, *PERESOURCE;
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
LONG Count;
|
||||
struct _KTHREAD* Owner;
|
||||
ULONG Contention;
|
||||
KEVENT Event;
|
||||
ULONG OldIrql;
|
||||
} FAST_MUTEX, *PFAST_MUTEX;
|
||||
|
||||
typedef struct _ZONE_HEADER
|
||||
{
|
||||
SINGLE_LIST_ENTRY FreeList;
|
||||
SINGLE_LIST_ENTRY SegmentList;
|
||||
ULONG BlockSize;
|
||||
ULONG TotalSegmentSize;
|
||||
} ZONE_HEADER, *PZONE_HEADER;
|
||||
|
||||
typedef struct _ZONE_SEGMENT
|
||||
{
|
||||
SINGLE_LIST_ENTRY Entry;
|
||||
ULONG size;
|
||||
} ZONE_SEGMENT, *PZONE_SEGMENT;
|
||||
|
||||
typedef struct _ZONE_ENTRY
|
||||
{
|
||||
SINGLE_LIST_ENTRY Entry;
|
||||
} ZONE_ENTRY, *PZONE_ENTRY;
|
||||
|
||||
|
||||
typedef VOID STDCALL
|
||||
(*PWORKER_THREAD_ROUTINE)(PVOID Parameter);
|
||||
|
||||
typedef struct _WORK_QUEUE_ITEM
|
||||
{
|
||||
LIST_ENTRY Entry;
|
||||
PWORKER_THREAD_ROUTINE Routine;
|
||||
PVOID Context;
|
||||
} WORK_QUEUE_ITEM, *PWORK_QUEUE_ITEM;
|
||||
|
||||
typedef PVOID STDCALL
|
||||
(*PALLOCATE_FUNCTION)(POOL_TYPE PoolType,
|
||||
ULONG NumberOfBytes,
|
||||
ULONG Tag);
|
||||
|
||||
typedef VOID STDCALL
|
||||
(*PFREE_FUNCTION)(PVOID Buffer);
|
||||
|
||||
typedef union _SLIST_HEADER
|
||||
{
|
||||
ULONGLONG Alignment;
|
||||
struct
|
||||
{
|
||||
SINGLE_LIST_ENTRY Next;
|
||||
USHORT Depth;
|
||||
USHORT Sequence;
|
||||
} s;
|
||||
} SLIST_HEADER, *PSLIST_HEADER;
|
||||
|
||||
typedef struct _NPAGED_LOOKASIDE_LIST
|
||||
{
|
||||
SLIST_HEADER ListHead;
|
||||
USHORT MinimumDepth;
|
||||
USHORT MaximumDepth;
|
||||
ULONG TotalAllocates;
|
||||
ULONG AllocateMisses;
|
||||
ULONG TotalFrees;
|
||||
ULONG FreeMisses;
|
||||
POOL_TYPE Type;
|
||||
ULONG Tag;
|
||||
ULONG Size;
|
||||
PALLOCATE_FUNCTION Allocate;
|
||||
PFREE_FUNCTION Free;
|
||||
LIST_ENTRY ListEntry;
|
||||
ULONG LastTotalAllocates;
|
||||
ULONG LastAllocateMisses;
|
||||
ULONG Pad[2];
|
||||
KSPIN_LOCK Lock;
|
||||
} NPAGED_LOOKASIDE_LIST, *PNPAGED_LOOKASIDE_LIST;
|
||||
|
||||
typedef struct _PAGED_LOOKASIDE_LIST
|
||||
{
|
||||
SLIST_HEADER ListHead;
|
||||
USHORT MinimumDepth;
|
||||
USHORT MaximumDepth;
|
||||
ULONG TotalAllocates;
|
||||
ULONG AllocateMisses;
|
||||
ULONG TotalFrees;
|
||||
ULONG FreeMisses;
|
||||
POOL_TYPE Type;
|
||||
ULONG Tag;
|
||||
ULONG Size;
|
||||
PALLOCATE_FUNCTION Allocate;
|
||||
PFREE_FUNCTION Free;
|
||||
LIST_ENTRY ListEntry;
|
||||
ULONG LastTotalAllocates;
|
||||
ULONG LastAllocateMisses;
|
||||
FAST_MUTEX Lock;
|
||||
} PAGED_LOOKASIDE_LIST, *PPAGED_LOOKASIDE_LIST;
|
||||
|
||||
|
||||
/* callback object (not functional in NT4)*/
|
||||
|
||||
typedef struct _CALLBACK_OBJECT *PCALLBACK_OBJECT;
|
||||
|
||||
typedef VOID STDCALL
|
||||
(*PCALLBACK_FUNCTION)(PVOID CallbackContext,
|
||||
PVOID Argument1,
|
||||
PVOID Argument2);
|
||||
|
||||
/* BEGIN REACTOS ONLY */
|
||||
|
||||
typedef enum _TRAVERSE_METHOD {
|
||||
TraverseMethodPreorder,
|
||||
TraverseMethodInorder,
|
||||
TraverseMethodPostorder
|
||||
} TRAVERSE_METHOD;
|
||||
|
||||
typedef LONG STDCALL
|
||||
(*PKEY_COMPARATOR)(IN PVOID Key1,
|
||||
IN PVOID Key2);
|
||||
|
||||
typedef BOOLEAN STDCALL
|
||||
(*PTRAVERSE_ROUTINE)(IN PVOID Context,
|
||||
IN PVOID Key,
|
||||
IN PVOID Value);
|
||||
|
||||
struct _BINARY_TREE_NODE;
|
||||
|
||||
typedef struct _BINARY_TREE
|
||||
{
|
||||
struct _BINARY_TREE_NODE * RootNode;
|
||||
PKEY_COMPARATOR Compare;
|
||||
BOOLEAN UseNonPagedPool;
|
||||
union {
|
||||
NPAGED_LOOKASIDE_LIST NonPaged;
|
||||
PAGED_LOOKASIDE_LIST Paged;
|
||||
} List;
|
||||
union {
|
||||
KSPIN_LOCK NonPaged;
|
||||
FAST_MUTEX Paged;
|
||||
} Lock;
|
||||
} BINARY_TREE, *PBINARY_TREE;
|
||||
|
||||
|
||||
struct _SPLAY_TREE_NODE;
|
||||
|
||||
typedef struct _SPLAY_TREE
|
||||
{
|
||||
struct _SPLAY_TREE_NODE * RootNode;
|
||||
PKEY_COMPARATOR Compare;
|
||||
BOOLEAN Weighted;
|
||||
BOOLEAN UseNonPagedPool;
|
||||
union {
|
||||
NPAGED_LOOKASIDE_LIST NonPaged;
|
||||
PAGED_LOOKASIDE_LIST Paged;
|
||||
} List;
|
||||
union {
|
||||
KSPIN_LOCK NonPaged;
|
||||
FAST_MUTEX Paged;
|
||||
} Lock;
|
||||
PVOID Reserved[4];
|
||||
} SPLAY_TREE, *PSPLAY_TREE;
|
||||
|
||||
|
||||
typedef struct _HASH_TABLE
|
||||
{
|
||||
// Size of hash table in number of bits
|
||||
ULONG HashTableSize;
|
||||
|
||||
// Use non-paged pool memory?
|
||||
BOOLEAN UseNonPagedPool;
|
||||
|
||||
// Lock for this structure
|
||||
union {
|
||||
KSPIN_LOCK NonPaged;
|
||||
FAST_MUTEX Paged;
|
||||
} Lock;
|
||||
|
||||
// Pointer to array of hash buckets with splay trees
|
||||
PSPLAY_TREE HashTrees;
|
||||
} HASH_TABLE, *PHASH_TABLE;
|
||||
|
||||
/* END REACTOS ONLY */
|
||||
|
||||
#endif /* __INCLUDE_DDK_EXTYPES_H */
|
||||
|
||||
/* EOF */
|
||||
@@ -0,0 +1,612 @@
|
||||
#ifndef __INCLUDE_DDK_FSFUNCS_H
|
||||
#define __INCLUDE_DDK_FSFUNCS_H
|
||||
/* $Id: fsfuncs.h,v 1.16 2002/09/08 10:47:44 chorns Exp $ */
|
||||
#define FlagOn(x,f) ((x) & (f))
|
||||
|
||||
BOOLEAN STDCALL
|
||||
FsRtlAddLargeMcbEntry(IN PLARGE_MCB Mcb,
|
||||
IN LONGLONG Vbn,
|
||||
IN LONGLONG Lbn,
|
||||
IN LONGLONG SectorCount);
|
||||
|
||||
VOID STDCALL
|
||||
FsRtlAddMcbEntry(
|
||||
DWORD Unknown0,
|
||||
DWORD Unknown1,
|
||||
DWORD Unknown2,
|
||||
DWORD Unknown3
|
||||
);
|
||||
|
||||
VOID STDCALL
|
||||
FsRtlAddToTunnelCache (
|
||||
IN PTUNNEL Cache,
|
||||
IN ULONGLONG DirectoryKey,
|
||||
IN PUNICODE_STRING ShortName,
|
||||
IN PUNICODE_STRING LongName,
|
||||
IN BOOLEAN KeyByShortName,
|
||||
IN ULONG DataLength,
|
||||
IN PVOID Data
|
||||
);
|
||||
|
||||
PVOID STDCALL
|
||||
FsRtlAllocatePool (
|
||||
IN POOL_TYPE PoolType,
|
||||
IN ULONG NumberOfBytes
|
||||
);
|
||||
|
||||
PVOID STDCALL
|
||||
FsRtlAllocatePoolWithQuota (
|
||||
IN POOL_TYPE PoolType,
|
||||
IN ULONG NumberOfBytes
|
||||
);
|
||||
|
||||
PVOID STDCALL
|
||||
FsRtlAllocatePoolWithQuotaTag (
|
||||
IN POOL_TYPE PoolType,
|
||||
IN ULONG NumberOfBytes,
|
||||
IN ULONG Tag
|
||||
);
|
||||
PVOID
|
||||
STDCALL
|
||||
FsRtlAllocatePoolWithTag (
|
||||
IN POOL_TYPE PoolType,
|
||||
IN ULONG NumberOfBytes,
|
||||
IN ULONG Tag
|
||||
);
|
||||
DWORD
|
||||
STDCALL
|
||||
FsRtlAllocateResource (
|
||||
VOID
|
||||
);
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
FsRtlAreNamesEqual (
|
||||
IN PUNICODE_STRING Name1,
|
||||
IN PUNICODE_STRING Name2,
|
||||
IN BOOLEAN IgnoreCase,
|
||||
IN PWCHAR UpcaseTable OPTIONAL
|
||||
);
|
||||
DWORD
|
||||
STDCALL
|
||||
FsRtlBalanceReads (
|
||||
DWORD Unknown0
|
||||
);
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
FsRtlCheckLockForReadAccess (
|
||||
IN PFILE_LOCK FileLock,
|
||||
IN PIRP Irp
|
||||
);
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
FsRtlCheckLockForWriteAccess (
|
||||
IN PFILE_LOCK FileLock,
|
||||
IN PIRP Irp
|
||||
);
|
||||
|
||||
NTSTATUS STDCALL
|
||||
FsRtlCheckOplock(IN POPLOCK Oplock,
|
||||
IN PIRP Irp,
|
||||
IN PVOID Context,
|
||||
IN POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine OPTIONAL,
|
||||
IN POPLOCK_FS_PREPOST_IRP PostIrpRoutine OPTIONAL);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
FsRtlCopyRead (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length,
|
||||
IN BOOLEAN Wait,
|
||||
IN ULONG LockKey,
|
||||
OUT PVOID Buffer,
|
||||
OUT PIO_STATUS_BLOCK IoStatus,
|
||||
IN PDEVICE_OBJECT DeviceObject
|
||||
);
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
FsRtlCopyWrite (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length,
|
||||
IN BOOLEAN Wait,
|
||||
IN ULONG LockKey,
|
||||
IN PVOID Buffer,
|
||||
OUT PIO_STATUS_BLOCK IoStatus,
|
||||
IN PDEVICE_OBJECT DeviceObject
|
||||
);
|
||||
|
||||
BOOLEAN STDCALL
|
||||
FsRtlCurrentBatchOplock(IN POPLOCK Oplock);
|
||||
|
||||
VOID STDCALL
|
||||
FsRtlDeleteKeyFromTunnelCache(IN PTUNNEL Cache,
|
||||
IN ULONGLONG DirectoryKey);
|
||||
|
||||
VOID STDCALL
|
||||
FsRtlDeleteTunnelCache(IN PTUNNEL Cache);
|
||||
|
||||
VOID STDCALL
|
||||
FsRtlDeregisterUncProvider(IN HANDLE Handle);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
FsRtlDissectDbcs (
|
||||
DWORD Unknown0,
|
||||
DWORD Unknown1,
|
||||
DWORD Unknown2,
|
||||
DWORD Unknown3
|
||||
);
|
||||
VOID
|
||||
STDCALL
|
||||
FsRtlDissectName (
|
||||
DWORD Unknown0,
|
||||
DWORD Unknown1,
|
||||
DWORD Unknown2,
|
||||
DWORD Unknown3
|
||||
);
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
FsRtlDoesDbcsContainWildCards (
|
||||
IN DWORD Unknown0
|
||||
);
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
FsRtlDoesNameContainWildCards (
|
||||
IN PUNICODE_STRING Name
|
||||
);
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
FsRtlFastCheckLockForRead (
|
||||
IN PFILE_LOCK FileLock,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN PLARGE_INTEGER Length,
|
||||
IN ULONG Key,
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PEPROCESS Process
|
||||
);
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
FsRtlFastCheckLockForWrite (
|
||||
IN PFILE_LOCK FileLock,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN PLARGE_INTEGER Length,
|
||||
IN ULONG Key,
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PEPROCESS Process
|
||||
);
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
FsRtlFastUnlockAll (
|
||||
IN PFILE_LOCK FileLock,
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PEPROCESS Process,
|
||||
IN PVOID Context OPTIONAL
|
||||
);
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
FsRtlFastUnlockAllByKey (
|
||||
IN PFILE_LOCK FileLock,
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PEPROCESS Process,
|
||||
IN DWORD Key,
|
||||
IN PVOID Context OPTIONAL
|
||||
);
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
FsRtlFastUnlockSingle (
|
||||
IN PFILE_LOCK FileLock,
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN PLARGE_INTEGER Length,
|
||||
IN PEPROCESS Process,
|
||||
IN ULONG Key,
|
||||
IN PVOID Context OPTIONAL,
|
||||
IN BOOLEAN AlreadySynchronized
|
||||
);
|
||||
VOID
|
||||
STDCALL
|
||||
FsRtlFindInTunnelCache (
|
||||
IN PTUNNEL Cache,
|
||||
IN ULONGLONG DirectoryKey,
|
||||
IN PUNICODE_STRING Name,
|
||||
OUT PUNICODE_STRING ShortName,
|
||||
OUT PUNICODE_STRING LongName,
|
||||
IN OUT PULONG DataLength,
|
||||
OUT PVOID Data
|
||||
);
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
FsRtlGetFileSize (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN OUT PLARGE_INTEGER FileSize
|
||||
);
|
||||
PFILE_LOCK_INFO
|
||||
STDCALL
|
||||
FsRtlGetNextFileLock (
|
||||
IN PFILE_LOCK FileLock,
|
||||
IN BOOLEAN Restart
|
||||
);
|
||||
|
||||
BOOLEAN STDCALL
|
||||
FsRtlGetNextLargeMcbEntry(IN PLARGE_MCB Mcb,
|
||||
IN ULONG RunIndex,
|
||||
OUT PLONGLONG Vbn,
|
||||
OUT PLONGLONG Lbn,
|
||||
OUT PLONGLONG SectorCount);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
FsRtlGetNextMcbEntry (
|
||||
DWORD Unknown0,
|
||||
DWORD Unknown1,
|
||||
DWORD Unknown2,
|
||||
DWORD Unknown3,
|
||||
DWORD Unknown4
|
||||
);
|
||||
#define FsRtlEnterFileSystem KeEnterCriticalRegion
|
||||
#define FsRtlExitFileSystem KeLeaveCriticalRegion
|
||||
VOID
|
||||
STDCALL
|
||||
FsRtlInitializeFileLock (
|
||||
IN PFILE_LOCK FileLock,
|
||||
IN PCOMPLETE_LOCK_IRP_ROUTINE CompleteLockIrpRoutine OPTIONAL,
|
||||
IN PUNLOCK_ROUTINE UnlockRoutine OPTIONAL
|
||||
);
|
||||
|
||||
VOID STDCALL
|
||||
FsRtlInitializeLargeMcb(IN PLARGE_MCB Mcb,
|
||||
IN POOL_TYPE PoolType);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
FsRtlInitializeMcb (
|
||||
DWORD Unknown0,
|
||||
DWORD Unknown1
|
||||
);
|
||||
|
||||
VOID STDCALL
|
||||
FsRtlInitializeOplock(IN OUT POPLOCK Oplock);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
FsRtlInitializeTunnelCache (
|
||||
IN PTUNNEL Cache
|
||||
);
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
FsRtlIsDbcsInExpression (
|
||||
DWORD Unknown0,
|
||||
DWORD Unknown1
|
||||
);
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
FsRtlIsFatDbcsLegal (
|
||||
DWORD Unknown0,
|
||||
DWORD Unknown1,
|
||||
DWORD Unknown2,
|
||||
DWORD Unknown3,
|
||||
DWORD Unknown4
|
||||
);
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
FsRtlIsHpfsDbcsLegal (
|
||||
DWORD Unknown0,
|
||||
DWORD Unknown1,
|
||||
DWORD Unknown2,
|
||||
DWORD Unknown3,
|
||||
DWORD Unknown4
|
||||
);
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
FsRtlIsNameInExpression (
|
||||
IN PUNICODE_STRING Expression,
|
||||
IN PUNICODE_STRING Name,
|
||||
IN BOOLEAN IgnoreCase,
|
||||
IN PWCHAR UpcaseTable OPTIONAL
|
||||
);
|
||||
|
||||
BOOLEAN STDCALL
|
||||
FsRtlIsNtstatusExpected(IN NTSTATUS NtStatus);
|
||||
|
||||
BOOLEAN STDCALL
|
||||
FsRtlIsTotalDeviceFailure(IN NTSTATUS NtStatus);
|
||||
|
||||
#define FsRtlIsUnicodeCharacterWild(C) ( \
|
||||
(((C) >= 0x40) ? \
|
||||
FALSE : \
|
||||
FlagOn((*FsRtlLegalAnsiCharacterArray)[(C)], FSRTL_WILD_CHARACTER )) \
|
||||
)
|
||||
|
||||
BOOLEAN STDCALL
|
||||
FsRtlLookupLargeMcbEntry(IN PLARGE_MCB Mcb,
|
||||
IN LONGLONG Vbn,
|
||||
OUT PLONGLONG Lbn OPTIONAL,
|
||||
OUT PLONGLONG SectorCountFromLbn OPTIONAL,
|
||||
OUT PLONGLONG StartingLbn OPTIONAL,
|
||||
OUT PLONGLONG SectorCountFromStartingLbn OPTIONAL,
|
||||
OUT PULONG Index OPTIONAL);
|
||||
|
||||
BOOLEAN STDCALL
|
||||
FsRtlLookupLastLargeMcbEntry(IN PLARGE_MCB Mcb,
|
||||
OUT PLONGLONG Vbn,
|
||||
OUT PLONGLONG Lbn);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
FsRtlLookupLastMcbEntry (
|
||||
DWORD Unknown0,
|
||||
DWORD Unknown1,
|
||||
DWORD Unknown2
|
||||
);
|
||||
VOID
|
||||
STDCALL
|
||||
FsRtlLookupMcbEntry (
|
||||
DWORD Unknown0,
|
||||
DWORD Unknown1,
|
||||
DWORD Unknown2,
|
||||
DWORD Unknown3,
|
||||
DWORD Unknown4
|
||||
);
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
FsRtlMdlRead (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length,
|
||||
IN ULONG LockKey,
|
||||
OUT PMDL *MdlChain,
|
||||
OUT PIO_STATUS_BLOCK IoStatus
|
||||
);
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
FsRtlMdlReadComplete (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN OUT PMDL MdlChain
|
||||
);
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
FsRtlMdlReadCompleteDev (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PMDL MdlChain,
|
||||
IN PDEVICE_OBJECT DeviceObject
|
||||
);
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
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
|
||||
);
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
FsRtlMdlWriteComplete (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN PMDL MdlChain
|
||||
);
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
FsRtlMdlWriteCompleteDev (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN PMDL MdlChain,
|
||||
IN PDEVICE_OBJECT DeviceObject
|
||||
);
|
||||
VOID
|
||||
STDCALL
|
||||
FsRtlNotifyChangeDirectory (
|
||||
IN PNOTIFY_SYNC NotifySync,
|
||||
IN PVOID FsContext,
|
||||
IN PSTRING FullDirectoryName,
|
||||
IN PLIST_ENTRY NotifyList,
|
||||
IN BOOLEAN WatchTree,
|
||||
IN ULONG CompletionFilter,
|
||||
IN PIRP NotifyIrp
|
||||
);
|
||||
VOID
|
||||
STDCALL
|
||||
FsRtlNotifyCleanup (
|
||||
IN PNOTIFY_SYNC NotifySync,
|
||||
IN PLIST_ENTRY NotifyList,
|
||||
IN PVOID FsContext
|
||||
);
|
||||
typedef
|
||||
BOOLEAN (*PCHECK_FOR_TRAVERSE_ACCESS) (
|
||||
IN PVOID NotifyContext,
|
||||
IN PVOID TargetContext,
|
||||
IN PSECURITY_SUBJECT_CONTEXT SubjectContext
|
||||
);
|
||||
VOID
|
||||
STDCALL
|
||||
FsRtlNotifyFullChangeDirectory (
|
||||
IN PNOTIFY_SYNC NotifySync,
|
||||
IN PLIST_ENTRY NotifyList,
|
||||
IN PVOID FsContext,
|
||||
IN PSTRING FullDirectoryName,
|
||||
IN BOOLEAN WatchTree,
|
||||
IN BOOLEAN IgnoreBuffer,
|
||||
IN ULONG CompletionFilter,
|
||||
IN PIRP NotifyIrp,
|
||||
IN PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback OPTIONAL,
|
||||
IN PSECURITY_SUBJECT_CONTEXT SubjectContext OPTIONAL
|
||||
);
|
||||
VOID
|
||||
STDCALL
|
||||
FsRtlNotifyFullReportChange (
|
||||
IN PNOTIFY_SYNC NotifySync,
|
||||
IN PLIST_ENTRY NotifyList,
|
||||
IN PSTRING FullTargetName,
|
||||
IN USHORT TargetNameOffset,
|
||||
IN PSTRING StreamName OPTIONAL,
|
||||
IN PSTRING NormalizedParentName OPTIONAL,
|
||||
IN ULONG FilterMatch,
|
||||
IN ULONG Action,
|
||||
IN PVOID TargetContext
|
||||
);
|
||||
VOID
|
||||
STDCALL
|
||||
FsRtlNotifyUninitializeSync (
|
||||
IN OUT PNOTIFY_SYNC * NotifySync
|
||||
);
|
||||
VOID
|
||||
STDCALL
|
||||
FsRtlNotifyReportChange (
|
||||
IN PNOTIFY_SYNC NotifySync,
|
||||
IN PLIST_ENTRY NotifyList,
|
||||
IN PSTRING FullTargetName,
|
||||
IN PUSHORT FileNamePartLength,
|
||||
IN ULONG FilterMatch
|
||||
);
|
||||
|
||||
VOID STDCALL
|
||||
FsRtlNotifyInitializeSync(IN OUT PNOTIFY_SYNC *NotifySync);
|
||||
|
||||
NTSTATUS STDCALL
|
||||
FsRtlNotifyVolumeEvent(IN PFILE_OBJECT FileObject,
|
||||
IN ULONG EventCode);
|
||||
|
||||
NTSTATUS STDCALL
|
||||
FsRtlOplockFsctrl(IN POPLOCK Oplock,
|
||||
IN PIRP Irp,
|
||||
IN ULONG OpenCount);
|
||||
|
||||
BOOLEAN STDCALL
|
||||
FsRtlOplockIsFastIoPossible(IN POPLOCK Oplock);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
FsRtlPrepareMdlWrite (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length,
|
||||
IN ULONG LockKey,
|
||||
OUT PMDL *MdlChain,
|
||||
OUT PIO_STATUS_BLOCK IoStatus
|
||||
);
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
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
|
||||
);
|
||||
|
||||
NTSTATUS STDCALL
|
||||
FsRtlNormalizeNtstatus(IN NTSTATUS NtStatusToNormalize,
|
||||
IN NTSTATUS NormalizedNtStatus);
|
||||
|
||||
ULONG STDCALL
|
||||
FsRtlNumberOfRunsInLargeMcb(IN PLARGE_MCB Mcb);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
FsRtlNumberOfRunsInMcb (
|
||||
DWORD Unknown0
|
||||
);
|
||||
VOID
|
||||
STDCALL
|
||||
FsRtlPostPagingFileStackOverflow (
|
||||
DWORD Unknown0,
|
||||
DWORD Unknown1,
|
||||
DWORD Unknown2
|
||||
);
|
||||
VOID
|
||||
STDCALL
|
||||
FsRtlPostStackOverflow (
|
||||
DWORD Unknown0,
|
||||
DWORD Unknown1,
|
||||
DWORD Unknown2
|
||||
);
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
FsRtlPrivateLock (
|
||||
IN PFILE_LOCK FileLock,
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN PLARGE_INTEGER Length,
|
||||
IN PEPROCESS Process,
|
||||
IN ULONG Key,
|
||||
IN BOOLEAN FailImmediately,
|
||||
IN BOOLEAN ExclusiveLock,
|
||||
OUT PIO_STATUS_BLOCK IoStatus,
|
||||
IN PIRP Irp OPTIONAL,
|
||||
IN PVOID Context,
|
||||
IN BOOLEAN AlreadySynchronized
|
||||
);
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
FsRtlProcessFileLock (
|
||||
IN PFILE_LOCK FileLock,
|
||||
IN PIRP Irp,
|
||||
IN PVOID Context OPTIONAL
|
||||
);
|
||||
|
||||
NTSTATUS STDCALL
|
||||
FsRtlRegisterUncProvider(IN OUT PHANDLE Handle,
|
||||
IN PUNICODE_STRING RedirectorDeviceName,
|
||||
IN BOOLEAN MailslotsSupported);
|
||||
|
||||
VOID STDCALL
|
||||
FsRtlRemoveLargeMcbEntry(IN PLARGE_MCB Mcb,
|
||||
IN LONGLONG Vbn,
|
||||
IN LONGLONG SectorCount);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
FsRtlRemoveMcbEntry (
|
||||
DWORD Unknown0,
|
||||
DWORD Unknown1,
|
||||
DWORD Unknown2
|
||||
);
|
||||
|
||||
BOOLEAN STDCALL
|
||||
FsRtlSplitLargeMcb(IN PLARGE_MCB Mcb,
|
||||
IN LONGLONG Vbn,
|
||||
IN LONGLONG Amount);
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
FsRtlSyncVolumes (
|
||||
DWORD Unknown0,
|
||||
DWORD Unknown1,
|
||||
DWORD Unknown2
|
||||
);
|
||||
|
||||
VOID STDCALL
|
||||
FsRtlTruncateLargeMcb(IN PLARGE_MCB Mcb,
|
||||
IN LONGLONG Vbn);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
FsRtlTruncateMcb (
|
||||
DWORD Unknown0,
|
||||
DWORD Unknown1
|
||||
);
|
||||
VOID
|
||||
STDCALL
|
||||
FsRtlUninitializeFileLock (
|
||||
IN PFILE_LOCK FileLock
|
||||
);
|
||||
|
||||
VOID STDCALL
|
||||
FsRtlUninitializeLargeMcb(IN PLARGE_MCB Mcb);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
FsRtlUninitializeMcb (
|
||||
DWORD Unknown0
|
||||
);
|
||||
|
||||
VOID STDCALL
|
||||
FsRtlUninitializeOplock(IN POPLOCK Oplock);
|
||||
|
||||
#endif /* __INCLUDE_DDK_FSFUNCS_H */
|
||||
@@ -0,0 +1,96 @@
|
||||
#ifndef __INCLUDE_DDK_FSTYPES_H
|
||||
#define __INCLUDE_DDK_FSTYPES_H
|
||||
/* $Id: fstypes.h,v 1.7 2002/09/08 10:47:44 chorns Exp $ */
|
||||
|
||||
#define FSRTL_TAG TAG('F','S','r','t')
|
||||
|
||||
typedef struct _FILE_LOCK_INFO {
|
||||
LARGE_INTEGER StartingByte;
|
||||
LARGE_INTEGER Length;
|
||||
BOOLEAN ExclusiveLock;
|
||||
ULONG Key;
|
||||
PFILE_OBJECT FileObject;
|
||||
PEPROCESS Process;
|
||||
LARGE_INTEGER EndingByte;
|
||||
} FILE_LOCK_INFO, *PFILE_LOCK_INFO;
|
||||
|
||||
// raw internal file lock struct returned from FsRtlGetNextFileLock
|
||||
typedef struct _FILE_SHARED_LOCK_ENTRY {
|
||||
PVOID Unknown1;
|
||||
PVOID Unknown2;
|
||||
FILE_LOCK_INFO FileLock;
|
||||
} FILE_SHARED_LOCK_ENTRY, *PFILE_SHARED_LOCK_ENTRY;
|
||||
|
||||
// raw internal file lock struct returned from FsRtlGetNextFileLock
|
||||
typedef struct _FILE_EXCLUSIVE_LOCK_ENTRY {
|
||||
LIST_ENTRY ListEntry;
|
||||
PVOID Unknown1;
|
||||
PVOID Unknown2;
|
||||
FILE_LOCK_INFO FileLock;
|
||||
} FILE_EXCLUSIVE_LOCK_ENTRY, *PFILE_EXCLUSIVE_LOCK_ENTRY;
|
||||
|
||||
typedef NTSTATUS (*PCOMPLETE_LOCK_IRP_ROUTINE) (
|
||||
IN PVOID Context,
|
||||
IN PIRP Irp
|
||||
);
|
||||
|
||||
typedef VOID (*PUNLOCK_ROUTINE) (
|
||||
IN PVOID Context,
|
||||
IN PFILE_LOCK_INFO FileLockInfo
|
||||
);
|
||||
|
||||
typedef struct _FILE_LOCK {
|
||||
PCOMPLETE_LOCK_IRP_ROUTINE CompleteLockIrpRoutine;
|
||||
PUNLOCK_ROUTINE UnlockRoutine;
|
||||
BOOLEAN FastIoIsQuestionable;
|
||||
BOOLEAN Pad[3];
|
||||
PVOID LockInformation;
|
||||
FILE_LOCK_INFO LastReturnedLockInfo;
|
||||
PVOID LastReturnedLock;
|
||||
} FILE_LOCK, *PFILE_LOCK;
|
||||
|
||||
typedef struct _TUNNEL {
|
||||
FAST_MUTEX Mutex;
|
||||
PRTL_SPLAY_LINKS Cache;
|
||||
LIST_ENTRY TimerQueue;
|
||||
USHORT NumEntries;
|
||||
} TUNNEL, *PTUNNEL;
|
||||
|
||||
typedef struct _NOTIFY_SYNC
|
||||
{
|
||||
DWORD Unknown0; /* 0x00 */
|
||||
DWORD Unknown1; /* 0x04 */
|
||||
DWORD Unknown2; /* 0x08 */
|
||||
WORD Unknown3; /* 0x0c */
|
||||
WORD Unknown4; /* 0x0e */
|
||||
DWORD Unknown5; /* 0x10 */
|
||||
DWORD Unknown6; /* 0x14 */
|
||||
DWORD Unknown7; /* 0x18 */
|
||||
DWORD Unknown8; /* 0x1c */
|
||||
DWORD Unknown9; /* 0x20 */
|
||||
DWORD Unknown10; /* 0x24 */
|
||||
|
||||
} NOTIFY_SYNC, * PNOTIFY_SYNC;
|
||||
|
||||
|
||||
typedef struct _LARGE_MCB
|
||||
{
|
||||
PFAST_MUTEX FastMutex;
|
||||
ULONG MaximumPairCount;
|
||||
ULONG PairCount;
|
||||
POOL_TYPE PoolType;
|
||||
PVOID Mapping;
|
||||
} LARGE_MCB, *PLARGE_MCB;
|
||||
|
||||
|
||||
typedef VOID
|
||||
(*POPLOCK_WAIT_COMPLETE_ROUTINE)(PVOID Context,
|
||||
PIRP Irp);
|
||||
|
||||
typedef VOID
|
||||
(*POPLOCK_FS_PREPOST_IRP)(PVOID Context,
|
||||
PIRP Irp);
|
||||
|
||||
typedef PVOID OPLOCK, *POPLOCK;
|
||||
|
||||
#endif /* __INCLUDE_DDK_FSFUNCS_H */
|
||||
@@ -0,0 +1,309 @@
|
||||
#ifndef __INCLUDE_DDK_HALFUNCS_H
|
||||
#define __INCLUDE_DDK_HALFUNCS_H
|
||||
/* $Id: halfuncs.h,v 1.3 2002/09/08 10:47:44 chorns Exp $ */
|
||||
|
||||
VOID STDCALL
|
||||
HalAcquireDisplayOwnership(IN PHAL_RESET_DISPLAY_PARAMETERS ResetDisplayParameters);
|
||||
|
||||
NTSTATUS STDCALL
|
||||
HalAdjustResourceList(PCM_RESOURCE_LIST Resources);
|
||||
|
||||
NTSTATUS STDCALL
|
||||
HalAllocateAdapterChannel(IN PADAPTER_OBJECT AdapterObject,
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
IN ULONG NumberOfMapRegisters,
|
||||
IN PDRIVER_CONTROL ExecutionRoutine,
|
||||
IN PVOID Context);
|
||||
|
||||
PVOID STDCALL
|
||||
HalAllocateCommonBuffer(PADAPTER_OBJECT AdapterObject,
|
||||
ULONG Length,
|
||||
PPHYSICAL_ADDRESS LogicalAddress,
|
||||
BOOLEAN CacheEnabled);
|
||||
|
||||
PVOID STDCALL
|
||||
HalAllocateCrashDumpRegisters(IN PADAPTER_OBJECT AdapterObject,
|
||||
IN OUT PULONG NumberOfMapRegisters);
|
||||
|
||||
BOOLEAN STDCALL
|
||||
HalAllProcessorsStarted(VOID);
|
||||
|
||||
NTSTATUS STDCALL
|
||||
HalAssignSlotResources(
|
||||
PUNICODE_STRING RegistryPath,
|
||||
PUNICODE_STRING DriverClassName,
|
||||
PDRIVER_OBJECT DriverObject,
|
||||
PDEVICE_OBJECT DeviceObject,
|
||||
INTERFACE_TYPE BusType,
|
||||
ULONG BusNumber,
|
||||
ULONG SlotNumber,
|
||||
PCM_RESOURCE_LIST *AllocatedResources
|
||||
);
|
||||
|
||||
BOOLEAN STDCALL
|
||||
HalBeginSystemInterrupt(ULONG Vector,
|
||||
KIRQL Irql,
|
||||
PKIRQL OldIrql);
|
||||
|
||||
VOID STDCALL
|
||||
HalCalibratePerformanceCounter(ULONG Count);
|
||||
|
||||
/*
|
||||
FASTCALL
|
||||
HalClearSoftwareInterrupt
|
||||
*/
|
||||
|
||||
BOOLEAN STDCALL
|
||||
HalDisableSystemInterrupt(ULONG Vector,
|
||||
ULONG Unknown2);
|
||||
|
||||
VOID STDCALL
|
||||
HalDisplayString(IN PCH String);
|
||||
|
||||
BOOLEAN STDCALL
|
||||
HalEnableSystemInterrupt(ULONG Vector,
|
||||
ULONG Unknown2,
|
||||
ULONG Unknown3);
|
||||
|
||||
VOID STDCALL
|
||||
HalEndSystemInterrupt(KIRQL Irql,
|
||||
ULONG Unknown2);
|
||||
|
||||
|
||||
/* Is this function really exported ?? */
|
||||
VOID
|
||||
HalExamineMBR(PDEVICE_OBJECT DeviceObject,
|
||||
ULONG SectorSize,
|
||||
ULONG MBRTypeIdentifier,
|
||||
PVOID Buffer);
|
||||
|
||||
BOOLEAN STDCALL
|
||||
HalFlushCommonBuffer(ULONG Unknown1,
|
||||
ULONG Unknown2,
|
||||
ULONG Unknown3,
|
||||
ULONG Unknown4,
|
||||
ULONG Unknown5,
|
||||
ULONG Unknown6,
|
||||
ULONG Unknown7,
|
||||
ULONG Unknown8);
|
||||
|
||||
VOID STDCALL
|
||||
HalFreeCommonBuffer(PADAPTER_OBJECT AdapterObject,
|
||||
ULONG Length,
|
||||
PHYSICAL_ADDRESS LogicalAddress,
|
||||
PVOID VirtualAddress,
|
||||
BOOLEAN CacheEnabled);
|
||||
|
||||
PADAPTER_OBJECT STDCALL
|
||||
HalGetAdapter(PDEVICE_DESCRIPTION DeviceDescription,
|
||||
PULONG NumberOfMapRegisters);
|
||||
|
||||
ULONG STDCALL
|
||||
HalGetBusData(BUS_DATA_TYPE BusDataType,
|
||||
ULONG BusNumber,
|
||||
ULONG SlotNumber,
|
||||
PVOID Buffer,
|
||||
ULONG Length);
|
||||
|
||||
ULONG STDCALL
|
||||
HalGetBusDataByOffset(BUS_DATA_TYPE BusDataType,
|
||||
ULONG BusNumber,
|
||||
ULONG SlotNumber,
|
||||
PVOID Buffer,
|
||||
ULONG Offset,
|
||||
ULONG Length);
|
||||
|
||||
/* Is this function really exported ?? */
|
||||
ULONG
|
||||
HalGetDmaAlignmentRequirement(VOID);
|
||||
|
||||
BOOLEAN STDCALL
|
||||
HalGetEnvironmentVariable(IN PCH Name,
|
||||
OUT PCH Value,
|
||||
IN USHORT ValueLength);
|
||||
|
||||
ULONG STDCALL
|
||||
HalGetInterruptVector(INTERFACE_TYPE InterfaceType,
|
||||
ULONG BusNumber,
|
||||
ULONG BusInterruptLevel,
|
||||
ULONG BusInterruptVector,
|
||||
PKIRQL Irql,
|
||||
PKAFFINITY Affinity);
|
||||
|
||||
VOID STDCALL
|
||||
HalInitializeProcessor(ULONG ProcessorNumber,
|
||||
PVOID ProcessorStack);
|
||||
|
||||
BOOLEAN STDCALL
|
||||
HalInitSystem(ULONG BootPhase,
|
||||
PLOADER_PARAMETER_BLOCK LoaderBlock);
|
||||
|
||||
BOOLEAN STDCALL
|
||||
HalMakeBeep(ULONG Frequency);
|
||||
|
||||
VOID STDCALL
|
||||
HalQueryDisplayParameters(PULONG DispSizeX,
|
||||
PULONG DispSizeY,
|
||||
PULONG CursorPosX,
|
||||
PULONG CursorPosY);
|
||||
|
||||
VOID STDCALL
|
||||
HalQueryRealTimeClock(PTIME_FIELDS Time);
|
||||
|
||||
/* Is this function really exported ?? */
|
||||
VOID
|
||||
HalQuerySystemInformation(VOID);
|
||||
|
||||
ULONG STDCALL
|
||||
HalReadDmaCounter(PADAPTER_OBJECT AdapterObject);
|
||||
|
||||
VOID STDCALL
|
||||
HalReportResourceUsage(VOID);
|
||||
|
||||
VOID STDCALL
|
||||
HalRequestIpi(ULONG Unknown);
|
||||
|
||||
/*
|
||||
FASTCALL
|
||||
HalRequestSoftwareInterrupt
|
||||
*/
|
||||
|
||||
VOID STDCALL
|
||||
HalReturnToFirmware(ULONG Action);
|
||||
|
||||
ULONG STDCALL
|
||||
HalSetBusData(BUS_DATA_TYPE BusDataType,
|
||||
ULONG BusNumber,
|
||||
ULONG SlotNumber,
|
||||
PVOID Buffer,
|
||||
ULONG Length);
|
||||
|
||||
ULONG STDCALL
|
||||
HalSetBusDataByOffset(BUS_DATA_TYPE BusDataType,
|
||||
ULONG BusNumber,
|
||||
ULONG SlotNumber,
|
||||
PVOID Buffer,
|
||||
ULONG Offset,
|
||||
ULONG Length);
|
||||
|
||||
VOID STDCALL
|
||||
HalSetDisplayParameters(ULONG CursorPosX,
|
||||
ULONG CursorPosY);
|
||||
|
||||
BOOLEAN STDCALL
|
||||
HalSetEnvironmentVariable(IN PCH Name,
|
||||
IN PCH Value);
|
||||
|
||||
/*
|
||||
HalSetProfileInterval
|
||||
*/
|
||||
|
||||
VOID STDCALL
|
||||
HalSetRealTimeClock(PTIME_FIELDS Time);
|
||||
|
||||
/*
|
||||
HalSetTimeIncrement
|
||||
*/
|
||||
|
||||
BOOLEAN STDCALL
|
||||
HalStartNextProcessor(ULONG Unknown1,
|
||||
ULONG Unknown2);
|
||||
|
||||
/*
|
||||
HalStartProfileInterrupt
|
||||
*/
|
||||
|
||||
/*
|
||||
HalStopProfileInterrupt
|
||||
*/
|
||||
|
||||
ULONG FASTCALL
|
||||
HalSystemVectorDispatchEntry(ULONG Unknown1,
|
||||
ULONG Unknown2,
|
||||
ULONG Unknown3);
|
||||
|
||||
BOOLEAN STDCALL
|
||||
HalTranslateBusAddress(INTERFACE_TYPE InterfaceType,
|
||||
ULONG BusNumber,
|
||||
PHYSICAL_ADDRESS BusAddress,
|
||||
PULONG AddressSpace,
|
||||
PPHYSICAL_ADDRESS TranslatedAddress);
|
||||
|
||||
|
||||
/*
|
||||
* Kernel debugger support functions
|
||||
*/
|
||||
|
||||
BOOLEAN STDCALL
|
||||
KdPortInitialize(PKD_PORT_INFORMATION PortInformation,
|
||||
DWORD Unknown1,
|
||||
DWORD Unknown2);
|
||||
|
||||
BOOLEAN STDCALL
|
||||
KdPortGetByte(PUCHAR ByteRecieved);
|
||||
|
||||
BOOLEAN STDCALL
|
||||
KdPortPollByte(PUCHAR ByteRecieved);
|
||||
|
||||
VOID STDCALL
|
||||
KdPortPutByte(UCHAR ByteToSend);
|
||||
|
||||
|
||||
/*
|
||||
* Port I/O functions
|
||||
*/
|
||||
|
||||
VOID STDCALL
|
||||
READ_PORT_BUFFER_UCHAR(PUCHAR Port,
|
||||
PUCHAR Value,
|
||||
ULONG Count);
|
||||
|
||||
VOID STDCALL
|
||||
READ_PORT_BUFFER_ULONG(PULONG Port,
|
||||
PULONG Value,
|
||||
ULONG Count);
|
||||
|
||||
VOID STDCALL
|
||||
READ_PORT_BUFFER_USHORT(PUSHORT Port,
|
||||
PUSHORT Value,
|
||||
ULONG Count);
|
||||
|
||||
UCHAR STDCALL
|
||||
READ_PORT_UCHAR(PUCHAR Port);
|
||||
|
||||
ULONG STDCALL
|
||||
READ_PORT_ULONG(PULONG Port);
|
||||
|
||||
USHORT STDCALL
|
||||
READ_PORT_USHORT(PUSHORT Port);
|
||||
|
||||
VOID STDCALL
|
||||
WRITE_PORT_BUFFER_UCHAR(PUCHAR Port,
|
||||
PUCHAR Value,
|
||||
ULONG Count);
|
||||
|
||||
VOID STDCALL
|
||||
WRITE_PORT_BUFFER_ULONG(PULONG Port,
|
||||
PULONG Value,
|
||||
ULONG Count);
|
||||
|
||||
VOID STDCALL
|
||||
WRITE_PORT_BUFFER_USHORT(PUSHORT Port,
|
||||
PUSHORT Value,
|
||||
ULONG Count);
|
||||
|
||||
VOID STDCALL
|
||||
WRITE_PORT_UCHAR(PUCHAR Port,
|
||||
UCHAR Value);
|
||||
|
||||
VOID STDCALL
|
||||
WRITE_PORT_ULONG(PULONG Port,
|
||||
ULONG Value);
|
||||
|
||||
VOID STDCALL
|
||||
WRITE_PORT_USHORT(PUSHORT Port,
|
||||
USHORT Value);
|
||||
|
||||
#endif /* __INCLUDE_DDK_HALDDK_H */
|
||||
|
||||
/* EOF */
|
||||
@@ -0,0 +1,436 @@
|
||||
/* $Id: haltypes.h,v 1.5 2002/09/08 10:47:44 chorns Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
* FILE: include/ddk/haltypes.h
|
||||
* PURPOSE: HAL provided defintions for device drivers
|
||||
* PROGRAMMER: David Welch ([email protected])
|
||||
* REVISION HISTORY:
|
||||
* 23/06/98: Taken from linux system.h
|
||||
*/
|
||||
|
||||
|
||||
#ifndef __INCLUDE_DDK_HALTYPES_H
|
||||
#define __INCLUDE_DDK_HALTYPES_H
|
||||
|
||||
|
||||
/* HalReturnToFirmware */
|
||||
#define FIRMWARE_HALT 1
|
||||
#define FIRMWARE_REBOOT 3
|
||||
|
||||
enum
|
||||
{
|
||||
DEVICE_DESCRIPTION_VERSION,
|
||||
DEVICE_DESCRIPTION_VERSION1,
|
||||
};
|
||||
|
||||
typedef ULONG DMA_WIDTH;
|
||||
typedef ULONG DMA_SPEED;
|
||||
|
||||
/*
|
||||
* PURPOSE: Types for HalGetBusData
|
||||
*/
|
||||
typedef enum _BUS_DATA_TYPE
|
||||
{
|
||||
ConfigurationSpaceUndefined = -1,
|
||||
Cmos,
|
||||
EisaConfiguration,
|
||||
Pos,
|
||||
CbusConfiguration,
|
||||
PCIConfiguration,
|
||||
VMEConfiguration,
|
||||
NuBusConfiguration,
|
||||
PCMCIAConfiguration,
|
||||
MPIConfiguration,
|
||||
MPSAConfiguration,
|
||||
PNPISAConfiguration,
|
||||
MaximumBusDataType,
|
||||
} BUS_DATA_TYPE, *PBUS_DATA_TYPE;
|
||||
|
||||
typedef struct _DEVICE_DESCRIPTION
|
||||
{
|
||||
ULONG Version;
|
||||
BOOLEAN Master;
|
||||
BOOLEAN ScatterGather;
|
||||
BOOLEAN DemandMode;
|
||||
BOOLEAN AutoInitialize;
|
||||
BOOLEAN Dma32BitAddress;
|
||||
BOOLEAN IgnoreCount;
|
||||
BOOLEAN Reserved1;
|
||||
BOOLEAN Reserved2;
|
||||
ULONG BusNumber;
|
||||
ULONG DmaChannel;
|
||||
INTERFACE_TYPE InterfaceType;
|
||||
DMA_WIDTH DmaWidth;
|
||||
DMA_SPEED DmaSpeed;
|
||||
ULONG MaximumLength;
|
||||
ULONG DmaPort;
|
||||
} DEVICE_DESCRIPTION, *PDEVICE_DESCRIPTION;
|
||||
|
||||
|
||||
/* PCI bus definitions */
|
||||
|
||||
#define PCI_TYPE0_ADDRESSES 6
|
||||
#define PCI_TYPE1_ADDRESSES 2
|
||||
#define PCI_TYPE2_ADDRESSES 5
|
||||
|
||||
typedef struct _PCI_COMMON_CONFIG
|
||||
{
|
||||
USHORT VendorID; /* read-only */
|
||||
USHORT DeviceID; /* read-only */
|
||||
USHORT Command;
|
||||
USHORT Status;
|
||||
UCHAR RevisionID; /* read-only */
|
||||
UCHAR ProgIf; /* read-only */
|
||||
UCHAR SubClass; /* read-only */
|
||||
UCHAR BaseClass; /* read-only */
|
||||
UCHAR CacheLineSize; /* read-only */
|
||||
UCHAR LatencyTimer; /* read-only */
|
||||
UCHAR HeaderType; /* read-only */
|
||||
UCHAR BIST;
|
||||
union
|
||||
{
|
||||
struct _PCI_HEADER_TYPE_0
|
||||
{
|
||||
ULONG BaseAddresses[PCI_TYPE0_ADDRESSES];
|
||||
ULONG CIS;
|
||||
USHORT SubVendorID;
|
||||
USHORT SubSystemID;
|
||||
ULONG ROMBaseAddress;
|
||||
ULONG Reserved2[2];
|
||||
|
||||
UCHAR InterruptLine;
|
||||
UCHAR InterruptPin; /* read-only */
|
||||
UCHAR MinimumGrant; /* read-only */
|
||||
UCHAR MaximumLatency; /* read-only */
|
||||
} type0;
|
||||
|
||||
/* PCI to PCI Bridge */
|
||||
struct _PCI_HEADER_TYPE_1
|
||||
{
|
||||
ULONG BaseAddresses[PCI_TYPE1_ADDRESSES];
|
||||
UCHAR PrimaryBus;
|
||||
UCHAR SecondaryBus;
|
||||
UCHAR SubordinateBus;
|
||||
UCHAR SecondaryLatency;
|
||||
UCHAR IOBase;
|
||||
UCHAR IOLimit;
|
||||
USHORT SecondaryStatus;
|
||||
USHORT MemoryBase;
|
||||
USHORT MemoryLimit;
|
||||
USHORT PrefetchBase;
|
||||
USHORT PrefetchLimit;
|
||||
ULONG PrefetchBaseUpper32;
|
||||
ULONG PrefetchLimitUpper32;
|
||||
USHORT IOBaseUpper16;
|
||||
USHORT IOLimitUpper16;
|
||||
UCHAR CapabilitiesPtr;
|
||||
UCHAR Reserved1[3];
|
||||
ULONG ROMBaseAddress;
|
||||
UCHAR InterruptLine;
|
||||
UCHAR InterruptPin;
|
||||
USHORT BridgeControl;
|
||||
} type1;
|
||||
|
||||
/* PCI to CARDBUS Bridge */
|
||||
struct _PCI_HEADER_TYPE_2
|
||||
{
|
||||
ULONG SocketRegistersBaseAddress;
|
||||
UCHAR CapabilitiesPtr;
|
||||
UCHAR Reserved;
|
||||
USHORT SecondaryStatus;
|
||||
UCHAR PrimaryBus;
|
||||
UCHAR SecondaryBus;
|
||||
UCHAR SubordinateBus;
|
||||
UCHAR SecondaryLatency;
|
||||
struct
|
||||
{
|
||||
ULONG Base;
|
||||
ULONG Limit;
|
||||
} Range[PCI_TYPE2_ADDRESSES-1];
|
||||
UCHAR InterruptLine;
|
||||
UCHAR InterruptPin;
|
||||
USHORT BridgeControl;
|
||||
} type2;
|
||||
} u;
|
||||
UCHAR DeviceSpecific[192];
|
||||
} PCI_COMMON_CONFIG, *PPCI_COMMON_CONFIG;
|
||||
|
||||
#define PCI_COMMON_HDR_LENGTH (FIELD_OFFSET (PCI_COMMON_CONFIG, DeviceSpecific))
|
||||
|
||||
#define PCI_MAX_DEVICES 32
|
||||
#define PCI_MAX_FUNCTION 8
|
||||
|
||||
#define PCI_INVALID_VENDORID 0xFFFF
|
||||
|
||||
|
||||
/* Bit encodings for PCI_COMMON_CONFIG.HeaderType */
|
||||
|
||||
#define PCI_MULTIFUNCTION 0x80
|
||||
#define PCI_DEVICE_TYPE 0x00
|
||||
#define PCI_BRIDGE_TYPE 0x01
|
||||
|
||||
|
||||
/* Bit encodings for PCI_COMMON_CONFIG.Command */
|
||||
|
||||
#define PCI_ENABLE_IO_SPACE 0x0001
|
||||
#define PCI_ENABLE_MEMORY_SPACE 0x0002
|
||||
#define PCI_ENABLE_BUS_MASTER 0x0004
|
||||
#define PCI_ENABLE_SPECIAL_CYCLES 0x0008
|
||||
#define PCI_ENABLE_WRITE_AND_INVALIDATE 0x0010
|
||||
#define PCI_ENABLE_VGA_COMPATIBLE_PALETTE 0x0020
|
||||
#define PCI_ENABLE_PARITY 0x0040
|
||||
#define PCI_ENABLE_WAIT_CYCLE 0x0080
|
||||
#define PCI_ENABLE_SERR 0x0100
|
||||
#define PCI_ENABLE_FAST_BACK_TO_BACK 0x0200
|
||||
|
||||
|
||||
/* Bit encodings for PCI_COMMON_CONFIG.Status */
|
||||
|
||||
#define PCI_STATUS_FAST_BACK_TO_BACK 0x0080
|
||||
#define PCI_STATUS_DATA_PARITY_DETECTED 0x0100
|
||||
#define PCI_STATUS_DEVSEL 0x0600 /* 2 bits wide */
|
||||
#define PCI_STATUS_SIGNALED_TARGET_ABORT 0x0800
|
||||
#define PCI_STATUS_RECEIVED_TARGET_ABORT 0x1000
|
||||
#define PCI_STATUS_RECEIVED_MASTER_ABORT 0x2000
|
||||
#define PCI_STATUS_SIGNALED_SYSTEM_ERROR 0x4000
|
||||
#define PCI_STATUS_DETECTED_PARITY_ERROR 0x8000
|
||||
|
||||
|
||||
/* Bit encodes for PCI_COMMON_CONFIG.u.type0.BaseAddresses */
|
||||
|
||||
#define PCI_ADDRESS_IO_SPACE 0x00000001
|
||||
#define PCI_ADDRESS_MEMORY_TYPE_MASK 0x00000006
|
||||
#define PCI_ADDRESS_MEMORY_PREFETCHABLE 0x00000008
|
||||
|
||||
#define PCI_TYPE_32BIT 0
|
||||
#define PCI_TYPE_20BIT 2
|
||||
#define PCI_TYPE_64BIT 4
|
||||
|
||||
|
||||
/* Bit encodes for PCI_COMMON_CONFIG.u.type0.ROMBaseAddresses */
|
||||
|
||||
#define PCI_ROMADDRESS_ENABLED 0x00000001
|
||||
|
||||
|
||||
typedef struct _PCI_SLOT_NUMBER
|
||||
{
|
||||
union
|
||||
{
|
||||
struct
|
||||
{
|
||||
ULONG DeviceNumber:5;
|
||||
ULONG FunctionNumber:3;
|
||||
ULONG Reserved:24;
|
||||
} bits;
|
||||
ULONG AsULONG;
|
||||
} u;
|
||||
} PCI_SLOT_NUMBER, *PPCI_SLOT_NUMBER;
|
||||
|
||||
|
||||
/* Hal dispatch table */
|
||||
|
||||
typedef enum _HAL_QUERY_INFORMATION_CLASS
|
||||
{
|
||||
HalInstalledBusInformation,
|
||||
HalProfileSourceInformation,
|
||||
HalSystemDockInformation,
|
||||
HalPowerInformation,
|
||||
HalProcessorSpeedInformation,
|
||||
HalCallbackInformation,
|
||||
HalMapRegisterInformation,
|
||||
HalMcaLogInformation,
|
||||
HalFrameBufferCachingInformation,
|
||||
HalDisplayBiosInformation
|
||||
/* information levels >= 0x8000000 reserved for OEM use */
|
||||
} HAL_QUERY_INFORMATION_CLASS, *PHAL_QUERY_INFORMATION_CLASS;
|
||||
|
||||
|
||||
typedef enum _HAL_SET_INFORMATION_CLASS
|
||||
{
|
||||
HalProfileSourceInterval,
|
||||
HalProfileSourceInterruptHandler,
|
||||
HalMcaRegisterDriver
|
||||
} HAL_SET_INFORMATION_CLASS, *PHAL_SET_INFORMATION_CLASS;
|
||||
|
||||
|
||||
typedef struct _BUS_HANDLER *PBUS_HANDLER;
|
||||
typedef struct _DEVICE_HANDLER_OBJECT *PDEVICE_HANDLER_OBJECT;
|
||||
|
||||
|
||||
typedef BOOLEAN STDCALL
|
||||
(*PHAL_RESET_DISPLAY_PARAMETERS)(ULONG Columns, ULONG Rows);
|
||||
|
||||
typedef NTSTATUS STDCALL
|
||||
(*pHalQuerySystemInformation)(IN HAL_QUERY_INFORMATION_CLASS InformationClass,
|
||||
IN ULONG BufferSize,
|
||||
IN OUT PVOID Buffer,
|
||||
OUT PULONG ReturnedLength);
|
||||
|
||||
|
||||
typedef NTSTATUS STDCALL
|
||||
(*pHalSetSystemInformation)(IN HAL_SET_INFORMATION_CLASS InformationClass,
|
||||
IN ULONG BufferSize,
|
||||
IN PVOID Buffer);
|
||||
|
||||
|
||||
typedef NTSTATUS STDCALL
|
||||
(*pHalQueryBusSlots)(IN PBUS_HANDLER BusHandler,
|
||||
IN ULONG BufferSize,
|
||||
OUT PULONG SlotNumbers,
|
||||
OUT PULONG ReturnedLength);
|
||||
|
||||
|
||||
/* Control codes of HalDeviceControl function */
|
||||
#define BCTL_EJECT 0x0001
|
||||
#define BCTL_QUERY_DEVICE_ID 0x0002
|
||||
#define BCTL_QUERY_DEVICE_UNIQUE_ID 0x0003
|
||||
#define BCTL_QUERY_DEVICE_CAPABILITIES 0x0004
|
||||
#define BCTL_QUERY_DEVICE_RESOURCES 0x0005
|
||||
#define BCTL_QUERY_DEVICE_RESOURCE_REQUIREMENTS 0x0006
|
||||
#define BCTL_QUERY_EJECT 0x0007
|
||||
#define BCTL_SET_LOCK 0x0008
|
||||
#define BCTL_SET_POWER 0x0009
|
||||
#define BCTL_SET_RESUME 0x000A
|
||||
#define BCTL_SET_DEVICE_RESOURCES 0x000B
|
||||
|
||||
/* Defines for BCTL structures */
|
||||
typedef struct
|
||||
{
|
||||
BOOLEAN PowerSupported;
|
||||
BOOLEAN ResumeSupported;
|
||||
BOOLEAN LockSupported;
|
||||
BOOLEAN EjectSupported;
|
||||
BOOLEAN Removable;
|
||||
} BCTL_DEVICE_CAPABILITIES, *PBCTL_DEVICE_CAPABILITIES;
|
||||
|
||||
|
||||
typedef struct _DEVICE_CONTROL_CONTEXT
|
||||
{
|
||||
NTSTATUS Status;
|
||||
PDEVICE_HANDLER_OBJECT DeviceHandler;
|
||||
PDEVICE_OBJECT DeviceObject;
|
||||
ULONG ControlCode;
|
||||
PVOID Buffer;
|
||||
PULONG BufferLength;
|
||||
PVOID Context;
|
||||
} DEVICE_CONTROL_CONTEXT, *PDEVICE_CONTROL_CONTEXT;
|
||||
|
||||
|
||||
typedef VOID STDCALL
|
||||
(*PDEVICE_CONTROL_COMPLETION)(IN PDEVICE_CONTROL_CONTEXT ControlContext);
|
||||
|
||||
|
||||
typedef NTSTATUS STDCALL
|
||||
(*pHalDeviceControl)(IN PDEVICE_HANDLER_OBJECT DeviceHandler,
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
IN ULONG ControlCode,
|
||||
IN OUT PVOID Buffer OPTIONAL,
|
||||
IN OUT PULONG BufferLength OPTIONAL,
|
||||
IN PVOID Context,
|
||||
IN PDEVICE_CONTROL_COMPLETION CompletionRoutine);
|
||||
|
||||
typedef VOID FASTCALL
|
||||
(*pHalExamineMBR)(IN PDEVICE_OBJECT DeviceObject,
|
||||
IN ULONG SectorSize,
|
||||
IN ULONG MBRTypeIdentifier,
|
||||
OUT PVOID *Buffer);
|
||||
|
||||
typedef VOID FASTCALL
|
||||
(*pHalIoAssignDriveLetters)(IN PLOADER_PARAMETER_BLOCK LoaderBlock,
|
||||
IN PSTRING NtDeviceName,
|
||||
OUT PUCHAR NtSystemPath,
|
||||
OUT PSTRING NtSystemPathString);
|
||||
|
||||
typedef NTSTATUS FASTCALL
|
||||
(*pHalIoReadPartitionTable)(IN PDEVICE_OBJECT DeviceObject,
|
||||
IN ULONG SectorSize,
|
||||
IN BOOLEAN ReturnRecognizedPartitions,
|
||||
OUT PDRIVE_LAYOUT_INFORMATION *PartitionBuffer);
|
||||
|
||||
typedef NTSTATUS FASTCALL
|
||||
(*pHalIoSetPartitionInformation)(IN PDEVICE_OBJECT DeviceObject,
|
||||
IN ULONG SectorSize,
|
||||
IN ULONG PartitionNumber,
|
||||
IN ULONG PartitionType);
|
||||
|
||||
typedef NTSTATUS FASTCALL
|
||||
(*pHalIoWritePartitionTable)(IN PDEVICE_OBJECT DeviceObject,
|
||||
IN ULONG SectorSize,
|
||||
IN ULONG SectorsPerTrack,
|
||||
IN ULONG NumberOfHeads,
|
||||
IN PDRIVE_LAYOUT_INFORMATION PartitionBuffer);
|
||||
|
||||
typedef PBUS_HANDLER FASTCALL
|
||||
(*pHalHandlerForBus)(IN INTERFACE_TYPE InterfaceType,
|
||||
IN ULONG BusNumber);
|
||||
|
||||
typedef VOID FASTCALL
|
||||
(*pHalReferenceBusHandler)(IN PBUS_HANDLER BusHandler);
|
||||
|
||||
|
||||
typedef struct _HAL_DISPATCH
|
||||
{
|
||||
ULONG Version;
|
||||
pHalQuerySystemInformation HalQuerySystemInformation;
|
||||
pHalSetSystemInformation HalSetSystemInformation;
|
||||
pHalQueryBusSlots HalQueryBusSlots;
|
||||
pHalDeviceControl HalDeviceControl;
|
||||
pHalExamineMBR HalExamineMBR;
|
||||
pHalIoAssignDriveLetters HalIoAssignDriveLetters;
|
||||
pHalIoReadPartitionTable HalIoReadPartitionTable;
|
||||
pHalIoSetPartitionInformation HalIoSetPartitionInformation;
|
||||
pHalIoWritePartitionTable HalIoWritePartitionTable;
|
||||
pHalHandlerForBus HalReferenceHandlerForBus;
|
||||
pHalReferenceBusHandler HalReferenceBusHandler;
|
||||
pHalReferenceBusHandler HalDereferenceBusHandler;
|
||||
} HAL_DISPATCH, *PHAL_DISPATCH;
|
||||
|
||||
#define HAL_DISPATCH_VERSION 1
|
||||
|
||||
#ifdef __NTOSKRNL__
|
||||
extern HAL_DISPATCH EXPORTED HalDispatchTable;
|
||||
#else
|
||||
extern HAL_DISPATCH IMPORTED HalDispatchTable;
|
||||
#endif
|
||||
|
||||
|
||||
/* Hal private dispatch table */
|
||||
|
||||
typedef struct _HAL_PRIVATE_DISPATCH
|
||||
{
|
||||
ULONG Version;
|
||||
} HAL_PRIVATE_DISPATCH, *PHAL_PRIVATE_DISPATCH;
|
||||
|
||||
#define HAL_PRIVATE_DISPATCH_VERSION 1
|
||||
|
||||
|
||||
#ifdef __NTOSKRNL__
|
||||
extern HAL_PRIVATE_DISPATCH EXPORTED HalPrivateDispatchTable;
|
||||
#else
|
||||
extern HAL_PRIVATE_DISPATCH IMPORTED HalPrivateDispatchTable;
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Kernel debugger section
|
||||
*/
|
||||
|
||||
typedef struct _KD_PORT_INFORMATION
|
||||
{
|
||||
ULONG ComPort;
|
||||
ULONG BaudRate;
|
||||
ULONG BaseAddress;
|
||||
} KD_PORT_INFORMATION, *PKD_PORT_INFORMATION;
|
||||
|
||||
|
||||
#ifdef __NTHAL__
|
||||
extern ULONG EXPORTED KdComPortInUse;
|
||||
#else
|
||||
extern ULONG IMPORTED KdComPortInUse;
|
||||
#endif
|
||||
|
||||
#endif /* __INCLUDE_DDK_HALTYPES_H */
|
||||
|
||||
/* EOF */
|
||||
@@ -0,0 +1,7 @@
|
||||
/*
|
||||
* PURPOSE: The number of device specific level levels
|
||||
*/
|
||||
#define NR_DEVICE_SPECIFIC_LEVELS (16)
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
#ifndef __INCLUDE_DDK_I386_PAGESIZE_H
|
||||
#define __INCLUDE_DDK_I386_PAGESIZE_H
|
||||
|
||||
#define PAGESIZE (4096)
|
||||
|
||||
#endif /* __INCLUDE_DDK_I386_PAGESIZE_H */
|
||||
@@ -0,0 +1,57 @@
|
||||
/*
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __INCLUDE_DDK_I386_TSS_H
|
||||
#define __INCLUDE_DDK_I386_TSS_H
|
||||
|
||||
#define KTSS_ESP0 (0x4)
|
||||
|
||||
#ifndef __ASM__
|
||||
|
||||
typedef struct _KTSS
|
||||
{
|
||||
USHORT PreviousTask;
|
||||
USHORT Reserved1;
|
||||
ULONG Esp0;
|
||||
USHORT Ss0;
|
||||
USHORT Reserved2;
|
||||
ULONG Esp1;
|
||||
USHORT Ss1;
|
||||
USHORT Reserved3;
|
||||
ULONG Esp2;
|
||||
USHORT Ss2;
|
||||
USHORT Reserved4;
|
||||
ULONG Cr3;
|
||||
ULONG Eip;
|
||||
ULONG Eflags;
|
||||
ULONG Eax;
|
||||
ULONG Ecx;
|
||||
ULONG Edx;
|
||||
ULONG Ebx;
|
||||
ULONG Esp;
|
||||
ULONG Ebp;
|
||||
ULONG Esi;
|
||||
ULONG Edi;
|
||||
USHORT Es;
|
||||
USHORT Reserved5;
|
||||
USHORT Cs;
|
||||
USHORT Reserved6;
|
||||
USHORT Ss;
|
||||
USHORT Reserved7;
|
||||
USHORT Ds;
|
||||
USHORT Reserved8;
|
||||
USHORT Fs;
|
||||
USHORT Reserved9;
|
||||
USHORT Gs;
|
||||
USHORT Reserved10;
|
||||
USHORT Ldt;
|
||||
USHORT Reserved11;
|
||||
USHORT Trap;
|
||||
USHORT IoMapBase;
|
||||
UCHAR IoBitmap[1];
|
||||
} KTSS __attribute__((packed));
|
||||
|
||||
#endif /* not __ASM__ */
|
||||
|
||||
#endif /* __INCLUDE_DDK_I386_TSS_H */
|
||||
@@ -0,0 +1,23 @@
|
||||
#ifndef __INCLUDE_DDK_IOCTRL_H
|
||||
#define __INCLUDE_DDK_IOCTRL_H
|
||||
|
||||
|
||||
#define CTL_CODE(Dev, Func, Meth, Acc) ( ((Dev)<<16) | ((Acc)<<14) | ((Func)<<2) | (Meth))
|
||||
|
||||
|
||||
#define DEVICE_TYPE_FROM_CTL_CODE(ctlCode) (((ULONG)(ctlCode&0xffff0000))>>16)
|
||||
#define IO_METHOD_FROM_CTL_CODE(ctlCode) (ctlCode&0x00000003)
|
||||
|
||||
|
||||
// IOCTL Parameter buffering methods
|
||||
#define METHOD_BUFFERED 0
|
||||
#define METHOD_IN_DIRECT 1
|
||||
#define METHOD_OUT_DIRECT 2
|
||||
#define METHOD_NEITHER 3
|
||||
|
||||
// IOCTL File access type
|
||||
#define FILE_ANY_ACCESS 0
|
||||
#define FILE_READ_ACCESS 1
|
||||
#define FILE_WRITE_ACCESS 2
|
||||
|
||||
#endif /* __INCLUDE_DDK_IOCTRL_H */
|
||||
@@ -0,0 +1,393 @@
|
||||
#ifndef __INCLUDE_DDK_IODEF_H
|
||||
#define __INCLUDE_DDK_IODEF_H
|
||||
|
||||
typedef enum _IO_QUERY_DEVICE_DESCRIPTION
|
||||
{
|
||||
IoQueryDeviceIdentifier = 0,
|
||||
IoQueryDeviceConfigurationData,
|
||||
IoQueryDeviceComponentInformation,
|
||||
IoQueryDeviceDataFormatMaximum,
|
||||
} IO_QUERY_DEVICE_DESCRIPTION, *PIO_QUERY_DEVICE_DESCRIPTION;
|
||||
|
||||
typedef enum _CONFIGURATION_TYPE
|
||||
{
|
||||
DiskController,
|
||||
ParallelController,
|
||||
MaximumType,
|
||||
} CONFIGURATION_TYPE, *PCONFIGURATION_TYPE;
|
||||
|
||||
typedef enum _CM_RESOURCE_TYPE
|
||||
{
|
||||
CmResourceTypePort = 1,
|
||||
CmResourceTypeInterrupt,
|
||||
CmResourceTypeMemory,
|
||||
CmResourceTypeDma,
|
||||
CmResourceTypeDeviceSpecific,
|
||||
CmResourceTypeMaximum,
|
||||
} CM_RESOURCE_TYPE;
|
||||
|
||||
typedef enum _CM_SHARE_DISPOSITION
|
||||
{
|
||||
CmResourceShareDeviceExclusive = 1,
|
||||
CmResourceShareDriverExclusive,
|
||||
CmResourceShareShared,
|
||||
CmResourceShareMaximum,
|
||||
} CM_SHARE_DISPOSITION;
|
||||
|
||||
enum
|
||||
{
|
||||
CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE,
|
||||
CM_RESOURCE_INTERRUPT_LATCHED,
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
CM_RESOURCE_PORT_MEMORY,
|
||||
CM_RESOURCE_PORT_IO,
|
||||
};
|
||||
|
||||
/*
|
||||
* PURPOSE: Irp flags
|
||||
*/
|
||||
enum
|
||||
{
|
||||
IRP_NOCACHE = 0x1,
|
||||
IRP_PAGING_IO = 0x2,
|
||||
IRP_MOUNT_COMPLETION = 0x2,
|
||||
IRP_SYNCHRONOUS_API = 0x4,
|
||||
IRP_ASSOCIATED_IRP = 0x8,
|
||||
IRP_BUFFERED_IO = 0x10,
|
||||
IRP_DEALLOCATE_BUFFER = 0x20,
|
||||
IRP_INPUT_OPERATION = 0x40,
|
||||
IRP_SYNCHRONOUS_PAGING_IO = 0x40,
|
||||
IRP_CREATE_OPERATION = 0x80,
|
||||
IRP_READ_OPERATION = 0x100,
|
||||
IRP_WRITE_OPERATION = 0x200,
|
||||
IRP_CLOSE_OPERATION = 0x400,
|
||||
IRP_DEFER_IO_COMPLETION = 0x800,
|
||||
IRP_OB_QUERY_NAME = 0x1000,
|
||||
IRP_HOLD_DEVICE_QUEUE = 0x2000,
|
||||
IRP_RETRY_IO_COMPLETION = 0x4000
|
||||
};
|
||||
|
||||
#define SL_FORCE_ACCESS_CHECK (0x1)
|
||||
#define SL_OPEN_PAGING_FILE (0x2)
|
||||
#define SL_OPEN_TARGET_DIRECTORY (0x4)
|
||||
#define SL_CASE_SENSITIVE (0x80)
|
||||
|
||||
#define SL_KEY_SPECIFIED (0x1)
|
||||
#define SL_OVERRIDE_VERIFY_VOLUME (0x2)
|
||||
#define SL_WRITE_THROUGHT (0x4)
|
||||
#define SL_FT_SEQUENTIAL_WRITE (0x8)
|
||||
|
||||
#define SL_FAIL_IMMEDIATELY (0x1)
|
||||
#define SL_EXCLUSIVE_LOCK (0x2)
|
||||
|
||||
#define SL_WATCH_TREE (0x1)
|
||||
|
||||
#define SL_RESTART_SCAN (0x1)
|
||||
#define SL_RETURN_SINGLE_ENTRY (0x2)
|
||||
#define SL_INDEX_SPECIFIED (0x4)
|
||||
|
||||
#define SL_ALLOW_RAW_MOUNT (0x1)
|
||||
|
||||
#define SL_PENDING_RETURNED 0x01
|
||||
#define SL_INVOKE_ON_CANCEL 0x20
|
||||
#define SL_INVOKE_ON_SUCCESS 0x40
|
||||
#define SL_INVOKE_ON_ERROR 0x80
|
||||
|
||||
/*
|
||||
* Possible flags for the device object flags
|
||||
*/
|
||||
#define DO_UNLOAD_PENDING 0x00000001
|
||||
#define DO_VERIFY_VOLUME 0x00000002
|
||||
#define DO_BUFFERED_IO 0x00000004
|
||||
#define DO_EXCLUSIVE 0x00000008
|
||||
#define DO_DIRECT_IO 0x00000010
|
||||
#define DO_MAP_IO_BUFFER 0x00000020
|
||||
#define DO_DEVICE_HAS_NAME 0x00000040
|
||||
#define DO_DEVICE_INITIALIZING 0x00000080
|
||||
#define DO_SYSTEM_BOOT_PARTITION 0x00000100
|
||||
#define DO_LONG_TERM_REQUESTS 0x00000200
|
||||
#define DO_NEVER_LAST_DEVICE 0x00000400
|
||||
#define DO_SHUTDOWN_REGISTERED 0x00000800
|
||||
#define DO_BUS_ENUMERATED_DEVICE 0x00001000
|
||||
#define DO_POWER_PAGABLE 0x00002000
|
||||
#define DO_POWER_INRUSH 0x00004000
|
||||
#define DO_LOW_PRIORITY_FILESYSTEM 0x00010000
|
||||
|
||||
/*
|
||||
* Possible device types
|
||||
*/
|
||||
#define FILE_DEVICE_BEEP 0x00000001
|
||||
#define FILE_DEVICE_CD_ROM 0x00000002
|
||||
#define FILE_DEVICE_CD_ROM_FILE_SYSTEM 0x00000003
|
||||
#define FILE_DEVICE_CONTROLLER 0x00000004
|
||||
#define FILE_DEVICE_DATALINK 0x00000005
|
||||
#define FILE_DEVICE_DFS 0x00000006
|
||||
#define FILE_DEVICE_DISK 0x00000007
|
||||
#define FILE_DEVICE_DISK_FILE_SYSTEM 0x00000008
|
||||
#define FILE_DEVICE_FILE_SYSTEM 0x00000009
|
||||
#define FILE_DEVICE_INPORT_PORT 0x0000000a
|
||||
#define FILE_DEVICE_KEYBOARD 0x0000000b
|
||||
#define FILE_DEVICE_MAILSLOT 0x0000000c
|
||||
#define FILE_DEVICE_MIDI_IN 0x0000000d
|
||||
#define FILE_DEVICE_MIDI_OUT 0x0000000e
|
||||
#define FILE_DEVICE_MOUSE 0x0000000f
|
||||
#define FILE_DEVICE_MULTI_UNC_PROVIDER 0x00000010
|
||||
#define FILE_DEVICE_NAMED_PIPE 0x00000011
|
||||
#define FILE_DEVICE_NETWORK 0x00000012
|
||||
#define FILE_DEVICE_NETWORK_BROWSER 0x00000013
|
||||
#define FILE_DEVICE_NETWORK_FILE_SYSTEM 0x00000014
|
||||
#define FILE_DEVICE_NULL 0x00000015
|
||||
#define FILE_DEVICE_PARALLEL_PORT 0x00000016
|
||||
#define FILE_DEVICE_PHYSICAL_NETCARD 0x00000017
|
||||
#define FILE_DEVICE_PRINTER 0x00000018
|
||||
#define FILE_DEVICE_SCANNER 0x00000019
|
||||
#define FILE_DEVICE_SERIAL_MOUSE_PORT 0x0000001a
|
||||
#define FILE_DEVICE_SERIAL_PORT 0x0000001b
|
||||
#define FILE_DEVICE_SCREEN 0x0000001c
|
||||
#define FILE_DEVICE_SOUND 0x0000001d
|
||||
#define FILE_DEVICE_STREAMS 0x0000001e
|
||||
#define FILE_DEVICE_TAPE 0x0000001f
|
||||
#define FILE_DEVICE_TAPE_FILE_SYSTEM 0x00000020
|
||||
#define FILE_DEVICE_TRANSPORT 0x00000021
|
||||
#define FILE_DEVICE_UNKNOWN 0x00000022
|
||||
#define FILE_DEVICE_VIDEO 0x00000023
|
||||
#define FILE_DEVICE_VIRTUAL_DISK 0x00000024
|
||||
#define FILE_DEVICE_WAVE_IN 0x00000025
|
||||
#define FILE_DEVICE_WAVE_OUT 0x00000026
|
||||
#define FILE_DEVICE_8042_PORT 0x00000027
|
||||
#define FILE_DEVICE_NETWORK_REDIRECTOR 0x00000028
|
||||
#define FILE_DEVICE_BATTERY 0x00000029
|
||||
#define FILE_DEVICE_BUS_EXTENDER 0x0000002a
|
||||
#define FILE_DEVICE_MODEM 0x0000002b
|
||||
#define FILE_DEVICE_VDM 0x0000002c
|
||||
#define FILE_DEVICE_MASS_STORAGE 0x0000002d
|
||||
#define FILE_DEVICE_SMB 0x0000002e
|
||||
#define FILE_DEVICE_KS 0x0000002f
|
||||
#define FILE_DEVICE_CHANGER 0x00000030
|
||||
#define FILE_DEVICE_SMARTCARD 0x00000031
|
||||
#define FILE_DEVICE_ACPI 0x00000032
|
||||
#define FILE_DEVICE_DVD 0x00000033
|
||||
#define FILE_DEVICE_FULLSCREEN_VIDEO 0x00000034
|
||||
#define FILE_DEVICE_DFS_FILE_SYSTEM 0x00000035
|
||||
#define FILE_DEVICE_DFS_VOLUME 0x00000036
|
||||
#define FILE_DEVICE_SERENUM 0x00000037
|
||||
#define FILE_DEVICE_TERMSRV 0x00000038
|
||||
#define FILE_DEVICE_KSEC 0x00000039
|
||||
|
||||
#define FILE_REMOVABLE_MEDIA 0x00000001
|
||||
#define FILE_READ_ONLY_DEVICE 0x00000002
|
||||
#define FILE_FLOPPY_DISKETTE 0x00000004
|
||||
#define FILE_WRITE_ONCE_MEDIA 0x00000008
|
||||
#define FILE_REMOTE_DEVICE 0x00000010
|
||||
#define FILE_DEVICE_IS_MOUNTED 0x00000020
|
||||
#define FILE_VIRTUAL_VOLUME 0x00000040
|
||||
#define FILE_AUTOGENERATED_DEVICE_NAME 0x00000080
|
||||
#define FILE_DEVICE_SECURE_OPEN 0x00000100
|
||||
|
||||
|
||||
/*
|
||||
* PURPOSE: Bus types
|
||||
*/
|
||||
typedef enum _INTERFACE_TYPE
|
||||
{
|
||||
InterfaceTypeUndefined = -1,
|
||||
Internal,
|
||||
Isa,
|
||||
Eisa,
|
||||
MicroChannel,
|
||||
TurboChannel,
|
||||
PCIBus,
|
||||
VMEBus,
|
||||
NuBus,
|
||||
PCMCIABus,
|
||||
CBus,
|
||||
MPIBus,
|
||||
MPSABus,
|
||||
ProcessorInternal,
|
||||
InternalPowerBus,
|
||||
PNPISABus,
|
||||
MaximumInterfaceType
|
||||
} INTERFACE_TYPE, *PINTERFACE_TYPE;
|
||||
|
||||
|
||||
enum
|
||||
{
|
||||
IRP_MJ_CREATE,
|
||||
IRP_MJ_CREATE_NAMED_PIPE,
|
||||
IRP_MJ_CLOSE,
|
||||
IRP_MJ_READ,
|
||||
IRP_MJ_WRITE,
|
||||
IRP_MJ_QUERY_INFORMATION,
|
||||
IRP_MJ_SET_INFORMATION,
|
||||
IRP_MJ_QUERY_EA,
|
||||
IRP_MJ_SET_EA,
|
||||
IRP_MJ_FLUSH_BUFFERS,
|
||||
IRP_MJ_QUERY_VOLUME_INFORMATION,
|
||||
IRP_MJ_SET_VOLUME_INFORMATION,
|
||||
IRP_MJ_DIRECTORY_CONTROL,
|
||||
IRP_MJ_FILE_SYSTEM_CONTROL,
|
||||
IRP_MJ_DEVICE_CONTROL,
|
||||
IRP_MJ_INTERNAL_DEVICE_CONTROL,
|
||||
IRP_MJ_SHUTDOWN,
|
||||
IRP_MJ_LOCK_CONTROL,
|
||||
IRP_MJ_CLEANUP,
|
||||
IRP_MJ_CREATE_MAILSLOT,
|
||||
IRP_MJ_QUERY_SECURITY,
|
||||
IRP_MJ_SET_SECURITY,
|
||||
IRP_MJ_POWER,
|
||||
IRP_MJ_SYSTEM_CONTROL,
|
||||
IRP_MJ_DEVICE_CHANGE,
|
||||
IRP_MJ_QUERY_QUOTA,
|
||||
IRP_MJ_SET_QUOTA,
|
||||
IRP_MJ_PNP,
|
||||
IRP_MJ_MAXIMUM_FUNCTION,
|
||||
};
|
||||
|
||||
#define IRP_MJ_SCSI IRP_MJ_INTERNAL_DEVICE_CONTROL
|
||||
|
||||
/*
|
||||
* Minor function numbers for IRP_MJ_FILE_SYSTEM_CONTROL
|
||||
*/
|
||||
#define IRP_MN_USER_FS_REQUEST 0x00
|
||||
#define IRP_MN_MOUNT_VOLUME 0x01
|
||||
#define IRP_MN_VERIFY_VOLUME 0x02
|
||||
#define IRP_MN_LOAD_FILE_SYSTEM 0x03
|
||||
|
||||
/*
|
||||
* Minor function numbers for IRP_MJ_SCSI
|
||||
*/
|
||||
#define IRP_MN_SCSI_CLASS 0x01
|
||||
|
||||
/*
|
||||
* Minor function codes for IRP_MJ_POWER
|
||||
*/
|
||||
#define IRP_MN_WAIT_WAKE 0x00
|
||||
#define IRP_MN_POWER_SEQUENCE 0x01
|
||||
#define IRP_MN_SET_POWER 0x02
|
||||
#define IRP_MN_QUERY_POWER 0x03
|
||||
|
||||
/*
|
||||
* Minor function codes for IRP_MJ_PNP
|
||||
*/
|
||||
#define IRP_MN_START_DEVICE 0x00
|
||||
#define IRP_MN_QUERY_REMOVE_DEVICE 0x01
|
||||
#define IRP_MN_REMOVE_DEVICE 0x02
|
||||
#define IRP_MN_CANCEL_REMOVE_DEVICE 0x03
|
||||
#define IRP_MN_STOP_DEVICE 0x04
|
||||
#define IRP_MN_QUERY_STOP_DEVICE 0x05
|
||||
#define IRP_MN_CANCEL_STOP_DEVICE 0x06
|
||||
#define IRP_MN_QUERY_DEVICE_RELATIONS 0x07
|
||||
#define IRP_MN_QUERY_INTERFACE 0x08
|
||||
#define IRP_MN_QUERY_CAPABILITIES 0x09
|
||||
#define IRP_MN_QUERY_RESOURCES 0x0A
|
||||
#define IRP_MN_QUERY_RESOURCE_REQUIREMENTS 0x0B
|
||||
#define IRP_MN_QUERY_DEVICE_TEXT 0x0C
|
||||
#define IRP_MN_FILTER_RESOURCE_REQUIREMENTS 0x0D
|
||||
#define IRP_MN_READ_CONFIG 0x0F
|
||||
#define IRP_MN_WRITE_CONFIG 0x10
|
||||
#define IRP_MN_EJECT 0x11
|
||||
#define IRP_MN_SET_LOCK 0x12
|
||||
#define IRP_MN_QUERY_ID 0x13
|
||||
#define IRP_MN_QUERY_PNP_DEVICE_STATE 0x14
|
||||
#define IRP_MN_QUERY_BUS_INFORMATION 0x15
|
||||
#define IRP_MN_DEVICE_USAGE_NOTIFICATION 0x16
|
||||
#define IRP_MN_SURPRISE_REMOVAL 0x17
|
||||
#define IRP_MN_QUERY_LEGACY_BUS_INFORMATION 0x18
|
||||
|
||||
|
||||
/*
|
||||
* Priority increments
|
||||
*/
|
||||
#define EVENT_INCREMENT 1
|
||||
#define IO_NO_INCREMENT 0
|
||||
#define IO_CD_ROM_INCREMENT 1
|
||||
#define IO_DISK_INCREMENT 4
|
||||
#define IO_KEYBOARD_INCREMENT 6
|
||||
#define IO_MAILSLOT_INCREMENT 2
|
||||
#define IO_MOUSE_INCREMENT 6
|
||||
#define IO_NAMED_PIPE_INCREMENT 2
|
||||
#define IO_NETWORK_INCREMENT 2
|
||||
#define IO_PARALLEL_INCREMENT 1
|
||||
#define IO_SERIAL_INCREMENT 2
|
||||
#define IO_SOUND_INCREMENT 8
|
||||
#define IO_VIDEO_INCREMENT 1
|
||||
#define MUTANT_INCREMENT 1
|
||||
#define SEMAPHORE_INCREMENT 1
|
||||
|
||||
#define FILE_BYTE_ALIGNMENT 0x00000000
|
||||
#define FILE_WORD_ALIGNMENT 0x00000001
|
||||
#define FILE_LONG_ALIGNMENT 0x00000003
|
||||
#define FILE_QUAD_ALIGNMENT 0x00000007
|
||||
#define FILE_OCTA_ALIGNMENT 0x0000000f
|
||||
#define FILE_32_BYTE_ALIGNMENT 0x0000001f
|
||||
#define FILE_64_BYTE_ALIGNMENT 0x0000003f
|
||||
#define FILE_128_BYTE_ALIGNMENT 0x0000007f
|
||||
#define FILE_256_BYTE_ALIGNMENT 0x000000ff
|
||||
#define FILE_512_BYTE_ALIGNMENT 0x000001ff
|
||||
|
||||
/*
|
||||
* File disposition values
|
||||
*/
|
||||
#define FILE_SUPERSEDED 0x0000
|
||||
#define FILE_OPENED 0x0001
|
||||
#define FILE_CREATED 0x0002
|
||||
#define FILE_OVERWRITTEN 0x0003
|
||||
#define FILE_EXISTS 0x0004
|
||||
#define FILE_DOES_NOT_EXIST 0x0005
|
||||
|
||||
|
||||
/*
|
||||
* file creation flags
|
||||
*/
|
||||
#define FILE_DIRECTORY_FILE 0x00000001
|
||||
#define FILE_WRITE_THROUGH 0x00000002
|
||||
#define FILE_SEQUENTIAL_ONLY 0x00000004
|
||||
#define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008
|
||||
|
||||
#define FILE_SYNCHRONOUS_IO_ALERT 0x00000010
|
||||
#define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020
|
||||
#define FILE_NON_DIRECTORY_FILE 0x00000040
|
||||
#define FILE_CREATE_TREE_CONNECTION 0x00000080
|
||||
|
||||
#define FILE_COMPLETE_IF_OPLOCKED 0x00000100
|
||||
#define FILE_NO_EA_KNOWLEDGE 0x00000200
|
||||
#define FILE_OPEN_FOR_RECOVERY 0x00000400
|
||||
#define FILE_RANDOM_ACCESS 0x00000800
|
||||
|
||||
#define FILE_DELETE_ON_CLOSE 0x00001000
|
||||
#define FILE_OPEN_BY_FILE_ID 0x00002000
|
||||
#define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000
|
||||
#define FILE_NO_COMPRESSION 0x00008000
|
||||
|
||||
#define FILE_RESERVE_OPFILTER 0x00100000
|
||||
#define FILE_TRANSACTED_MODE 0x00200000
|
||||
#define FILE_OPEN_OFFLINE_FILE 0x00400000
|
||||
|
||||
#define FILE_VALID_OPTION_FLAGS 0x007fffff
|
||||
#define FILE_VALID_PIPE_OPTION_FLAGS 0x00000032
|
||||
#define FILE_VALID_MAILSLOT_OPTION_FLAGS 0x00000032
|
||||
#define FILE_VALID_SET_FLAGS 0x00001036
|
||||
|
||||
|
||||
typedef ULONG FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS;
|
||||
|
||||
/*
|
||||
* file system information class values
|
||||
*/
|
||||
#define FileFsVolumeInformation 1
|
||||
#define FileFsLabelInformation 2
|
||||
#define FileFsSizeInformation 3
|
||||
#define FileFsDeviceInformation 4
|
||||
#define FileFsAttributeInformation 5
|
||||
#define FileFsControlInformation 6
|
||||
#define FileFsQuotaQueryInformation 7
|
||||
#define FileFsQuotaSetInformation 8
|
||||
#define FileFsMaximumInformation 9
|
||||
|
||||
#define IRP_MN_QUERY_DIRECTORY 0x01
|
||||
#define IRP_MN_NOTIFY_CHANGE_DIRECTORY 0x02
|
||||
|
||||
#endif
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,845 @@
|
||||
/* $Id: iotypes.h,v 1.41 2002/09/08 10:47:44 chorns Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __INCLUDE_DDK_IOTYPES_H
|
||||
#define __INCLUDE_DDK_IOTYPES_H
|
||||
|
||||
#include <ntos/disk.h>
|
||||
#include <ntos/file.h>
|
||||
|
||||
#ifdef __NTOSKRNL__
|
||||
extern POBJECT_TYPE EXPORTED IoAdapterObjectType;
|
||||
extern POBJECT_TYPE EXPORTED IoDeviceHandlerObjectType;
|
||||
extern POBJECT_TYPE EXPORTED IoDeviceObjectType;
|
||||
extern POBJECT_TYPE EXPORTED IoDriverObjectType;
|
||||
extern POBJECT_TYPE EXPORTED IoFileObjectType;
|
||||
#else
|
||||
extern POBJECT_TYPE IMPORTED IoAdapterObjectType;
|
||||
extern POBJECT_TYPE IMPORTED IoDeviceHandlerObjectType;
|
||||
extern POBJECT_TYPE IMPORTED IoDeviceObjectType;
|
||||
extern POBJECT_TYPE IMPORTED IoDriverObjectType;
|
||||
extern POBJECT_TYPE IMPORTED IoFileObjectType;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* These are referenced before they can be fully defined
|
||||
*/
|
||||
struct _DRIVER_OBJECT;
|
||||
struct _FILE_OBJECT;
|
||||
struct _DEVICE_OBJECT;
|
||||
struct _IRP;
|
||||
struct _IO_STATUS_BLOCK;
|
||||
struct _SCSI_REQUEST_BLOCK;
|
||||
|
||||
/* SIMPLE TYPES *************************************************************/
|
||||
|
||||
enum
|
||||
{
|
||||
DeallocateObject,
|
||||
KeepObject,
|
||||
};
|
||||
|
||||
|
||||
typedef enum _CREATE_FILE_TYPE
|
||||
{
|
||||
CreateFileTypeNone,
|
||||
CreateFileTypeNamedPipe,
|
||||
CreateFileTypeMailslot
|
||||
} CREATE_FILE_TYPE;
|
||||
|
||||
|
||||
typedef struct _SHARE_ACCESS
|
||||
{
|
||||
ULONG OpenCount;
|
||||
ULONG Readers;
|
||||
ULONG Writers;
|
||||
ULONG Deleters;
|
||||
ULONG SharedRead;
|
||||
ULONG SharedWrite;
|
||||
ULONG SharedDelete;
|
||||
} SHARE_ACCESS, *PSHARE_ACCESS;
|
||||
|
||||
/* FUNCTION TYPES ************************************************************/
|
||||
|
||||
typedef VOID STDCALL
|
||||
(*PDRIVER_REINITIALIZE)(struct _DRIVER_OBJECT* DriverObject,
|
||||
PVOID Context,
|
||||
ULONG Count);
|
||||
|
||||
typedef NTSTATUS STDCALL
|
||||
(*PIO_QUERY_DEVICE_ROUTINE)(PVOID Context,
|
||||
PUNICODE_STRING Pathname,
|
||||
INTERFACE_TYPE BusType,
|
||||
ULONG BusNumber,
|
||||
PKEY_VALUE_FULL_INFORMATION* BI,
|
||||
CONFIGURATION_TYPE ControllerType,
|
||||
ULONG ControllerNumber,
|
||||
PKEY_VALUE_FULL_INFORMATION* CI,
|
||||
CONFIGURATION_TYPE PeripheralType,
|
||||
ULONG PeripheralNumber,
|
||||
PKEY_VALUE_FULL_INFORMATION* PI);
|
||||
|
||||
typedef NTSTATUS STDCALL
|
||||
(*PIO_COMPLETION_ROUTINE)(struct _DEVICE_OBJECT* DeviceObject,
|
||||
struct _IRP* Irp,
|
||||
PVOID Context);
|
||||
|
||||
typedef VOID STDCALL
|
||||
(*PIO_APC_ROUTINE)(PVOID ApcContext,
|
||||
struct _IO_STATUS_BLOCK* IoStatusBlock,
|
||||
ULONG Reserved);
|
||||
|
||||
|
||||
/* STRUCTURE TYPES ***********************************************************/
|
||||
|
||||
typedef struct _ADAPTER_OBJECT ADAPTER_OBJECT, *PADAPTER_OBJECT;
|
||||
|
||||
/*
|
||||
* PURPOSE: Special timer associated with each device
|
||||
* NOTES: This is a guess
|
||||
*/
|
||||
typedef struct _IO_TIMER
|
||||
{
|
||||
KTIMER timer;
|
||||
KDPC dpc;
|
||||
} IO_TIMER, *PIO_TIMER;
|
||||
|
||||
typedef struct _IO_SECURITY_CONTEXT
|
||||
{
|
||||
PSECURITY_QUALITY_OF_SERVICE SecurityQos;
|
||||
PACCESS_STATE AccessState;
|
||||
ACCESS_MASK DesiredAccess;
|
||||
ULONG FullCreateOptions;
|
||||
} IO_SECURITY_CONTEXT, *PIO_SECURITY_CONTEXT;
|
||||
|
||||
|
||||
typedef struct _IO_RESOURCE_DESCRIPTOR
|
||||
{
|
||||
UCHAR Option;
|
||||
UCHAR Type;
|
||||
UCHAR ShareDisposition;
|
||||
|
||||
/*
|
||||
* Reserved for system use
|
||||
*/
|
||||
UCHAR Spare1;
|
||||
|
||||
USHORT Flags;
|
||||
|
||||
/*
|
||||
* Reserved for system use
|
||||
*/
|
||||
UCHAR Spare2;
|
||||
|
||||
union
|
||||
{
|
||||
struct
|
||||
{
|
||||
ULONG Length;
|
||||
ULONG Alignment;
|
||||
PHYSICAL_ADDRESS MinimumAddress;
|
||||
PHYSICAL_ADDRESS MaximumAddress;
|
||||
} Port;
|
||||
struct
|
||||
{
|
||||
ULONG Length;
|
||||
ULONG Alignment;
|
||||
PHYSICAL_ADDRESS MinimumAddress;
|
||||
PHYSICAL_ADDRESS MaximumAddress;
|
||||
} Memory;
|
||||
struct
|
||||
{
|
||||
ULONG MinimumVector;
|
||||
ULONG MaximumVector;
|
||||
} Interrupt;
|
||||
struct
|
||||
{
|
||||
ULONG MinimumChannel;
|
||||
ULONG MaximumChannel;
|
||||
} Dma;
|
||||
} u;
|
||||
} IO_RESOURCE_DESCRIPTOR, *PIO_RESOURCE_DESCRIPTOR;
|
||||
|
||||
// IO_RESOURCE_DESCRIPTOR Options
|
||||
#define IO_RESOURCE_REQUIRED 0x00
|
||||
#define IO_RESOURCE_PREFERRED 0x01
|
||||
#define IO_RESOURCE_DEFAULT 0x02
|
||||
#define IO_RESOURCE_ALTERNATIVE 0x08
|
||||
|
||||
typedef struct _IO_RESOURCE_LIST
|
||||
{
|
||||
USHORT Version;
|
||||
USHORT Revision;
|
||||
ULONG Count;
|
||||
IO_RESOURCE_DESCRIPTOR Descriptors[1];
|
||||
} IO_RESOURCE_LIST, *PIO_RESOURCE_LIST;
|
||||
|
||||
typedef struct _IO_RESOURCE_REQUIREMENTS_LIST
|
||||
{
|
||||
/*
|
||||
* List size in bytes
|
||||
*/
|
||||
ULONG ListSize;
|
||||
|
||||
/*
|
||||
* System defined enum for the bus
|
||||
*/
|
||||
INTERFACE_TYPE InterfaceType;
|
||||
|
||||
ULONG BusNumber;
|
||||
ULONG SlotNumber;
|
||||
ULONG Reserved[3];
|
||||
ULONG AlternativeLists;
|
||||
IO_RESOURCE_LIST List[1];
|
||||
} IO_RESOURCE_REQUIREMENTS_LIST, *PIO_RESOURCE_REQUIREMENTS_LIST;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
UCHAR Type;
|
||||
UCHAR ShareDisposition;
|
||||
USHORT Flags;
|
||||
union
|
||||
{
|
||||
struct
|
||||
{
|
||||
PHYSICAL_ADDRESS Start;
|
||||
ULONG Length;
|
||||
} __attribute__((packed)) Port;
|
||||
struct
|
||||
{
|
||||
ULONG Level;
|
||||
ULONG Vector;
|
||||
ULONG Affinity;
|
||||
} __attribute__((packed))Interrupt;
|
||||
struct
|
||||
{
|
||||
PHYSICAL_ADDRESS Start;
|
||||
ULONG Length;
|
||||
} __attribute__((packed))Memory;
|
||||
struct
|
||||
{
|
||||
ULONG Channel;
|
||||
ULONG Port;
|
||||
ULONG Reserved1;
|
||||
} __attribute__((packed))Dma;
|
||||
struct
|
||||
{
|
||||
ULONG DataSize;
|
||||
ULONG Reserved1;
|
||||
ULONG Reserved2;
|
||||
} __attribute__((packed))DeviceSpecificData;
|
||||
} __attribute__((packed)) u;
|
||||
} __attribute__((packed)) CM_PARTIAL_RESOURCE_DESCRIPTOR, *PCM_PARTIAL_RESOURCE_DESCRIPTOR;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
USHORT Version;
|
||||
USHORT Revision;
|
||||
ULONG Count;
|
||||
CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors[1];
|
||||
} __attribute__((packed))CM_PARTIAL_RESOURCE_LIST, *PCM_PARTIAL_RESOURCE_LIST;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
INTERFACE_TYPE InterfaceType;
|
||||
ULONG BusNumber;
|
||||
CM_PARTIAL_RESOURCE_LIST PartialResourceList;
|
||||
} __attribute__((packed)) CM_FULL_RESOURCE_DESCRIPTOR;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
ULONG Count;
|
||||
CM_FULL_RESOURCE_DESCRIPTOR List[1];
|
||||
} CM_RESOURCE_LIST, *PCM_RESOURCE_LIST;
|
||||
|
||||
|
||||
/*
|
||||
* PURPOSE: IRP stack location
|
||||
*/
|
||||
typedef struct __attribute__((packed)) _IO_STACK_LOCATION
|
||||
{
|
||||
UCHAR MajorFunction;
|
||||
UCHAR MinorFunction;
|
||||
UCHAR Flags;
|
||||
UCHAR Control;
|
||||
|
||||
union
|
||||
{
|
||||
struct
|
||||
{
|
||||
PIO_SECURITY_CONTEXT SecurityContext;
|
||||
ULONG Options;
|
||||
USHORT FileAttributes;
|
||||
USHORT ShareAccess;
|
||||
ULONG EaLength;
|
||||
} Create;
|
||||
struct
|
||||
{
|
||||
ULONG Length;
|
||||
ULONG Key;
|
||||
LARGE_INTEGER ByteOffset;
|
||||
} Read;
|
||||
struct
|
||||
{
|
||||
ULONG Length;
|
||||
ULONG Key;
|
||||
LARGE_INTEGER ByteOffset;
|
||||
} Write;
|
||||
struct
|
||||
{
|
||||
ULONG OutputBufferLength;
|
||||
ULONG InputBufferLength;
|
||||
ULONG IoControlCode;
|
||||
PVOID Type3InputBuffer;
|
||||
} DeviceIoControl;
|
||||
struct
|
||||
{
|
||||
ULONG OutputBufferLength;
|
||||
ULONG InputBufferLength;
|
||||
ULONG IoControlCode;
|
||||
PVOID Type3InputBuffer;
|
||||
} FileSystemControl;
|
||||
struct
|
||||
{
|
||||
struct _VPB* Vpb;
|
||||
struct _DEVICE_OBJECT* DeviceObject;
|
||||
} MountVolume;
|
||||
struct
|
||||
{
|
||||
struct _VPB* Vpb;
|
||||
struct _DEVICE_OBJECT* DeviceObject;
|
||||
} VerifyVolume;
|
||||
struct
|
||||
{
|
||||
ULONG Length;
|
||||
FILE_INFORMATION_CLASS FileInformationClass;
|
||||
} QueryFile;
|
||||
struct
|
||||
{
|
||||
ULONG Length;
|
||||
FS_INFORMATION_CLASS FsInformationClass;
|
||||
} QueryVolume;
|
||||
struct
|
||||
{
|
||||
ULONG Length;
|
||||
FS_INFORMATION_CLASS FsInformationClass;
|
||||
} SetVolume;
|
||||
struct
|
||||
{
|
||||
ULONG Length;
|
||||
FILE_INFORMATION_CLASS FileInformationClass;
|
||||
struct _FILE_OBJECT* FileObject;
|
||||
union
|
||||
{
|
||||
struct
|
||||
{
|
||||
BOOLEAN ReplaceIfExists;
|
||||
BOOLEAN AdvanceOnly;
|
||||
} d;
|
||||
ULONG ClusterCount;
|
||||
HANDLE DeleteHandle;
|
||||
} u;
|
||||
} SetFile;
|
||||
struct
|
||||
{
|
||||
ULONG Length;
|
||||
PUNICODE_STRING FileName;
|
||||
FILE_INFORMATION_CLASS FileInformationClass;
|
||||
ULONG FileIndex;
|
||||
} QueryDirectory;
|
||||
|
||||
// Parameters for IRP_MN_QUERY_DEVICE_RELATIONS
|
||||
struct
|
||||
{
|
||||
DEVICE_RELATION_TYPE Type;
|
||||
} QueryDeviceRelations;
|
||||
|
||||
// Parameters for IRP_MN_QUERY_INTERFACE
|
||||
struct
|
||||
{
|
||||
CONST GUID *InterfaceType;
|
||||
USHORT Size;
|
||||
USHORT Version;
|
||||
PINTERFACE Interface;
|
||||
PVOID InterfaceSpecificData;
|
||||
} QueryInterface;
|
||||
|
||||
// Parameters for IRP_MN_QUERY_CAPABILITIES
|
||||
struct
|
||||
{
|
||||
PDEVICE_CAPABILITIES Capabilities;
|
||||
} DeviceCapabilities;
|
||||
|
||||
// Parameters for IRP_MN_QUERY_ID
|
||||
struct
|
||||
{
|
||||
BUS_QUERY_ID_TYPE IdType;
|
||||
} QueryId;
|
||||
|
||||
// Parameters for IRP_MN_QUERY_DEVICE_TEXT
|
||||
struct
|
||||
{
|
||||
DEVICE_TEXT_TYPE DeviceTextType;
|
||||
LCID LocaleId;
|
||||
} QueryDeviceText;
|
||||
|
||||
// Parameters for IRP_MN_DEVICE_USAGE_NOTIFICATION
|
||||
struct
|
||||
{
|
||||
BOOLEAN InPath;
|
||||
BOOLEAN Reserved[3];
|
||||
DEVICE_USAGE_NOTIFICATION_TYPE Type;
|
||||
} UsageNotification;
|
||||
|
||||
// Parameters for IRP_MN_WAIT_WAKE
|
||||
struct
|
||||
{
|
||||
SYSTEM_POWER_STATE PowerState;
|
||||
} WaitWake;
|
||||
|
||||
// Parameter for IRP_MN_POWER_SEQUENCE
|
||||
struct
|
||||
{
|
||||
PPOWER_SEQUENCE PowerSequence;
|
||||
} PowerSequence;
|
||||
|
||||
// Parameters for IRP_MN_SET_POWER and IRP_MN_QUERY_POWER
|
||||
struct
|
||||
{
|
||||
ULONG SystemContext;
|
||||
POWER_STATE_TYPE Type;
|
||||
POWER_STATE State;
|
||||
POWER_ACTION ShutdownType;
|
||||
} Power;
|
||||
|
||||
// Parameters for IRP_MN_START_DEVICE
|
||||
struct
|
||||
{
|
||||
PCM_RESOURCE_LIST AllocatedResources;
|
||||
PCM_RESOURCE_LIST AllocatedResourcesTranslated;
|
||||
} StartDevice;
|
||||
|
||||
/* Parameters for IRP_MN_SCSI_CLASS */
|
||||
struct
|
||||
{
|
||||
struct _SCSI_REQUEST_BLOCK *Srb;
|
||||
} Scsi;
|
||||
|
||||
/* Paramters for other calls */
|
||||
struct
|
||||
{
|
||||
PVOID Argument1;
|
||||
PVOID Argument2;
|
||||
PVOID Argument3;
|
||||
PVOID Argument4;
|
||||
} Others;
|
||||
} Parameters;
|
||||
|
||||
struct _DEVICE_OBJECT* DeviceObject;
|
||||
struct _FILE_OBJECT* FileObject;
|
||||
|
||||
PIO_COMPLETION_ROUTINE CompletionRoutine;
|
||||
PVOID CompletionContext;
|
||||
|
||||
} __attribute__((packed)) IO_STACK_LOCATION, *PIO_STACK_LOCATION;
|
||||
|
||||
|
||||
typedef struct _IO_STATUS_BLOCK
|
||||
{
|
||||
NTSTATUS Status;
|
||||
ULONG Information;
|
||||
} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
|
||||
|
||||
|
||||
typedef struct _IO_PIPE_CREATE_BUFFER
|
||||
{
|
||||
BOOLEAN WriteModeMessage;
|
||||
BOOLEAN ReadModeMessage;
|
||||
BOOLEAN NonBlocking;
|
||||
ULONG MaxInstances;
|
||||
ULONG InBufferSize;
|
||||
ULONG OutBufferSize;
|
||||
LARGE_INTEGER TimeOut;
|
||||
} IO_PIPE_CREATE_BUFFER, *PIO_PIPE_CREATE_BUFFER;
|
||||
|
||||
|
||||
typedef struct _IO_MAILSLOT_CREATE_BUFFER
|
||||
{
|
||||
ULONG Param; /* ?? */
|
||||
ULONG MaxMessageSize;
|
||||
LARGE_INTEGER TimeOut;
|
||||
} IO_MAILSLOT_CREATE_BUFFER, *PIO_MAILSLOT_CREATE_BUFFER;
|
||||
|
||||
|
||||
/*
|
||||
* Driver entry point declaration
|
||||
*/
|
||||
typedef NTSTATUS STDCALL
|
||||
(*PDRIVER_INITIALIZE)(struct _DRIVER_OBJECT* DriverObject,
|
||||
PUNICODE_STRING RegistryPath);
|
||||
|
||||
/*
|
||||
* Driver cancel declaration
|
||||
*/
|
||||
typedef NTSTATUS STDCALL
|
||||
(*PDRIVER_CANCEL)(struct _DEVICE_OBJECT* DeviceObject,
|
||||
struct _IRP* RegistryPath);
|
||||
|
||||
|
||||
typedef struct _SECTION_OBJECT_POINTERS
|
||||
{
|
||||
PVOID DataSectionObject;
|
||||
PVOID SharedCacheMap;
|
||||
PVOID ImageSectionObject;
|
||||
} SECTION_OBJECT_POINTERS, *PSECTION_OBJECT_POINTERS;
|
||||
|
||||
typedef struct _IO_COMPLETION_CONTEXT
|
||||
{
|
||||
PVOID Port;
|
||||
ULONG Key;
|
||||
} IO_COMPLETION_CONTEXT, *PIO_COMPLETION_CONTEXT;
|
||||
|
||||
#define FO_FILE_OPEN 0x00000001
|
||||
#define FO_SYNCHRONOUS_IO 0x00000002
|
||||
#define FO_ALERTABLE_IO 0x00000004
|
||||
#define FO_NO_INTERMEDIATE_BUFFERING 0x00000008
|
||||
#define FO_WRITE_THROUGH 0x00000010
|
||||
#define FO_SEQUENTIAL_ONLY 0x00000020
|
||||
#define FO_CACHE_SUPPORTED 0x00000040
|
||||
#define FO_NAMED_PIPE 0x00000080
|
||||
#define FO_STREAM_FILE 0x00000100
|
||||
#define FO_MAILSLOT 0x00000200
|
||||
#define FO_GENERATE_AUDIT_ON_CLOSE 0x00000400
|
||||
#define FO_DIRECT_DEVICE_OPEN 0x00000800
|
||||
#define FO_FILE_MODIFIED 0x00001000
|
||||
#define FO_FILE_SIZE_CHANGED 0x00002000
|
||||
#define FO_CLEANUP_COMPLETE 0x00004000
|
||||
#define FO_TEMPORARY_FILE 0x00008000
|
||||
#define FO_DELETE_ON_CLOSE 0x00010000
|
||||
#define FO_OPENED_CASE_SENSITIVE 0x00020000
|
||||
#define FO_HANDLE_CREATED 0x00040000
|
||||
#define FO_FILE_FAST_IO_READ 0x00080000
|
||||
|
||||
/*
|
||||
* ReactOS specific flags
|
||||
*/
|
||||
#define FO_DIRECT_CACHE_READ 0x72000001
|
||||
#define FO_DIRECT_CACHE_WRITE 0x72000002
|
||||
#define FO_DIRECT_CACHE_PAGING_READ 0x72000004
|
||||
#define FO_DIRECT_CACHE_PAGING_WRITE 0x72000008
|
||||
#define FO_FCB_IS_VALID 0x72000010
|
||||
|
||||
typedef struct _FILE_OBJECT
|
||||
{
|
||||
CSHORT Type;
|
||||
CSHORT Size;
|
||||
struct _DEVICE_OBJECT* DeviceObject;
|
||||
struct _VPB* Vpb;
|
||||
PVOID FsContext;
|
||||
PVOID FsContext2;
|
||||
PSECTION_OBJECT_POINTERS SectionObjectPointers;
|
||||
PVOID PrivateCacheMap;
|
||||
NTSTATUS FinalStatus;
|
||||
struct _FILE_OBJECT* RelatedFileObject;
|
||||
BOOLEAN LockOperation;
|
||||
BOOLEAN DeletePending;
|
||||
BOOLEAN ReadAccess;
|
||||
BOOLEAN WriteAccess;
|
||||
BOOLEAN DeleteAccess;
|
||||
BOOLEAN SharedRead;
|
||||
BOOLEAN SharedWrite;
|
||||
BOOLEAN SharedDelete;
|
||||
ULONG Flags;
|
||||
UNICODE_STRING FileName;
|
||||
LARGE_INTEGER CurrentByteOffset;
|
||||
ULONG Waiters;
|
||||
ULONG Busy;
|
||||
PVOID LastLock;
|
||||
KEVENT Lock;
|
||||
KEVENT Event;
|
||||
PIO_COMPLETION_CONTEXT CompletionContext;
|
||||
} FILE_OBJECT, *PFILE_OBJECT;
|
||||
|
||||
|
||||
typedef struct _IRP
|
||||
{
|
||||
CSHORT Type;
|
||||
USHORT Size;
|
||||
PMDL MdlAddress;
|
||||
ULONG Flags;
|
||||
union
|
||||
{
|
||||
struct _IRP* MasterIrp;
|
||||
LONG IrpCount;
|
||||
PVOID SystemBuffer;
|
||||
} AssociatedIrp;
|
||||
LIST_ENTRY ThreadListEntry;
|
||||
IO_STATUS_BLOCK IoStatus;
|
||||
KPROCESSOR_MODE RequestorMode;
|
||||
BOOLEAN PendingReturned;
|
||||
CHAR StackCount;
|
||||
CHAR CurrentLocation;
|
||||
BOOLEAN Cancel;
|
||||
KIRQL CancelIrql;
|
||||
CCHAR ApcEnvironment;// CCHAR or PVOID?
|
||||
UCHAR AllocationFlags;//UCHAR or ULONG?
|
||||
PIO_STATUS_BLOCK UserIosb;
|
||||
PKEVENT UserEvent;
|
||||
union
|
||||
{
|
||||
struct
|
||||
{
|
||||
PIO_APC_ROUTINE UserApcRoutine;
|
||||
PVOID UserApcContext;
|
||||
} AsynchronousParameters;
|
||||
LARGE_INTEGER AllocationSize;
|
||||
} Overlay;
|
||||
PDRIVER_CANCEL CancelRoutine;
|
||||
PVOID UserBuffer;
|
||||
union
|
||||
{
|
||||
struct
|
||||
{
|
||||
union {
|
||||
KDEVICE_QUEUE_ENTRY DeviceQueueEntry;
|
||||
PVOID DriverContext[4];
|
||||
};
|
||||
struct _ETHREAD* Thread;
|
||||
PCHAR AuxiliaryBuffer;
|
||||
LIST_ENTRY ListEntry;
|
||||
struct _IO_STACK_LOCATION* CurrentStackLocation;
|
||||
PFILE_OBJECT OriginalFileObject;
|
||||
} Overlay;
|
||||
KAPC Apc;
|
||||
ULONG CompletionKey;
|
||||
} Tail;
|
||||
IO_STACK_LOCATION Stack[1];
|
||||
} IRP, *PIRP;
|
||||
|
||||
#define VPB_MOUNTED 0x00000001
|
||||
#define VPB_LOCKED 0x00000002
|
||||
#define VPB_PERSISTENT 0x00000004
|
||||
#define VPB_REMOVE_PENDING 0x00000008
|
||||
|
||||
typedef struct _VPB
|
||||
{
|
||||
CSHORT Type;
|
||||
CSHORT Size;
|
||||
USHORT Flags;
|
||||
USHORT VolumeLabelLength;
|
||||
struct _DEVICE_OBJECT* DeviceObject;
|
||||
struct _DEVICE_OBJECT* RealDevice;
|
||||
ULONG SerialNumber;
|
||||
ULONG ReferenceCount;
|
||||
WCHAR VolumeLabel[MAXIMUM_VOLUME_LABEL_LENGTH];
|
||||
} VPB, *PVPB;
|
||||
|
||||
|
||||
typedef struct _DEVICE_OBJECT
|
||||
{
|
||||
CSHORT Type;
|
||||
CSHORT Size;
|
||||
LONG ReferenceCount;
|
||||
struct _DRIVER_OBJECT* DriverObject;
|
||||
struct _DEVICE_OBJECT* NextDevice;
|
||||
struct _DEVICE_OBJECT* AttachedDevice;
|
||||
struct _IRP* CurrentIrp;
|
||||
PIO_TIMER Timer;
|
||||
ULONG Flags;
|
||||
ULONG Characteristics;
|
||||
PVPB Vpb;
|
||||
PVOID DeviceExtension;
|
||||
DEVICE_TYPE DeviceType;
|
||||
CCHAR StackSize;
|
||||
union
|
||||
{
|
||||
LIST_ENTRY ListHead;
|
||||
WAIT_CONTEXT_BLOCK Wcb;
|
||||
} Queue;
|
||||
ULONG AlignmentRequirement;
|
||||
KDEVICE_QUEUE DeviceQueue;
|
||||
KDPC Dpc;
|
||||
ULONG ActiveThreadCount;
|
||||
PSECURITY_DESCRIPTOR SecurityDescriptor;
|
||||
KEVENT DeviceLock;
|
||||
USHORT SectorSize;
|
||||
USHORT Spare1;
|
||||
struct _DEVOBJ_EXTENSION* DeviceObjectExtension;
|
||||
PVOID Reserved;
|
||||
} DEVICE_OBJECT, *PDEVICE_OBJECT;
|
||||
|
||||
|
||||
/*
|
||||
* Fast i/o routine type declaration
|
||||
*/
|
||||
//typedef NTSTATUS (*PFAST_IO_DISPATCH)(struct _DEVICE_OBJECT*, IRP*);
|
||||
//FIXME : this type is ok for read and write, but not for all routines
|
||||
typedef BOOLEAN STDCALL
|
||||
(*PFAST_IO_ROUTINE)(IN struct _FILE_OBJECT *FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length,
|
||||
IN BOOLEAN Wait,
|
||||
IN ULONG LockKey,
|
||||
OUT PVOID Buffer,
|
||||
OUT PIO_STATUS_BLOCK IoStatus,
|
||||
IN struct _DEVICE_OBJECT *DeviceObject);
|
||||
|
||||
typedef struct _FAST_IO_DISPATCH {
|
||||
ULONG SizeOfFastIoDispatch;
|
||||
PFAST_IO_ROUTINE FastIoCheckIfPossible;
|
||||
PFAST_IO_ROUTINE FastIoRead;
|
||||
PFAST_IO_ROUTINE FastIoWrite;
|
||||
PFAST_IO_ROUTINE FastIoQueryBasicInfo;
|
||||
PFAST_IO_ROUTINE FastIoQueryStandardInfo;
|
||||
PFAST_IO_ROUTINE FastIoLock;
|
||||
PFAST_IO_ROUTINE FastIoUnlockSingle;
|
||||
PFAST_IO_ROUTINE FastIoUnlockAll;
|
||||
PFAST_IO_ROUTINE FastIoUnlockAllByKey;
|
||||
PFAST_IO_ROUTINE FastIoDeviceControl;
|
||||
PFAST_IO_ROUTINE AcquireFileForNtCreateSection;
|
||||
PFAST_IO_ROUTINE ReleaseFileForNtCreateSection;
|
||||
PFAST_IO_ROUTINE FastIoDetachDevice;
|
||||
PFAST_IO_ROUTINE FastIoQueryNetworkOpenInfo;
|
||||
PFAST_IO_ROUTINE AcquireForModWrite;
|
||||
PFAST_IO_ROUTINE MdlRead;
|
||||
PFAST_IO_ROUTINE MdlReadComplete;
|
||||
PFAST_IO_ROUTINE PrepareMdlWrite;
|
||||
PFAST_IO_ROUTINE MdlWriteComplete;
|
||||
PFAST_IO_ROUTINE FastIoReadCompressed;
|
||||
PFAST_IO_ROUTINE FastIoWriteCompressed;
|
||||
PFAST_IO_ROUTINE MdlReadCompleteCompressed;
|
||||
PFAST_IO_ROUTINE MdlWriteCompleteCompressed;
|
||||
PFAST_IO_ROUTINE FastIoQueryOpen;
|
||||
PFAST_IO_ROUTINE ReleaseForModWrite;
|
||||
PFAST_IO_ROUTINE AcquireForCcFlush;
|
||||
PFAST_IO_ROUTINE ReleaseForCcFlush;
|
||||
} FAST_IO_DISPATCH, *PFAST_IO_DISPATCH;
|
||||
|
||||
/*
|
||||
* Dispatch routine type declaration
|
||||
*/
|
||||
typedef NTSTATUS STDCALL
|
||||
(*PDRIVER_DISPATCH)(IN struct _DEVICE_OBJECT *DeviceObject,
|
||||
IN struct _IRP *Irp);
|
||||
|
||||
/*
|
||||
* StartIo routine type declaration
|
||||
*/
|
||||
typedef VOID STDCALL
|
||||
(*PDRIVER_STARTIO)(IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PIRP Irp);
|
||||
|
||||
/*
|
||||
* Unload routine type declaration
|
||||
*/
|
||||
typedef VOID STDCALL
|
||||
(*PDRIVER_UNLOAD)(IN struct _DRIVER_OBJECT *DriverObject);
|
||||
|
||||
/*
|
||||
* AddDevice routine type declaration
|
||||
*/
|
||||
typedef NTSTATUS STDCALL
|
||||
(*PDRIVER_ADD_DEVICE)(IN struct _DRIVER_OBJECT *DriverObject,
|
||||
IN struct _DEVICE_OBJECT *PhysicalDeviceObject);
|
||||
|
||||
|
||||
typedef struct _DRIVER_EXTENSION
|
||||
{
|
||||
struct _DRIVER_OBJECT* DriverObject;
|
||||
PDRIVER_ADD_DEVICE AddDevice;
|
||||
ULONG Count;
|
||||
UNICODE_STRING ServiceKeyName;
|
||||
} DRIVER_EXTENSION, *PDRIVER_EXTENSION;
|
||||
|
||||
#if 0
|
||||
typedef
|
||||
struct _FAST_IO_DISPATCH_TABLE
|
||||
{
|
||||
ULONG Count;
|
||||
PFAST_IO_DISPATCH Dispatch;
|
||||
|
||||
} FAST_IO_DISPATCH_TABLE, * PFAST_IO_DISPATCH_TABLE;
|
||||
#endif
|
||||
|
||||
typedef struct _DRIVER_OBJECT
|
||||
{
|
||||
CSHORT Type;
|
||||
CSHORT Size;
|
||||
PDEVICE_OBJECT DeviceObject;
|
||||
ULONG Flags;
|
||||
PVOID DriverStart;
|
||||
ULONG DriverSize;
|
||||
PVOID DriverSection;
|
||||
PDRIVER_EXTENSION DriverExtension;
|
||||
UNICODE_STRING DriverName;
|
||||
PUNICODE_STRING HardwareDatabase;
|
||||
#if 0
|
||||
PFAST_IO_DISPATCH_TABLE FastIoDispatch;
|
||||
#else
|
||||
PFAST_IO_DISPATCH FastIoDispatch;
|
||||
#endif
|
||||
PDRIVER_INITIALIZE DriverInit;
|
||||
PDRIVER_STARTIO DriverStartIo;
|
||||
PDRIVER_UNLOAD DriverUnload;
|
||||
PDRIVER_DISPATCH MajorFunction[IRP_MJ_MAXIMUM_FUNCTION + 1];
|
||||
} DRIVER_OBJECT, *PDRIVER_OBJECT;
|
||||
|
||||
|
||||
typedef struct _CONFIGURATION_INFORMATION
|
||||
{
|
||||
ULONG DiskCount;
|
||||
ULONG FloppyCount;
|
||||
ULONG CDRomCount;
|
||||
ULONG TapeCount;
|
||||
ULONG ScsiPortCount;
|
||||
ULONG SerialCount;
|
||||
ULONG ParallelCount;
|
||||
BOOLEAN AtDiskPrimaryAddressClaimed;
|
||||
BOOLEAN AtDiskSecondaryAddressClaimed;
|
||||
} CONFIGURATION_INFORMATION, *PCONFIGURATION_INFORMATION;
|
||||
|
||||
typedef VOID STDCALL
|
||||
(*PIO_DPC_ROUTINE)(PKDPC Dpc,
|
||||
PDEVICE_OBJECT DeviceObject,
|
||||
PIRP Irp,
|
||||
PVOID Context);
|
||||
|
||||
typedef VOID STDCALL
|
||||
(*PIO_TIMER_ROUTINE)(PDEVICE_OBJECT DeviceObject,
|
||||
PVOID Context);
|
||||
|
||||
#if WINDOWS_STRUCTS_DOESNT_ALREADY_DEFINE_THIS
|
||||
typedef struct _PARTITION_INFORMATION
|
||||
{
|
||||
LARGE_INTEGER StartingOffset;
|
||||
LARGE_INTEGER PartitionLength;
|
||||
ULONG HiddenSectors;
|
||||
ULONG PartitionNumber;
|
||||
UCHAR PartitionType;
|
||||
BOOLEAN BootIndicator;
|
||||
BOOLEAN RecognizedPartition;
|
||||
BOOLEAN RewritePartition;
|
||||
} PARTITION_INFORMATION, *PPARTITION_INFORMATION;
|
||||
#endif
|
||||
|
||||
typedef struct _DRIVER_LAYOUT_INFORMATION
|
||||
{
|
||||
ULONG PartitionCount;
|
||||
ULONG Signature;
|
||||
PARTITION_INFORMATION PartitionEntry[1];
|
||||
} DRIVER_LAYOUT_INFORMATION, *PDRIVER_LAYOUT_INFORMATION;
|
||||
|
||||
|
||||
typedef IO_ALLOCATION_ACTION STDCALL
|
||||
(*PDRIVER_CONTROL)(PDEVICE_OBJECT DeviceObject,
|
||||
PIRP Irp,
|
||||
PVOID MapRegisterBase,
|
||||
PVOID Context);
|
||||
#if (_WIN32_WINNT >= 0x0400)
|
||||
typedef VOID STDCALL
|
||||
(*PFSDNOTIFICATIONPROC)(IN PDEVICE_OBJECT PtrTargetFileSystemDeviceObject,
|
||||
IN BOOLEAN DriverActive);
|
||||
#endif // (_WIN32_WINNT >= 0x0400)
|
||||
|
||||
#endif /* __INCLUDE_DDK_IOTYPES_H */
|
||||
@@ -0,0 +1,99 @@
|
||||
#ifndef __INCLUDE_DDK_KDFUNCS_H
|
||||
#define __INCLUDE_DDK_KDFUNCS_H
|
||||
/* $Id: kdfuncs.h,v 1.8 2002/09/08 10:47:44 chorns Exp $ */
|
||||
|
||||
/* --- NTOSKRNL.EXE --- */
|
||||
#if defined(__NTOSKRNL__)
|
||||
extern BOOLEAN KdDebuggerEnabled __declspec(dllexport);
|
||||
extern BOOLEAN KdDebuggerNotPresent __declspec(dllexport);
|
||||
#else
|
||||
extern BOOLEAN KdDebuggerEnabled __declspec(dllimport);
|
||||
extern BOOLEAN KdDebuggerNotPresent __declspec(dllimport);
|
||||
#endif
|
||||
|
||||
BYTE
|
||||
STDCALL
|
||||
KdPollBreakIn (
|
||||
VOID
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
KdPortInitialize (
|
||||
PKD_PORT_INFORMATION PortInformation,
|
||||
DWORD Unknown1,
|
||||
DWORD Unknown2
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
KdPortInitializeEx (
|
||||
PKD_PORT_INFORMATION PortInformation,
|
||||
DWORD Unknown1,
|
||||
DWORD Unknown2
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
KdPortGetByte (
|
||||
PUCHAR ByteRecieved
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
KdPortGetByteEx (
|
||||
PKD_PORT_INFORMATION PortInformation,
|
||||
PUCHAR ByteRecieved
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
KdPortPollByte (
|
||||
PUCHAR ByteRecieved
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
KdPortPollByteEx (
|
||||
PKD_PORT_INFORMATION PortInformation,
|
||||
PUCHAR ByteRecieved
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
KdPortPutByte (
|
||||
UCHAR ByteToSend
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
KdPortPutByteEx (
|
||||
PKD_PORT_INFORMATION PortInformation,
|
||||
UCHAR ByteToSend
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
KdPortRestore (
|
||||
VOID
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
KdPortSave (
|
||||
VOID
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
KdPortDisableInterrupts(
|
||||
VOID
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
KdPortEnableInterrupts(
|
||||
VOID
|
||||
);
|
||||
|
||||
#endif /* __INCLUDE_DDK_KDFUNCS_H */
|
||||
@@ -0,0 +1,66 @@
|
||||
#ifndef __INCLUDE_DDK_KEDEF_H
|
||||
#define __INCLUDE_DDK_KEDEF_H
|
||||
|
||||
typedef enum _KBUGCHECK_BUFFER_DUMP_STATE
|
||||
{
|
||||
BufferEmpty,
|
||||
BufferInserted,
|
||||
BufferStarted,
|
||||
BufferFinished,
|
||||
BufferIncomplete
|
||||
}KBUGCHECK_BUFFER_DUMP_STATE;
|
||||
|
||||
typedef enum _KINTERRUPT_MODE
|
||||
{
|
||||
LevelSensitive,
|
||||
Latched,
|
||||
} KINTERRUPT_MODE;
|
||||
|
||||
/*
|
||||
* PURPOSE: DPC importance
|
||||
*/
|
||||
typedef enum _KDPC_IMPORTANCE
|
||||
{
|
||||
LowImportance,
|
||||
MediumImportance,
|
||||
HighImportance
|
||||
} KDPC_IMPORTANCE;
|
||||
|
||||
typedef enum _EVENT_TYPE
|
||||
{
|
||||
NotificationEvent,
|
||||
SynchronizationEvent,
|
||||
} EVENT_TYPE;
|
||||
|
||||
typedef enum _KWAIT_REASON
|
||||
{
|
||||
Executive,
|
||||
FreePage,
|
||||
PageIn,
|
||||
PoolAllocation,
|
||||
DelayExecution,
|
||||
Suspended,
|
||||
UserRequest,
|
||||
WrExecutive,
|
||||
WrFreePage,
|
||||
WrPageIn,
|
||||
WrDelayExecution,
|
||||
WrSuspended,
|
||||
WrUserRequest,
|
||||
WrEventPair,
|
||||
WrQueue,
|
||||
WrLpcReceive,
|
||||
WrLpcReply,
|
||||
WrVirtualMemory,
|
||||
WrPageOut,
|
||||
WrRendezvous,
|
||||
Spare2,
|
||||
Spare3,
|
||||
Spare4,
|
||||
Spare5,
|
||||
Spare6,
|
||||
WrKernel,
|
||||
MaximumWaitReason,
|
||||
} KWAIT_REASON;
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,493 @@
|
||||
#ifndef __INCLUDE_DDK_KEFUNCS_H
|
||||
#define __INCLUDE_DDK_KEFUNCS_H
|
||||
|
||||
|
||||
/* KERNEL FUNCTIONS ********************************************************/
|
||||
|
||||
#define KeFlushIoBuffers(Mdl, ReadOperation, DmaOperation)
|
||||
|
||||
VOID STDCALL KeAttachProcess (struct _EPROCESS* Process);
|
||||
|
||||
VOID KeDrainApcQueue(VOID);
|
||||
struct _KPROCESS* KeGetCurrentProcess(VOID);
|
||||
|
||||
/*
|
||||
* FUNCTION: Acquires a spinlock so the caller can synchronize access to
|
||||
* data
|
||||
* ARGUMENTS:
|
||||
* SpinLock = Initialized spinlock
|
||||
* OldIrql (OUT) = Set the previous irql on return
|
||||
*/
|
||||
VOID STDCALL KeAcquireSpinLock (PKSPIN_LOCK SpinLock,
|
||||
PKIRQL OldIrql);
|
||||
|
||||
VOID STDCALL KeAcquireSpinLockAtDpcLevel (PKSPIN_LOCK SpinLock);
|
||||
|
||||
/*
|
||||
* FUNCTION: Brings the system down in a controlled manner when an
|
||||
* inconsistency that might otherwise cause corruption has been detected
|
||||
* ARGUMENTS:
|
||||
* BugCheckCode = Specifies the reason for the bug check
|
||||
* RETURNS: Doesn't
|
||||
*/
|
||||
VOID STDCALL KeBugCheck (ULONG BugCheckCode);
|
||||
|
||||
|
||||
/*
|
||||
* FUNCTION: Brings the system down in a controlled manner when an
|
||||
* inconsistency that might otherwise cause corruption has been detected
|
||||
* ARGUMENTS:
|
||||
* BugCheckCode = Specifies the reason for the bug check
|
||||
* BugCheckParameter[1-4] = Additional information about bug
|
||||
* RETURNS: Doesn't
|
||||
*/
|
||||
VOID STDCALL KeBugCheckEx (ULONG BugCheckCode,
|
||||
ULONG BugCheckParameter1,
|
||||
ULONG BugCheckParameter2,
|
||||
ULONG BugCheckParameter3,
|
||||
ULONG BugCheckParameter4);
|
||||
|
||||
BOOLEAN STDCALL KeCancelTimer (PKTIMER Timer);
|
||||
|
||||
VOID STDCALL KeClearEvent (PKEVENT Event);
|
||||
|
||||
NTSTATUS STDCALL KeConnectInterrupt(PKINTERRUPT InterruptObject);
|
||||
|
||||
NTSTATUS STDCALL KeDelayExecutionThread (KPROCESSOR_MODE WaitMode,
|
||||
BOOLEAN Alertable,
|
||||
PLARGE_INTEGER Internal);
|
||||
|
||||
BOOLEAN STDCALL KeDeregisterBugCheckCallback (
|
||||
PKBUGCHECK_CALLBACK_RECORD CallbackRecord);
|
||||
|
||||
VOID STDCALL KeDetachProcess (VOID);
|
||||
|
||||
VOID STDCALL KeDisconnectInterrupt(PKINTERRUPT InterruptObject);
|
||||
|
||||
VOID STDCALL KeEnterCriticalRegion (VOID);
|
||||
|
||||
/*
|
||||
* FUNCTION: Enters the kernel debugger
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
*/
|
||||
VOID STDCALL KeEnterKernelDebugger (VOID);
|
||||
|
||||
VOID STDCALL KeFlushWriteBuffer (VOID);
|
||||
|
||||
KIRQL STDCALL KeGetCurrentIrql (VOID);
|
||||
|
||||
ULONG KeGetCurrentProcessorNumber(VOID);
|
||||
|
||||
struct _KTHREAD* STDCALL KeGetCurrentThread (VOID);
|
||||
|
||||
ULONG KeGetDcacheFillSize(VOID);
|
||||
|
||||
ULONG STDCALL KeGetPreviousMode (VOID);
|
||||
|
||||
VOID STDCALL KeInitializeApc (PKAPC Apc,
|
||||
struct _KTHREAD* Thread,
|
||||
UCHAR StateIndex,
|
||||
PKKERNEL_ROUTINE KernelRoutine,
|
||||
PKRUNDOWN_ROUTINE RundownRoutine,
|
||||
PKNORMAL_ROUTINE NormalRoutine,
|
||||
UCHAR Mode,
|
||||
PVOID Context);
|
||||
|
||||
/*
|
||||
* VOID
|
||||
* KeInitializeCallbackRecord (
|
||||
* PKBUGCHECK_CALLBACK_RECORD CallbackRecord
|
||||
* );
|
||||
*/
|
||||
#define KeInitializeCallbackRecord(CallbackRecord) \
|
||||
(CallbackRecord)->State = BufferEmpty
|
||||
|
||||
VOID STDCALL KeInitializeDeviceQueue (PKDEVICE_QUEUE DeviceQueue);
|
||||
|
||||
VOID STDCALL KeInitializeDpc (PKDPC Dpc,
|
||||
PKDEFERRED_ROUTINE DeferredRoutine,
|
||||
PVOID DeferredContext);
|
||||
|
||||
VOID STDCALL KeInitializeEvent (PKEVENT Event,
|
||||
EVENT_TYPE Type,
|
||||
BOOLEAN State);
|
||||
|
||||
NTSTATUS STDCALL KeInitializeInterrupt(PKINTERRUPT InterruptObject,
|
||||
PKSERVICE_ROUTINE ServiceRoutine,
|
||||
PVOID ServiceContext,
|
||||
PKSPIN_LOCK SpinLock,
|
||||
ULONG Vector,
|
||||
KIRQL Irql,
|
||||
KIRQL SynchronizeIrql,
|
||||
KINTERRUPT_MODE InterruptMode,
|
||||
BOOLEAN ShareVector,
|
||||
KAFFINITY ProcessorEnableMask,
|
||||
BOOLEAN FloatingSave);
|
||||
|
||||
VOID STDCALL KeInitializeMutant(IN PKMUTANT Mutant,
|
||||
IN BOOLEAN InitialOwner);
|
||||
|
||||
VOID STDCALL KeInitializeMutex (PKMUTEX Mutex,
|
||||
ULONG Level);
|
||||
|
||||
VOID STDCALL
|
||||
KeInitializeQueue(IN PKQUEUE Queue,
|
||||
IN ULONG Count);
|
||||
|
||||
VOID STDCALL KeInitializeSemaphore (PKSEMAPHORE Semaphore,
|
||||
LONG Count,
|
||||
LONG Limit);
|
||||
|
||||
/*
|
||||
* FUNCTION: Initializes a spinlock
|
||||
* ARGUMENTS:
|
||||
* SpinLock = Spinlock to initialize
|
||||
*/
|
||||
VOID STDCALL KeInitializeSpinLock (PKSPIN_LOCK SpinLock);
|
||||
|
||||
VOID STDCALL KeInitializeTimer (PKTIMER Timer);
|
||||
|
||||
VOID STDCALL KeInitializeTimerEx (PKTIMER Timer,
|
||||
TIMER_TYPE Type);
|
||||
|
||||
BOOLEAN STDCALL KeInsertByKeyDeviceQueue (PKDEVICE_QUEUE DeviceQueue,
|
||||
PKDEVICE_QUEUE_ENTRY QueueEntry,
|
||||
ULONG SortKey);
|
||||
|
||||
BOOLEAN STDCALL KeInsertDeviceQueue (PKDEVICE_QUEUE DeviceQueue,
|
||||
PKDEVICE_QUEUE_ENTRY DeviceQueueEntry);
|
||||
|
||||
LONG STDCALL
|
||||
KeInsertHeadQueue(IN PKQUEUE Queue,
|
||||
IN PLIST_ENTRY Entry);
|
||||
|
||||
LONG STDCALL
|
||||
KeInsertQueue(IN PKQUEUE Queue,
|
||||
IN PLIST_ENTRY Entry);
|
||||
|
||||
VOID STDCALL KeInsertQueueApc (PKAPC Apc,
|
||||
PVOID SystemArgument1,
|
||||
PVOID SystemArgument2,
|
||||
UCHAR Mode);
|
||||
|
||||
BOOLEAN STDCALL KeInsertQueueDpc (PKDPC Dpc,
|
||||
PVOID SystemArgument1,
|
||||
PVOID SystemArgument2);
|
||||
|
||||
VOID STDCALL KeLeaveCriticalRegion (VOID);
|
||||
|
||||
VOID STDCALL KeLowerIrql (KIRQL NewIrql);
|
||||
|
||||
NTSTATUS STDCALL KePulseEvent (PKEVENT Event,
|
||||
KPRIORITY Increment,
|
||||
BOOLEAN Wait);
|
||||
|
||||
LARGE_INTEGER
|
||||
STDCALL
|
||||
KeQueryPerformanceCounter (
|
||||
PLARGE_INTEGER PerformanceFrequency
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
KeQuerySystemTime (
|
||||
PLARGE_INTEGER CurrentTime
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
KeQueryTickCount (
|
||||
PLARGE_INTEGER TickCount
|
||||
);
|
||||
|
||||
ULONG
|
||||
STDCALL
|
||||
KeQueryTimeIncrement (
|
||||
VOID
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
KeRaiseIrql (
|
||||
KIRQL NewIrql,
|
||||
PKIRQL OldIrql
|
||||
);
|
||||
|
||||
KIRQL
|
||||
STDCALL
|
||||
KeRaiseIrqlToDpcLevel (
|
||||
VOID
|
||||
);
|
||||
|
||||
KIRQL
|
||||
STDCALL
|
||||
KeRaiseIrqlToSynchLevel (
|
||||
VOID
|
||||
);
|
||||
|
||||
/*
|
||||
* FUNCTION: Raises a user mode exception
|
||||
* ARGUMENTS:
|
||||
* ExceptionCode = Status code of the exception
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
KeRaiseUserException (
|
||||
IN NTSTATUS ExceptionCode
|
||||
);
|
||||
|
||||
LONG
|
||||
STDCALL
|
||||
KeReadStateEvent (
|
||||
PKEVENT Event
|
||||
);
|
||||
|
||||
LONG STDCALL
|
||||
KeReadStateMutant(IN PKMUTANT Mutant);
|
||||
|
||||
LONG STDCALL
|
||||
KeReadStateMutex(IN PKMUTEX Mutex);
|
||||
|
||||
LONG STDCALL
|
||||
KeReadStateQueue(IN PKQUEUE Queue);
|
||||
|
||||
LONG STDCALL
|
||||
KeReadStateSemaphore(IN PKSEMAPHORE Semaphore);
|
||||
|
||||
BOOLEAN STDCALL
|
||||
KeReadStateTimer(IN PKTIMER Timer);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
KeRegisterBugCheckCallback (
|
||||
PKBUGCHECK_CALLBACK_RECORD CallbackRecord,
|
||||
PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine,
|
||||
PVOID Buffer,
|
||||
ULONG Length,
|
||||
PUCHAR Component
|
||||
);
|
||||
|
||||
LONG
|
||||
STDCALL
|
||||
KeReleaseMutant(
|
||||
IN PKMUTANT Mutant,
|
||||
IN KPRIORITY Increment,
|
||||
IN BOOLEAN Abandon,
|
||||
IN BOOLEAN Wait
|
||||
);
|
||||
|
||||
LONG
|
||||
STDCALL
|
||||
KeReleaseMutex (
|
||||
PKMUTEX Mutex,
|
||||
BOOLEAN Wait
|
||||
);
|
||||
|
||||
LONG
|
||||
STDCALL
|
||||
KeReleaseSemaphore (
|
||||
PKSEMAPHORE Semaphore,
|
||||
KPRIORITY Increment,
|
||||
LONG Adjustment,
|
||||
BOOLEAN Wait
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
KeReleaseSpinLock (
|
||||
PKSPIN_LOCK Spinlock,
|
||||
KIRQL NewIrql
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
KeReleaseSpinLockFromDpcLevel (
|
||||
PKSPIN_LOCK Spinlock
|
||||
);
|
||||
|
||||
PKDEVICE_QUEUE_ENTRY
|
||||
STDCALL
|
||||
KeRemoveByKeyDeviceQueue (
|
||||
PKDEVICE_QUEUE DeviceQueue,
|
||||
ULONG SortKey
|
||||
);
|
||||
|
||||
PKDEVICE_QUEUE_ENTRY
|
||||
STDCALL
|
||||
KeRemoveDeviceQueue (
|
||||
PKDEVICE_QUEUE DeviceQueue
|
||||
);
|
||||
|
||||
BOOLEAN STDCALL
|
||||
KeRemoveEntryDeviceQueue(PKDEVICE_QUEUE DeviceQueue,
|
||||
PKDEVICE_QUEUE_ENTRY DeviceQueueEntry);
|
||||
|
||||
PLIST_ENTRY STDCALL
|
||||
KeRemoveQueue(IN PKQUEUE Queue,
|
||||
IN KPROCESSOR_MODE WaitMode,
|
||||
IN PLARGE_INTEGER Timeout OPTIONAL);
|
||||
|
||||
BOOLEAN STDCALL
|
||||
KeRemoveQueueDpc(IN PKDPC Dpc);
|
||||
|
||||
LONG STDCALL
|
||||
KeResetEvent(IN PKEVENT Event);
|
||||
|
||||
LONG STDCALL
|
||||
KeSetBasePriorityThread(struct _KTHREAD* Thread,
|
||||
LONG Increment);
|
||||
|
||||
LONG
|
||||
STDCALL
|
||||
KeSetEvent (
|
||||
PKEVENT Event,
|
||||
KPRIORITY Increment,
|
||||
BOOLEAN Wait
|
||||
);
|
||||
|
||||
KPRIORITY STDCALL KeSetPriorityThread (struct _KTHREAD* Thread,
|
||||
KPRIORITY Priority);
|
||||
|
||||
BOOLEAN STDCALL KeSetTimer (PKTIMER Timer,
|
||||
LARGE_INTEGER DueTime,
|
||||
PKDPC Dpc);
|
||||
|
||||
BOOLEAN STDCALL KeSetTimerEx (PKTIMER Timer,
|
||||
LARGE_INTEGER DueTime,
|
||||
LONG Period,
|
||||
PKDPC Dpc);
|
||||
|
||||
VOID STDCALL KeStallExecutionProcessor (ULONG MicroSeconds);
|
||||
|
||||
BOOLEAN STDCALL KeSynchronizeExecution (PKINTERRUPT Interrupt,
|
||||
PKSYNCHRONIZE_ROUTINE SynchronizeRoutine,
|
||||
PVOID SynchronizeContext);
|
||||
|
||||
NTSTATUS STDCALL KeWaitForMultipleObjects (ULONG Count,
|
||||
PVOID Object[],
|
||||
WAIT_TYPE WaitType,
|
||||
KWAIT_REASON WaitReason,
|
||||
KPROCESSOR_MODE WaitMode,
|
||||
BOOLEAN Alertable,
|
||||
PLARGE_INTEGER Timeout,
|
||||
PKWAIT_BLOCK WaitBlockArray);
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
KeWaitForMutexObject (
|
||||
PKMUTEX Mutex,
|
||||
KWAIT_REASON WaitReason,
|
||||
KPROCESSOR_MODE WaitMode,
|
||||
BOOLEAN Alertable,
|
||||
PLARGE_INTEGER Timeout
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
KeWaitForSingleObject (
|
||||
PVOID Object,
|
||||
KWAIT_REASON WaitReason,
|
||||
KPROCESSOR_MODE WaitMode,
|
||||
BOOLEAN Alertable,
|
||||
PLARGE_INTEGER Timeout
|
||||
);
|
||||
|
||||
|
||||
|
||||
// io permission map has a 8k size
|
||||
// Each bit in the IOPM corresponds to an io port byte address. The bitmap
|
||||
// is initialized to allow IO at any port. [ all bits set ].
|
||||
|
||||
typedef struct _IOPM
|
||||
{
|
||||
UCHAR Bitmap[8192];
|
||||
} IOPM, *PIOPM;
|
||||
|
||||
/*
|
||||
* FUNCTION: Provides the kernel with a new access map for a driver
|
||||
* ARGUMENTS:
|
||||
* NewMap: = If FALSE the kernel's map is set to all disabled. If TRUE
|
||||
* the kernel disables access to a particular port.
|
||||
* IoPortMap = Caller supplies storage for the io permission map.
|
||||
* REMARKS
|
||||
* Each bit in the IOPM corresponds to an io port byte address. The bitmap
|
||||
* is initialized to allow IO at any port. [ all bits set ]. The IOPL determines
|
||||
* the minium privilege level required to perform IO prior to checking the permission map.
|
||||
*/
|
||||
VOID Ke386SetIoAccessMap(ULONG NewMap, PIOPM *IoPermissionMap);
|
||||
|
||||
/*
|
||||
* FUNCTION: Queries the io permission map.
|
||||
* ARGUMENTS:
|
||||
* NewMap: = If FALSE the kernel's map is set to all disabled. If TRUE
|
||||
* the kernel disables access to a particular port.
|
||||
* IoPortMap = Caller supplies storage for the io permission map.
|
||||
* REMARKS
|
||||
* Each bit in the IOPM corresponds to an io port byte address. The bitmap
|
||||
* is initialized to allow IO at any port. [ all bits set ]. The IOPL determines
|
||||
* the minium privilege level required to perform IO prior to checking the permission map.
|
||||
*/
|
||||
VOID Ke386QueryIoAccessMap(BOOLEAN NewMap, PIOPM *IoPermissionMap);
|
||||
|
||||
/*
|
||||
* FUNCTION: Set the process IOPL
|
||||
* ARGUMENTS:
|
||||
* Eprocess = Pointer to a executive process object
|
||||
* EnableIo = Specify TRUE to enable IO and FALSE to disable
|
||||
*/
|
||||
NTSTATUS Ke386IoSetAccessProcess(struct _EPROCESS* Eprocess, BOOLEAN EnableIo);
|
||||
|
||||
/*
|
||||
* FUNCTION: Releases a set of Global Descriptor Table Selectors
|
||||
* ARGUMENTS:
|
||||
* SelArray =
|
||||
* NumOfSelectors =
|
||||
*/
|
||||
NTSTATUS KeI386ReleaseGdtSelectors(OUT PULONG SelArray,
|
||||
IN ULONG NumOfSelectors);
|
||||
|
||||
/*
|
||||
* FUNCTION: Allocates a set of Global Descriptor Table Selectors
|
||||
* ARGUMENTS:
|
||||
* SelArray =
|
||||
* NumOfSelectors =
|
||||
*/
|
||||
NTSTATUS KeI386AllocateGdtSelectors(OUT PULONG SelArray,
|
||||
IN ULONG NumOfSelectors);
|
||||
|
||||
|
||||
KIRQL
|
||||
FASTCALL
|
||||
KfAcquireSpinLock (
|
||||
IN PKSPIN_LOCK SpinLock
|
||||
);
|
||||
|
||||
VOID
|
||||
FASTCALL
|
||||
KfLowerIrql (
|
||||
IN KIRQL NewIrql
|
||||
);
|
||||
|
||||
|
||||
KIRQL
|
||||
FASTCALL
|
||||
KfRaiseIrql (
|
||||
IN KIRQL NewIrql
|
||||
);
|
||||
|
||||
VOID
|
||||
FASTCALL
|
||||
KfReleaseSpinLock (
|
||||
IN PKSPIN_LOCK SpinLock,
|
||||
IN KIRQL NewIrql
|
||||
);
|
||||
|
||||
|
||||
VOID STDCALL KiDeliverApc(ULONG Unknown1,
|
||||
ULONG Unknown2,
|
||||
ULONG Unknown3);
|
||||
|
||||
VOID STDCALL KiDispatchInterrupt(VOID);
|
||||
|
||||
#endif /* __INCLUDE_DDK_KEFUNCS_H */
|
||||
@@ -0,0 +1,288 @@
|
||||
/* KERNEL TYPES **************************************************************/
|
||||
|
||||
#ifndef __INCLUDE_DDK_KETYPES_H
|
||||
#define __INCLUDE_DDK_KETYPES_H
|
||||
|
||||
#define MB_FLAGS_MEM_INFO (0x1)
|
||||
#define MB_FLAGS_BOOT_DEVICE (0x2)
|
||||
#define MB_FLAGS_COMMAND_LINE (0x4)
|
||||
#define MB_FLAGS_MODULE_INFO (0x8)
|
||||
#define MB_FLAGS_AOUT_SYMS (0x10)
|
||||
#define MB_FLAGS_ELF_SYMS (0x20)
|
||||
#define MB_FLAGS_MMAP_INFO (0x40)
|
||||
#define MB_FLAGS_DRIVES_INFO (0x80)
|
||||
#define MB_FLAGS_CONFIG_TABLE (0x100)
|
||||
#define MB_FLAGS_BOOT_LOADER_NAME (0x200)
|
||||
#define MB_FLAGS_APM_TABLE (0x400)
|
||||
#define MB_FLAGS_GRAPHICS_TABLE (0x800)
|
||||
|
||||
typedef struct _LOADER_MODULE
|
||||
{
|
||||
ULONG ModStart;
|
||||
ULONG ModEnd;
|
||||
ULONG String;
|
||||
ULONG Reserved;
|
||||
} LOADER_MODULE, *PLOADER_MODULE;
|
||||
|
||||
typedef struct _ADDRESS_RANGE
|
||||
{
|
||||
ULONG BaseAddrLow;
|
||||
ULONG BaseAddrHigh;
|
||||
ULONG LengthLow;
|
||||
ULONG LengthHigh;
|
||||
ULONG Type;
|
||||
} ADDRESS_RANGE, *PADDRESS_RANGE;
|
||||
|
||||
typedef struct _LOADER_PARAMETER_BLOCK
|
||||
{
|
||||
ULONG Flags;
|
||||
ULONG MemLower;
|
||||
ULONG MemHigher;
|
||||
ULONG BootDevice;
|
||||
ULONG CommandLine;
|
||||
ULONG ModsCount;
|
||||
ULONG ModsAddr;
|
||||
UCHAR Syms[12];
|
||||
ULONG MmapLength;
|
||||
ULONG MmapAddr;
|
||||
ULONG DrivesCount;
|
||||
ULONG DrivesAddr;
|
||||
ULONG ConfigTable;
|
||||
ULONG BootLoaderName;
|
||||
} LOADER_PARAMETER_BLOCK, *PLOADER_PARAMETER_BLOCK;
|
||||
|
||||
#ifdef __NTOSKRNL__
|
||||
extern CHAR EXPORTED KeNumberProcessors;
|
||||
extern LOADER_PARAMETER_BLOCK EXPORTED KeLoaderBlock;
|
||||
extern ULONG EXPORTED KeDcacheFlushCount;
|
||||
extern ULONG EXPORTED KeIcacheFlushCount;
|
||||
#else
|
||||
extern CHAR IMPORTED KeNumberProcessors;
|
||||
extern LOADER_PARAMETER_BLOCK IMPORTED KeLoaderBlock;
|
||||
extern ULONG EXPORTED KeDcacheFlushCount;
|
||||
extern ULONG EXPORTED KeIcacheFlushCount;
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
struct _KMUTANT;
|
||||
|
||||
typedef LONG KPRIORITY;
|
||||
|
||||
typedef VOID STDCALL
|
||||
(*PKBUGCHECK_CALLBACK_ROUTINE)(PVOID Buffer,
|
||||
ULONG Length);
|
||||
|
||||
typedef BOOLEAN STDCALL
|
||||
(*PKSYNCHRONIZE_ROUTINE)(PVOID SynchronizeContext);
|
||||
|
||||
struct _KAPC;
|
||||
|
||||
typedef VOID STDCALL
|
||||
(*PKNORMAL_ROUTINE)(PVOID NormalContext,
|
||||
PVOID SystemArgument1,
|
||||
PVOID SystemArgument2);
|
||||
|
||||
typedef VOID STDCALL
|
||||
(*PKKERNEL_ROUTINE)(struct _KAPC* Apc,
|
||||
PKNORMAL_ROUTINE* NormalRoutine,
|
||||
PVOID* NormalContext,
|
||||
PVOID* SystemArgument1,
|
||||
PVOID* SystemArgument2);
|
||||
|
||||
typedef VOID STDCALL
|
||||
(*PKRUNDOWN_ROUTINE)(struct _KAPC* Apc);
|
||||
|
||||
struct _DISPATCHER_HEADER;
|
||||
|
||||
typedef struct _KWAIT_BLOCK
|
||||
/*
|
||||
* PURPOSE: Object describing the wait a thread is currently performing
|
||||
*/
|
||||
{
|
||||
LIST_ENTRY WaitListEntry;
|
||||
struct _KTHREAD* Thread;
|
||||
struct _DISPATCHER_HEADER *Object;
|
||||
struct _KWAIT_BLOCK* NextWaitBlock;
|
||||
USHORT WaitKey;
|
||||
USHORT WaitType;
|
||||
} KWAIT_BLOCK, *PKWAIT_BLOCK;
|
||||
|
||||
typedef struct _DISPATCHER_HEADER
|
||||
{
|
||||
UCHAR Type;
|
||||
UCHAR Absolute;
|
||||
UCHAR Size;
|
||||
UCHAR Inserted;
|
||||
LONG SignalState;
|
||||
LIST_ENTRY WaitListHead;
|
||||
} __attribute__((packed)) DISPATCHER_HEADER, *PDISPATCHER_HEADER;
|
||||
|
||||
|
||||
typedef struct _KQUEUE
|
||||
{
|
||||
DISPATCHER_HEADER Header;
|
||||
LIST_ENTRY EntryListHead;
|
||||
ULONG CurrentCount;
|
||||
ULONG MaximumCount;
|
||||
LIST_ENTRY ThreadListEntry;
|
||||
} KQUEUE, *PKQUEUE;
|
||||
|
||||
struct _KDPC;
|
||||
|
||||
typedef struct _KTIMER
|
||||
{
|
||||
DISPATCHER_HEADER Header;
|
||||
ULARGE_INTEGER DueTime;
|
||||
LIST_ENTRY TimerListEntry;
|
||||
struct _KDPC* Dpc;
|
||||
LONG Period;
|
||||
} KTIMER, *PKTIMER;
|
||||
|
||||
struct _KSPIN_LOCK;
|
||||
|
||||
typedef struct _KSPIN_LOCK
|
||||
{
|
||||
ULONG Lock;
|
||||
} KSPIN_LOCK, *PKSPIN_LOCK;
|
||||
|
||||
typedef struct _KDEVICE_QUEUE
|
||||
{
|
||||
LIST_ENTRY ListHead;
|
||||
BOOLEAN Busy;
|
||||
KSPIN_LOCK Lock;
|
||||
} KDEVICE_QUEUE, *PKDEVICE_QUEUE;
|
||||
|
||||
|
||||
typedef struct _KAPC
|
||||
{
|
||||
CSHORT Type;
|
||||
CSHORT Size;
|
||||
ULONG Spare0;
|
||||
struct _KTHREAD* Thread;
|
||||
LIST_ENTRY ApcListEntry;
|
||||
PKKERNEL_ROUTINE KernelRoutine;
|
||||
PKRUNDOWN_ROUTINE RundownRoutine;
|
||||
PKNORMAL_ROUTINE NormalRoutine;
|
||||
PVOID NormalContext;
|
||||
PVOID SystemArgument1;
|
||||
PVOID SystemArgument2;
|
||||
CCHAR ApcStateIndex;
|
||||
KPROCESSOR_MODE ApcMode;
|
||||
USHORT Inserted;
|
||||
} __attribute__((packed)) KAPC, *PKAPC;
|
||||
|
||||
typedef struct _KBUGCHECK_CALLBACK_RECORD
|
||||
{
|
||||
LIST_ENTRY Entry;
|
||||
PKBUGCHECK_CALLBACK_ROUTINE CallbackRoutine;
|
||||
PVOID Buffer;
|
||||
ULONG Length;
|
||||
PUCHAR Component;
|
||||
ULONG Checksum;
|
||||
UCHAR State;
|
||||
} KBUGCHECK_CALLBACK_RECORD, *PKBUGCHECK_CALLBACK_RECORD;
|
||||
|
||||
typedef struct _KMUTEX
|
||||
{
|
||||
DISPATCHER_HEADER Header;
|
||||
LIST_ENTRY MutantListEntry;
|
||||
struct _KTHREAD* OwnerThread;
|
||||
BOOLEAN Abandoned;
|
||||
UCHAR ApcDisable;
|
||||
} KMUTEX, *PKMUTEX, KMUTANT, *PKMUTANT;
|
||||
|
||||
typedef struct _KSEMAPHORE
|
||||
{
|
||||
DISPATCHER_HEADER Header;
|
||||
LONG Limit;
|
||||
} __attribute__((packed)) KSEMAPHORE, *PKSEMAPHORE;
|
||||
|
||||
typedef struct _KEVENT
|
||||
{
|
||||
DISPATCHER_HEADER Header;
|
||||
} KEVENT, *PKEVENT;
|
||||
|
||||
typedef struct _KEVENT_PAIR
|
||||
{
|
||||
CSHORT Type;
|
||||
CSHORT Size;
|
||||
KEVENT LowEvent;
|
||||
KEVENT HighEvent;
|
||||
} KEVENT_PAIR, *PKEVENT_PAIR;
|
||||
|
||||
|
||||
struct _KDPC;
|
||||
|
||||
/*
|
||||
* PURPOSE: Defines a delayed procedure call routine
|
||||
* NOTE:
|
||||
* Dpc = The associated DPC object
|
||||
* DeferredContext = Driver defined context for the DPC
|
||||
* SystemArgument[1-2] = Undocumented.
|
||||
*
|
||||
*/
|
||||
typedef VOID STDCALL
|
||||
(*PKDEFERRED_ROUTINE)(struct _KDPC* Dpc,
|
||||
PVOID DeferredContext,
|
||||
PVOID SystemArgument1,
|
||||
PVOID SystemArgument2);
|
||||
|
||||
/*
|
||||
* PURPOSE: Defines a delayed procedure call object
|
||||
*/
|
||||
typedef struct _KDPC
|
||||
{
|
||||
SHORT Type;
|
||||
UCHAR Number;
|
||||
UCHAR Importance;
|
||||
LIST_ENTRY DpcListEntry;
|
||||
PKDEFERRED_ROUTINE DeferredRoutine;
|
||||
PVOID DeferredContext;
|
||||
PVOID SystemArgument1;
|
||||
PVOID SystemArgument2;
|
||||
PULONG Lock;
|
||||
} __attribute__((packed)) KDPC, *PKDPC;
|
||||
|
||||
|
||||
|
||||
typedef struct _KDEVICE_QUEUE_ENTRY
|
||||
{
|
||||
LIST_ENTRY Entry;
|
||||
ULONG Key;
|
||||
BOOLEAN Inserted;
|
||||
} KDEVICE_QUEUE_ENTRY, *PKDEVICE_QUEUE_ENTRY;
|
||||
|
||||
typedef struct _WAIT_CONTEXT_BLOCK
|
||||
{
|
||||
} WAIT_CONTEXT_BLOCK, *PWAIT_CONTEXT_BLOCK;
|
||||
|
||||
struct _KINTERRUPT;
|
||||
|
||||
typedef BOOLEAN STDCALL
|
||||
(*PKSERVICE_ROUTINE)(struct _KINTERRUPT* Interrupt,
|
||||
PVOID ServiceContext);
|
||||
|
||||
typedef struct _KINTERRUPT
|
||||
{
|
||||
ULONG Vector;
|
||||
KAFFINITY ProcessorEnableMask;
|
||||
PKSPIN_LOCK IrqLock;
|
||||
BOOLEAN Shareable;
|
||||
BOOLEAN FloatingSave;
|
||||
PKSERVICE_ROUTINE ServiceRoutine;
|
||||
PVOID ServiceContext;
|
||||
LIST_ENTRY Entry;
|
||||
KIRQL SynchLevel;
|
||||
} KINTERRUPT, *PKINTERRUPT;
|
||||
|
||||
typedef struct _KSYSTEM_TIME
|
||||
{
|
||||
ULONG LowPart;
|
||||
LONG High1Part;
|
||||
LONG High2Part;
|
||||
} KSYSTEM_TIME, *PKSYSTEM_TIME;
|
||||
|
||||
typedef struct _EPROCESS EPROCESS, *PEPROCESS;
|
||||
|
||||
#endif /* __INCLUDE_DDK_KETYPES_H */
|
||||
@@ -0,0 +1,17 @@
|
||||
#ifndef __INCLUDE_DDK_LDRFUNCS_H
|
||||
#define __INCLUDE_DDK_LDRFUNCS_H
|
||||
/* $Id: ldrfuncs.h,v 1.5 2002/09/08 10:47:44 chorns Exp $ */
|
||||
|
||||
NTSTATUS STDCALL
|
||||
LdrAccessResource(IN PVOID BaseAddress,
|
||||
IN PIMAGE_RESOURCE_DATA_ENTRY ResourceDataEntry,
|
||||
OUT PVOID *Resource OPTIONAL,
|
||||
OUT PULONG Size OPTIONAL);
|
||||
|
||||
NTSTATUS STDCALL
|
||||
LdrFindResource_U(IN PVOID BaseAddress,
|
||||
IN PLDR_RESOURCE_INFO ResourceInfo,
|
||||
IN ULONG Level,
|
||||
OUT PIMAGE_RESOURCE_DATA_ENTRY *ResourceDataEntry);
|
||||
|
||||
#endif /* __INCLUDE_DDK_LDRFUNCS_H */
|
||||
@@ -0,0 +1,17 @@
|
||||
#ifndef __INCLUDE_DDK_LDRTYPES_H
|
||||
#define __INCLUDE_DDK_LDRTYPES_H
|
||||
/* $Id: ldrtypes.h,v 1.3 2002/09/08 10:47:44 chorns Exp $ */
|
||||
|
||||
typedef struct _LDR_RESOURCE_INFO
|
||||
{
|
||||
ULONG Type;
|
||||
ULONG Name;
|
||||
ULONG Language;
|
||||
} LDR_RESOURCE_INFO, *PLDR_RESOURCE_INFO;
|
||||
|
||||
#define RESOURCE_TYPE_LEVEL 0
|
||||
#define RESOURCE_NAME_LEVEL 1
|
||||
#define RESOURCE_LANGUAGE_LEVEL 2
|
||||
#define RESOURCE_DATA_LEVEL 3
|
||||
|
||||
#endif /* __INCLUDE_DDK_LDRTYPES_H */
|
||||
@@ -0,0 +1,25 @@
|
||||
/*
|
||||
* MINIPORT.H - miniport driver interface header
|
||||
*/
|
||||
|
||||
#define EMULATOR_READ_ACCESS 0x00000001
|
||||
#define EMULATOR_WRITE_ACCESS 0x00000002
|
||||
|
||||
typedef enum _EMULATOR_PORT_ACCESS_TYPE
|
||||
{
|
||||
Uchar,
|
||||
Ushort,
|
||||
Ulong
|
||||
} EMULATOR_PORT_ACCESS_TYPE, *PEMULATOR_PORT_ACCESS_TYPE;
|
||||
|
||||
typedef struct _EMULATOR_ACCESS_ENTRY
|
||||
{
|
||||
ULONG BasePort;
|
||||
ULONG NumConsecutivePorts;
|
||||
EMULATOR_PORT_ACCESS_TYPE AccessType;
|
||||
UCHAR AccessMode;
|
||||
UCHAR StringSupport;
|
||||
PVOID Routine;
|
||||
} EMULATOR_ACCESS_ENTRY, *PEMULATOR_ACCESS_ENTRY;
|
||||
|
||||
|
||||
@@ -0,0 +1,553 @@
|
||||
#ifndef _INCLUDE_DDK_MMFUNCS_H
|
||||
#define _INCLUDE_DDK_MMFUNCS_H
|
||||
/* $Id: mmfuncs.h,v 1.13 2002/09/08 10:47:44 chorns Exp $ */
|
||||
/* MEMORY MANAGMENT ******************************************************/
|
||||
|
||||
|
||||
#ifdef __NTOSKRNL__
|
||||
extern PVOID EXPORTED MmUserProbeAddress;
|
||||
extern PVOID EXPORTED MmHighestUserAddress;
|
||||
#else
|
||||
extern PVOID IMPORTED MmUserProbeAddress;
|
||||
extern PVOID IMPORTED MmHighestUserAddress;
|
||||
#endif
|
||||
|
||||
#ifdef __NTOSKRNL__
|
||||
extern POBJECT_TYPE EXPORTED MmSectionObjectType;
|
||||
#else
|
||||
extern POBJECT_TYPE IMPORTED MmSectionObjectType;
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* FUNCTION: Returns the number of pages spanned by an address range
|
||||
* ARGUMENTS:
|
||||
* Va = start of range
|
||||
* Size = Size of range
|
||||
* RETURNS: The number of pages
|
||||
*/
|
||||
#if 0
|
||||
extern inline unsigned int ADDRESS_AND_SIZE_TO_SPAN_PAGES(PVOID Va,
|
||||
ULONG Size)
|
||||
{
|
||||
ULONG HighestAddr;
|
||||
ULONG LowestAddr;
|
||||
|
||||
HighestAddr = PAGE_ROUND_UP(Size + ((ULONG)Va));
|
||||
LowestAddr = PAGE_ROUND_DOWN((ULONG)Va);
|
||||
return((HighestAddr - LowestAddr) / PAGESIZE);
|
||||
}
|
||||
#endif
|
||||
#define ADDRESS_AND_SIZE_TO_SPAN_PAGES(Va, Size) \
|
||||
(ULONG)((PAGE_ROUND_UP((Size) + ((ULONG)(Va))) - \
|
||||
PAGE_ROUND_DOWN((ULONG)(Va))) / PAGESIZE)
|
||||
|
||||
/*
|
||||
* FUNCTION: Returns FALSE is the pointer is NULL, TRUE otherwise
|
||||
*/
|
||||
#define ARGUMENT_PRESENT(arg) ((arg)!=NULL)
|
||||
|
||||
/*
|
||||
* FUNCTION: Returns the byte offset of the address within its page
|
||||
*/
|
||||
#define BYTE_OFFSET(va) (((ULONG)va)%PAGESIZE)
|
||||
|
||||
/*
|
||||
* FUNCTION: Takes a count in bytes and returns the number of pages
|
||||
* required to hold it
|
||||
*/
|
||||
#define BYTES_TO_PAGES(size) (?)
|
||||
|
||||
DWORD
|
||||
STDCALL
|
||||
MmAdjustWorkingSetSize (
|
||||
DWORD Unknown0,
|
||||
DWORD Unknown1,
|
||||
DWORD Unknown2
|
||||
);
|
||||
PVOID
|
||||
STDCALL
|
||||
MmAllocateContiguousMemory (
|
||||
IN ULONG NumberOfBytes,
|
||||
IN PHYSICAL_ADDRESS HighestAcceptableAddress
|
||||
);
|
||||
|
||||
PVOID STDCALL
|
||||
MmAllocateContiguousAlignedMemory(IN ULONG NumberOfBytes,
|
||||
IN PHYSICAL_ADDRESS HighestAcceptableAddress,
|
||||
IN ULONG Alignment);
|
||||
|
||||
PVOID
|
||||
STDCALL
|
||||
MmAllocateNonCachedMemory (
|
||||
IN ULONG NumberOfBytes
|
||||
);
|
||||
/*
|
||||
* FUNCTION: Fills in the corresponding physical page array for a given MDL
|
||||
* for a buffer in nonpaged system space
|
||||
* ARGUMENTS:
|
||||
* MemoryDescriptorList = MDL to fill
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
MmBuildMdlForNonPagedPool (
|
||||
PMDL MemoryDescriptorList
|
||||
);
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
MmCanFileBeTruncated (
|
||||
IN PSECTION_OBJECT_POINTERS SectionObjectPointer,
|
||||
IN PLARGE_INTEGER NewFileSize
|
||||
);
|
||||
/*
|
||||
* FUNCTION: Allocates and initializes an MDL
|
||||
* ARGUMENTS:
|
||||
* MemoryDescriptorList = Optional caller allocated MDL to initalize
|
||||
* Base = Base virtual address for buffer
|
||||
* Length = Length in bytes of the buffer
|
||||
* RETURNS: A pointer to the initalized MDL
|
||||
*/
|
||||
PMDL
|
||||
STDCALL
|
||||
MmCreateMdl (
|
||||
PMDL MemoryDescriptorList,
|
||||
PVOID Base,
|
||||
ULONG Length
|
||||
);
|
||||
#if 0
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
MmCreateSection (
|
||||
OUT PSECTION_OBJECT * SectionObject,
|
||||
IN ACCESS_MASK DesiredAccess,
|
||||
IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
|
||||
IN PLARGE_INTEGER MaximumSize,
|
||||
IN ULONG SectionPageProtection,
|
||||
IN ULONG AllocationAttributes,
|
||||
IN HANDLE FileHandle OPTIONAL,
|
||||
IN PFILE_OBJECT File OPTIONAL
|
||||
);
|
||||
#endif
|
||||
DWORD
|
||||
STDCALL
|
||||
MmDbgTranslatePhysicalAddress (
|
||||
DWORD Unknown0,
|
||||
DWORD Unknown1
|
||||
);
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
MmDisableModifiedWriteOfSection (
|
||||
DWORD Unknown0
|
||||
);
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
MmFlushImageSection (
|
||||
IN PSECTION_OBJECT_POINTERS SectionObjectPointer,
|
||||
IN MMFLUSH_TYPE FlushType
|
||||
);
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
MmForceSectionClosed (
|
||||
DWORD Unknown0,
|
||||
DWORD Unknown1
|
||||
);
|
||||
VOID
|
||||
STDCALL
|
||||
MmFreeContiguousMemory (
|
||||
IN OUT PVOID BaseAddress
|
||||
);
|
||||
VOID
|
||||
STDCALL
|
||||
MmFreeNonCachedMemory (
|
||||
IN PVOID BaseAddress,
|
||||
IN ULONG NumberOfBytes
|
||||
);
|
||||
/*
|
||||
* FUNCTION: Returns the length in bytes of a buffer described by an MDL
|
||||
* ARGUMENTS:
|
||||
* Mdl = the mdl
|
||||
* RETURNS: Size of the buffer
|
||||
*/
|
||||
#define MmGetMdlByteCount(Mdl) ((Mdl)->ByteCount)
|
||||
|
||||
/*
|
||||
* FUNCTION: Returns the byte offset within a page of the buffer described
|
||||
* by an MDL
|
||||
* ARGUMENTS:
|
||||
* Mdl = the mdl
|
||||
* RETURNS: The offset in bytes
|
||||
*/
|
||||
#define MmGetMdlByteOffset(Mdl) \
|
||||
((Mdl)->ByteOffset)
|
||||
|
||||
/*
|
||||
* FUNCTION: Returns the initial virtual address for a buffer described
|
||||
* by an MDL
|
||||
* ARGUMENTS:
|
||||
* Mdl = the mdl
|
||||
* RETURNS: The initial virtual address
|
||||
*/
|
||||
#define MmGetMdlVirtualAddress(Mdl) \
|
||||
((PVOID) ((PCHAR) (Mdl)->StartVa + (Mdl)->ByteOffset))
|
||||
|
||||
/*
|
||||
* FUNCTION: Returns the physical address corresponding to a given valid
|
||||
* virtual address
|
||||
* ARGUMENTS:
|
||||
* BaseAddress = the virtual address
|
||||
* RETURNS: The physical address
|
||||
*/
|
||||
PHYSICAL_ADDRESS
|
||||
STDCALL
|
||||
MmGetPhysicalAddress (
|
||||
IN PVOID BaseAddress
|
||||
);
|
||||
|
||||
#define MmGetProcedureAddress(Address) (Address)
|
||||
|
||||
/*
|
||||
* PVOID
|
||||
* MmGetSystemAddressForMdl (
|
||||
* PMDL Mdl
|
||||
* );
|
||||
*
|
||||
* FUNCTION:
|
||||
* Maps the physical pages described by an MDL into system space
|
||||
*
|
||||
* ARGUMENTS:
|
||||
* Mdl = mdl
|
||||
*
|
||||
* RETURNS:
|
||||
* The base system address for the mapped buffer
|
||||
*/
|
||||
#define MmGetSystemAddressForMdl(Mdl) \
|
||||
(((Mdl)->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA | MDL_SOURCE_IS_NONPAGED_POOL)) ? \
|
||||
((Mdl)->MappedSystemVa):(MmMapLockedPages((Mdl),KernelMode)))
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
MmGrowKernelStack (
|
||||
DWORD Unknown0
|
||||
);
|
||||
|
||||
|
||||
/*
|
||||
* VOID
|
||||
* MmInitializeMdl (
|
||||
* PMDL MemoryDescriptorList,
|
||||
* PVOID BaseVa,
|
||||
* ULONG Length
|
||||
* );
|
||||
*
|
||||
* FUNCTION:
|
||||
* Initalizes an MDL
|
||||
*
|
||||
* ARGUMENTS:
|
||||
* MemoryDescriptorList = MDL to be initalized
|
||||
* BaseVa = Base virtual address of the buffer
|
||||
* Length = Length in bytes of the buffer
|
||||
*/
|
||||
#define MmInitializeMdl(MemoryDescriptorList,BaseVa,Length) \
|
||||
{ \
|
||||
(MemoryDescriptorList)->Next = (PMDL)NULL; \
|
||||
(MemoryDescriptorList)->Size = (CSHORT)(sizeof(MDL) + \
|
||||
(ADDRESS_AND_SIZE_TO_SPAN_PAGES((BaseVa),(Length)) * sizeof(ULONG))); \
|
||||
(MemoryDescriptorList)->MdlFlags = 0; \
|
||||
(MemoryDescriptorList)->StartVa = (PVOID)PAGE_ROUND_DOWN((BaseVa)); \
|
||||
(MemoryDescriptorList)->ByteOffset = (ULONG)((BaseVa) - PAGE_ROUND_DOWN((BaseVa))); \
|
||||
(MemoryDescriptorList)->ByteCount = (Length); \
|
||||
(MemoryDescriptorList)->Process = PsGetCurrentProcess(); \
|
||||
}
|
||||
|
||||
/*
|
||||
* FUNCTION: Checks whether an address is valid for read/write
|
||||
* ARGUMENTS:
|
||||
* VirtualAddress = address to be check
|
||||
* RETURNS: TRUE if an access would be valid
|
||||
*/
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
MmIsAddressValid (
|
||||
IN PVOID VirtualAddress
|
||||
);
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
MmIsNonPagedSystemAddressValid (
|
||||
IN PVOID VirtualAddress
|
||||
);
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
MmIsRecursiveIoFault (
|
||||
VOID
|
||||
);
|
||||
/*
|
||||
* FUNCTION: Checks if the current platform is a workstation or a server
|
||||
* RETURNS: If the system is a server returns true
|
||||
* NOTE: Drivers can use this as an estimate of the likely resources
|
||||
* available
|
||||
*/
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
MmIsThisAnNtAsSystem (
|
||||
VOID
|
||||
);
|
||||
/*
|
||||
* FUNCTION: Locks a section of the driver's code into memory
|
||||
* ARGUMENTS:
|
||||
* AddressWithinSection = Any address in the region
|
||||
* RETURNS: A handle to the region
|
||||
*/
|
||||
#define MmLockPagableCodeSection(Address) \
|
||||
MmLockPagableDataSection(Address)
|
||||
|
||||
/*
|
||||
* FUNCTION: Locks a section of the driver's data into memory
|
||||
* ARGUMENTS:
|
||||
* AddressWithinSection = Any address in the region
|
||||
* RETURNS: A handle to the region
|
||||
*/
|
||||
PVOID
|
||||
STDCALL
|
||||
MmLockPagableDataSection (
|
||||
PVOID AddressWithinSection
|
||||
);
|
||||
PVOID
|
||||
STDCALL
|
||||
MmLockPagableImageSection (
|
||||
PVOID AddressWithinSection
|
||||
);
|
||||
/*
|
||||
* FUNCTION: Locks a section of memory
|
||||
* ARGUMENTS:
|
||||
* ImageSectionHandle = handle returned from MmLockPagableCodeSection
|
||||
* or MmLockPagableDataSection
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
MmLockPagableSectionByHandle (
|
||||
PVOID ImageSectionHandle
|
||||
);
|
||||
PVOID
|
||||
STDCALL
|
||||
MmMapIoSpace (
|
||||
PHYSICAL_ADDRESS PhysicalAddress,
|
||||
ULONG NumberOfBytes,
|
||||
BOOLEAN CacheEnable
|
||||
);
|
||||
/*
|
||||
* FUNCTION: Maps the pages described by a given MDL
|
||||
* ARGUMENTS:
|
||||
* MemoryDescriptorList = MDL updated by MmProbeAndLockPages
|
||||
* AccessMode = Access mode in which to map the MDL
|
||||
* RETURNS: The base virtual address which maps the buffer
|
||||
*/
|
||||
PVOID
|
||||
STDCALL
|
||||
MmMapLockedPages (
|
||||
PMDL MemoryDescriptorList,
|
||||
KPROCESSOR_MODE AccessMode
|
||||
);
|
||||
VOID
|
||||
STDCALL
|
||||
MmMapMemoryDumpMdl (
|
||||
PVOID Unknown0
|
||||
);
|
||||
PVOID
|
||||
STDCALL
|
||||
MmMapVideoDisplay (
|
||||
IN PHYSICAL_ADDRESS PhysicalAddress,
|
||||
IN ULONG NumberOfBytes,
|
||||
IN MEMORY_CACHING_TYPE CacheType
|
||||
);
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
MmMapViewInSystemSpace (
|
||||
IN PVOID Section,
|
||||
OUT PVOID * MappedBase,
|
||||
IN PULONG ViewSize
|
||||
);
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
MmMapViewOfSection (
|
||||
IN PVOID SectionObject,
|
||||
IN PEPROCESS Process,
|
||||
IN OUT PVOID * BaseAddress,
|
||||
IN ULONG ZeroBits,
|
||||
IN ULONG CommitSize,
|
||||
IN OUT PLARGE_INTEGER SectionOffset OPTIONAL,
|
||||
IN OUT PULONG ViewSize,
|
||||
IN SECTION_INHERIT InheritDisposition,
|
||||
IN ULONG AllocationType,
|
||||
IN ULONG Protect
|
||||
);
|
||||
|
||||
/*
|
||||
* FUNCTION: Makes the whole driver pageable
|
||||
* ARGUMENTS:
|
||||
* AddressWithinSection = Any address within the driver
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
MmPageEntireDriver (
|
||||
PVOID AddressWithinSection
|
||||
);
|
||||
|
||||
/*
|
||||
* VOID
|
||||
* MmPrepareMdlForReuse (
|
||||
* PMDL Mdl
|
||||
* );
|
||||
*
|
||||
* FUNCTION:
|
||||
* Reinitializes a caller-allocated MDL
|
||||
*
|
||||
* ARGUMENTS:
|
||||
* Mdl = Points to the MDL that will be reused
|
||||
*/
|
||||
#define MmPrepareMdlForReuse(Mdl) \
|
||||
if (((Mdl)->MdlFlags & MDL_PARTIAL_HAS_BEEN_MAPPED) != 0) \
|
||||
{ \
|
||||
assert(((Mdl)->MdlFlags & MDL_PARTIAL) != 0); \
|
||||
MmUnmapLockedPages ((Mdl)->MappedSystemVa, (Mdl)); \
|
||||
} \
|
||||
else if (((Mdl)->MdlFlags & MDL_PARTIAL) == 0) \
|
||||
{ \
|
||||
assert(((Mdl)->MdlFlags & MDL_MAPPED_TO_SYSTEM_VA) == 0); \
|
||||
}
|
||||
|
||||
/*
|
||||
* FUNCTION: Probes the specified pages, makes them resident and locks
|
||||
* the physical pages mapped by the virtual address range
|
||||
* ARGUMENTS:
|
||||
* MemoryDescriptorList = MDL which supplies the virtual address,
|
||||
* byte offset and length
|
||||
* AccessMode = Access mode with which to probe the arguments
|
||||
* Operation = Types of operation for which the pages should be
|
||||
* probed
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
MmProbeAndLockPages (
|
||||
PMDL MemoryDescriptorList,
|
||||
KPROCESSOR_MODE AccessMode,
|
||||
LOCK_OPERATION Operation
|
||||
);
|
||||
|
||||
/*
|
||||
* FUNCTION: Returns an estimate of the amount of memory in the system
|
||||
* RETURNS: Either MmSmallSystem, MmMediumSystem or MmLargeSystem
|
||||
*/
|
||||
MM_SYSTEM_SIZE
|
||||
STDCALL
|
||||
MmQuerySystemSize (
|
||||
VOID
|
||||
);
|
||||
|
||||
/*
|
||||
* FUNCTION: Resets the pageable status of a driver's sections to their
|
||||
* compile time settings
|
||||
* ARGUMENTS:
|
||||
* AddressWithinSection = Any address within the driver
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
MmResetDriverPaging (
|
||||
PVOID AddressWithinSection
|
||||
);
|
||||
|
||||
DWORD
|
||||
STDCALL
|
||||
MmSecureVirtualMemory (
|
||||
DWORD Unknown0,
|
||||
DWORD Unknown1,
|
||||
DWORD Unknown2
|
||||
);
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
MmSetAddressRangeModified (
|
||||
DWORD Unknown0,
|
||||
DWORD Unknown1
|
||||
);
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
MmSetBankedSection (
|
||||
DWORD Unknown0,
|
||||
DWORD Unknown1,
|
||||
DWORD Unknown2,
|
||||
DWORD Unknown3,
|
||||
DWORD Unknown4,
|
||||
DWORD Unknown5
|
||||
);
|
||||
|
||||
/*
|
||||
* FUNCTION: Returns the number of bytes to allocate for an MDL
|
||||
* describing a given address range
|
||||
* ARGUMENTS:
|
||||
* Base = Base virtual address for the region
|
||||
* Length = size in bytes of the region
|
||||
* RETURNS: The number of bytes required for the MDL
|
||||
*/
|
||||
ULONG
|
||||
STDCALL
|
||||
MmSizeOfMdl (
|
||||
PVOID Base,
|
||||
ULONG Length
|
||||
);
|
||||
/*
|
||||
* FUNCTION: Unlocks the physical pages described by a given MDL
|
||||
* ARGUMENTS:
|
||||
* Mdl = Mdl to unlock
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
MmUnlockPages (
|
||||
PMDL Mdl
|
||||
);
|
||||
/*
|
||||
* FUNCTION: Releases a section of driver code or data previously locked into
|
||||
* memory
|
||||
* ARGUMENTS:
|
||||
* ImageSectionHandle = Handle for the locked section
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
MmUnlockPagableImageSection (
|
||||
PVOID ImageSectionHandle
|
||||
);
|
||||
VOID
|
||||
STDCALL
|
||||
MmUnmapIoSpace (
|
||||
PVOID BaseAddress,
|
||||
ULONG NumberOfBytes
|
||||
);
|
||||
VOID
|
||||
STDCALL
|
||||
MmUnmapLockedPages (
|
||||
PVOID BaseAddress,
|
||||
PMDL MemoryDescriptorList
|
||||
);
|
||||
VOID
|
||||
STDCALL
|
||||
MmUnmapVideoDisplay (
|
||||
IN PVOID BaseAddress,
|
||||
IN ULONG NumberOfBytes
|
||||
);
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
MmUnmapViewInSystemSpace (
|
||||
DWORD Unknown0
|
||||
);
|
||||
#if 0
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
MmUnmapViewOfSection (
|
||||
PEPROCESS Process,
|
||||
PMEMORY_AREA MemoryArea
|
||||
)
|
||||
#endif
|
||||
VOID
|
||||
STDCALL
|
||||
MmUnsecureVirtualMemory (
|
||||
DWORD Unknown0
|
||||
);
|
||||
#endif
|
||||
@@ -0,0 +1,88 @@
|
||||
/* $Id: mmtypes.h,v 1.13 2002/09/08 10:47:44 chorns Exp $ */
|
||||
|
||||
#ifndef _INCLUDE_DDK_MMTYPES_H
|
||||
#define _INCLUDE_DDK_MMTYPES_H
|
||||
|
||||
#include <ddk/i386/pagesize.h>
|
||||
#include <ntos/mm.h>
|
||||
|
||||
|
||||
#define PAGE_ROUND_UP(x) ( (((ULONG)x)%PAGESIZE) ? ((((ULONG)x)&(~0xfff))+0x1000) : ((ULONG)x) )
|
||||
#define PAGE_ROUND_DOWN(x) (((ULONG)x)&(~0xfff))
|
||||
|
||||
|
||||
/*
|
||||
* FUNCTION: Determines if the given virtual address is page aligned
|
||||
*/
|
||||
#define IS_PAGE_ALIGNED(Va) (((ULONG)Va)&0xfff)
|
||||
|
||||
/*
|
||||
* PURPOSE: Returns the byte offset of a field within a structure
|
||||
*/
|
||||
#define FIELD_OFFSET(Type,Field) (LONG)(&(((Type *)(0))->Field))
|
||||
|
||||
/*
|
||||
* PURPOSE: Returns the base address structure if the caller knows the
|
||||
* address of a field within the structure
|
||||
* ARGUMENTS:
|
||||
* Address = address of the field
|
||||
* Type = Type of the whole structure
|
||||
* Field = Name of the field whose address is none
|
||||
*/
|
||||
#define CONTAINING_RECORD(Address,Type,Field) (Type *)(((LONG)Address) - FIELD_OFFSET(Type,Field))
|
||||
|
||||
|
||||
#define MDL_MAPPED_TO_SYSTEM_VA (0x1)
|
||||
#define MDL_PAGES_LOCKED (0x2)
|
||||
#define MDL_SOURCE_IS_NONPAGED_POOL (0x4)
|
||||
#define MDL_ALLOCATED_FIXED_SIZE (0x8)
|
||||
#define MDL_PARTIAL (0x10)
|
||||
#define MDL_PARTIAL_HAS_BEEN_MAPPED (0x20)
|
||||
#define MDL_IO_PAGE_READ (0x40)
|
||||
#define MDL_WRITE_OPERATION (0x80)
|
||||
#define MDL_PARENT_MAPPED_SYSTEM_VA (0x100)
|
||||
#define MDL_LOCK_HELD (0x200)
|
||||
#define MDL_SCATTER_GATHER_VA (0x400)
|
||||
#define MDL_IO_SPACE (0x800)
|
||||
#define MDL_NETWORK_HEADER (0x1000)
|
||||
#define MDL_MAPPING_CAN_FAIL (0x2000)
|
||||
#define MDL_ALLOCATED_MUST_SUCCEED (0x4000)
|
||||
#define MDL_64_BIT_VA (0x8000)
|
||||
|
||||
|
||||
typedef struct _MDL
|
||||
/*
|
||||
* PURPOSE: Describes a user buffer passed to a system API
|
||||
*/
|
||||
{
|
||||
struct _MDL* Next;
|
||||
CSHORT Size;
|
||||
CSHORT MdlFlags;
|
||||
struct _EPROCESS* Process;
|
||||
PVOID MappedSystemVa;
|
||||
PVOID StartVa;
|
||||
ULONG ByteCount;
|
||||
ULONG ByteOffset;
|
||||
} MDL, *PMDL;
|
||||
|
||||
#define MmSmallSystem (0)
|
||||
#define MmMediumSystem (1)
|
||||
#define MmLargeSystem (2)
|
||||
|
||||
/* Used in MmFlushImageSection */
|
||||
typedef enum _MMFLUSH_TYPE
|
||||
{
|
||||
MmFlushForDelete,
|
||||
MmFlushForWrite
|
||||
} MMFLUSH_TYPE;
|
||||
|
||||
typedef enum _MEMORY_CACHING_TYPE
|
||||
{
|
||||
MmNonCached = FALSE,
|
||||
MmCached = TRUE,
|
||||
MmFrameBufferCached,
|
||||
MmHardwareCoherentCached,
|
||||
MmMaximumCacheType
|
||||
} MEMORY_CACHING_TYPE;
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,98 @@
|
||||
#ifndef _NTDD8042_
|
||||
#define _NTDD8042_
|
||||
|
||||
#define IOCTL_INTERNAL_I8042_HOOK_KEYBOARD CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0FF0, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
#define IOCTL_INTERNAL_I8042_HOOK_MOUSE CTL_CODE(FILE_DEVICE_MOUSE, 0x0FF0, METHOD_NEITHER, FILE_ANY_ACCESS)
|
||||
|
||||
typedef enum _KEYBOARD_SCAN_STATE {
|
||||
Normal,
|
||||
GotE0,
|
||||
GotE1
|
||||
} KEYBOARD_SCAN_STATE, *PKEYBOARD_SCAN_STATE;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
(*PI8042_SYNCH_READ_PORT) (
|
||||
IN PVOID Context,
|
||||
PUCHAR Value,
|
||||
BOOLEAN WaitForACK
|
||||
);
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
(*PI8042_SYNCH_WRITE_PORT) (
|
||||
IN PVOID Context,
|
||||
UCHAR Value,
|
||||
BOOLEAN WaitForACK
|
||||
);
|
||||
|
||||
typedef enum _TRANSMIT_STATE {
|
||||
Idle = 0,
|
||||
SendingBytes
|
||||
} TRANSMIT_STATE;
|
||||
|
||||
typedef struct _OUTPUT_PACKET {
|
||||
PUCHAR Bytes;
|
||||
ULONG CurrentByte;
|
||||
ULONG ByteCount;
|
||||
TRANSMIT_STATE State;
|
||||
} OUTPUT_PACKET, *POUTPUT_PACKET;
|
||||
|
||||
typedef
|
||||
NTSTATUS
|
||||
(*PI8042_KEYBOARD_INITIALIZATION_ROUTINE) (
|
||||
IN PVOID InitializationContext,
|
||||
IN PVOID SynchFuncContext,
|
||||
IN PI8042_SYNCH_READ_PORT ReadPort,
|
||||
IN PI8042_SYNCH_WRITE_PORT WritePort,
|
||||
OUT PBOOLEAN TurnTranslationOn
|
||||
);
|
||||
|
||||
typedef
|
||||
BOOLEAN
|
||||
(*PI8042_KEYBOARD_ISR) (
|
||||
PVOID IsrContext,
|
||||
PKEYBOARD_INPUT_DATA CurrentInput,
|
||||
POUTPUT_PACKET CurrentOutput,
|
||||
UCHAR StatusByte,
|
||||
PUCHAR Byte,
|
||||
PBOOLEAN ContinueProcessing,
|
||||
PKEYBOARD_SCAN_STATE ScanState
|
||||
);
|
||||
|
||||
typedef struct _INTERNAL_I8042_HOOK_KEYBOARD {
|
||||
|
||||
//
|
||||
// Context variable for all callback routines
|
||||
//
|
||||
PVOID Context;
|
||||
|
||||
//
|
||||
// Routine to call after the mouse is reset
|
||||
//
|
||||
PI8042_KEYBOARD_INITIALIZATION_ROUTINE InitializationRoutine;
|
||||
|
||||
//
|
||||
// Routine to call when a byte is received via the interrupt
|
||||
//
|
||||
PI8042_KEYBOARD_ISR IsrRoutine;
|
||||
|
||||
//
|
||||
// Write function
|
||||
//
|
||||
//UNIMPLEMENTED PI8042_ISR_WRITE_PORT IsrWritePort;
|
||||
|
||||
//
|
||||
// Queue the current packet (ie the one passed into the isr callback hook)
|
||||
// to be reported to the class driver
|
||||
//
|
||||
//UNIMPLEMENTED PI8042_QUEUE_PACKET QueueKeyboardPacket;
|
||||
|
||||
//
|
||||
// Context for IsrWritePort, QueueKeyboardPacket
|
||||
//
|
||||
//UNIMPLEMENTED PVOID CallContext;
|
||||
|
||||
} INTERNAL_I8042_HOOK_KEYBOARD, *PINTERNAL_I8042_HOOK_KEYBOARD;
|
||||
|
||||
#endif //_NTDD8042_
|
||||
@@ -0,0 +1,15 @@
|
||||
#ifndef _BEEP_H_INCLUDED_
|
||||
#define _BEEP_H_INCLUDED_
|
||||
|
||||
#define IOCTL_BEEP_SET CTL_CODE(FILE_DEVICE_BEEP,0,METHOD_BUFFERED,FILE_ANY_ACCESS)
|
||||
|
||||
typedef struct tagBEEP_SET_PARAMETERS
|
||||
{
|
||||
ULONG Frequency;
|
||||
ULONG Duration;
|
||||
} BEEP_SET_PARAMETERS, *PBEEP_SET_PARAMETERS;
|
||||
|
||||
#define BEEP_FREQUENCY_MINIMUM 0x25
|
||||
#define BEEP_FREQUENCY_MAXIMUM 0x7FFF
|
||||
|
||||
#endif /* _BEEP_H_INCLUDED_ */
|
||||
@@ -0,0 +1,64 @@
|
||||
#ifndef _NTDDBLUE_H_INCLUDED_
|
||||
#define _NTDDBLUE_H_INCLUDED_
|
||||
|
||||
#include <ntos/console.h>
|
||||
|
||||
#define IOCTL_CONSOLE_GET_SCREEN_BUFFER_INFO CTL_CODE(FILE_DEVICE_SCREEN, 0x801, METHOD_BUFFERED, FILE_READ_ACCESS)
|
||||
#define IOCTL_CONSOLE_SET_SCREEN_BUFFER_INFO CTL_CODE(FILE_DEVICE_SCREEN, 0x802, METHOD_BUFFERED, FILE_WRITE_ACCESS)
|
||||
#define IOCTL_CONSOLE_GET_CURSOR_INFO CTL_CODE(FILE_DEVICE_SCREEN, 0x803, METHOD_BUFFERED, FILE_READ_ACCESS)
|
||||
#define IOCTL_CONSOLE_SET_CURSOR_INFO CTL_CODE(FILE_DEVICE_SCREEN, 0x804, METHOD_BUFFERED, FILE_WRITE_ACCESS)
|
||||
#define IOCTL_CONSOLE_GET_MODE CTL_CODE(FILE_DEVICE_SCREEN, 0x805, METHOD_BUFFERED, FILE_READ_ACCESS)
|
||||
#define IOCTL_CONSOLE_SET_MODE CTL_CODE(FILE_DEVICE_SCREEN, 0x806, METHOD_BUFFERED, FILE_WRITE_ACCESS)
|
||||
|
||||
|
||||
#define IOCTL_CONSOLE_FILL_OUTPUT_ATTRIBUTE CTL_CODE(FILE_DEVICE_SCREEN, 0x810, METHOD_BUFFERED, FILE_WRITE_ACCESS)
|
||||
#define IOCTL_CONSOLE_READ_OUTPUT_ATTRIBUTE CTL_CODE(FILE_DEVICE_SCREEN, 0x811, METHOD_IN_DIRECT, FILE_ANY_ACCESS)
|
||||
#define IOCTL_CONSOLE_WRITE_OUTPUT_ATTRIBUTE CTL_CODE(FILE_DEVICE_SCREEN, 0x812, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
|
||||
#define IOCTL_CONSOLE_SET_TEXT_ATTRIBUTE CTL_CODE(FILE_DEVICE_SCREEN, 0x813, METHOD_BUFFERED, FILE_WRITE_ACCESS)
|
||||
|
||||
|
||||
#define IOCTL_CONSOLE_FILL_OUTPUT_CHARACTER CTL_CODE(FILE_DEVICE_SCREEN, 0x820, METHOD_BUFFERED, FILE_WRITE_ACCESS)
|
||||
#define IOCTL_CONSOLE_READ_OUTPUT_CHARACTER CTL_CODE(FILE_DEVICE_SCREEN, 0x821, METHOD_IN_DIRECT, FILE_ANY_ACCESS)
|
||||
#define IOCTL_CONSOLE_WRITE_OUTPUT_CHARACTER CTL_CODE(FILE_DEVICE_SCREEN, 0x822, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
|
||||
|
||||
|
||||
#define IOCTL_CONSOLE_DRAW CTL_CODE(FILE_DEVICE_SCREEN, 0x830, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
|
||||
|
||||
|
||||
/* TYPEDEFS **************************************************************/
|
||||
|
||||
|
||||
typedef struct _CONSOLE_MODE
|
||||
{
|
||||
DWORD dwMode;
|
||||
} CONSOLE_MODE, *PCONSOLE_MODE;
|
||||
|
||||
|
||||
typedef struct _OUTPUT_ATTRIBUTE
|
||||
{
|
||||
WORD wAttribute;
|
||||
DWORD nLength;
|
||||
COORD dwCoord;
|
||||
DWORD dwTransfered;
|
||||
} OUTPUT_ATTRIBUTE, *POUTPUT_ATTRIBUTE;
|
||||
|
||||
|
||||
typedef struct _OUTPUT_CHARACTER
|
||||
{
|
||||
CHAR cCharacter;
|
||||
DWORD nLength;
|
||||
COORD dwCoord;
|
||||
DWORD dwTransfered;
|
||||
} OUTPUT_CHARACTER, *POUTPUT_CHARACTER;
|
||||
|
||||
|
||||
typedef struct _CONSOLE_DRAW
|
||||
{
|
||||
SHORT X; // Origin
|
||||
SHORT Y;
|
||||
SHORT SizeX; // Size of the screen buffer
|
||||
SHORT SizeY;
|
||||
} CONSOLE_DRAW, *PCONSOLE_DRAW;
|
||||
|
||||
|
||||
#endif /* _NTDDBLUE_H_INCLUDED_ */
|
||||
@@ -0,0 +1,90 @@
|
||||
/* $Id: ntddk.h,v 1.31 2002/09/08 10:47:44 chorns Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
* FILE: include/ddk/ntddk.h
|
||||
* PURPOSE: Interface definitions for drivers
|
||||
* PROGRAMMER: David Welch ([email protected])
|
||||
* UPDATE HISTORY:
|
||||
* 15/05/98: Created
|
||||
*/
|
||||
|
||||
#ifndef __NTDDK_H
|
||||
#define __NTDDK_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/* INCLUDES ***************************************************************/
|
||||
|
||||
#define FASTCALL __attribute__((fastcall))
|
||||
|
||||
#define STATIC static
|
||||
|
||||
#ifndef _GNU_H_WINDOWS_H
|
||||
/* NASTY HACK! Our msvcrt are messed up, causing msvcrt.dll to crash when
|
||||
* the headers are mixed with MinGW msvcrt headers. Not including stdlib.h
|
||||
* seems to correct this.
|
||||
*/
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#endif
|
||||
#include <ntos/types.h>
|
||||
#include <ntos/time.h>
|
||||
#include <ntos/cdrom.h>
|
||||
#include <ntos/disk.h>
|
||||
#include <ntos/registry.h>
|
||||
#include <ntos/port.h>
|
||||
#include <napi/types.h>
|
||||
|
||||
#include <pe.h>
|
||||
|
||||
#include <ddk/status.h>
|
||||
#include <ddk/ntdef.h>
|
||||
#include <ddk/defines.h>
|
||||
#include <ddk/types.h>
|
||||
#include <ddk/cmtypes.h>
|
||||
#include <ddk/ketypes.h>
|
||||
#include <ntos/security.h>
|
||||
#include <ddk/obtypes.h>
|
||||
#include <ddk/setypes.h>
|
||||
#include <ddk/mmtypes.h>
|
||||
#include <ddk/potypes.h>
|
||||
#include <ddk/pnptypes.h>
|
||||
#include <ddk/iotypes.h>
|
||||
#include <ddk/extypes.h>
|
||||
#include <ddk/pstypes.h>
|
||||
#include <ddk/ldrtypes.h>
|
||||
#include <ddk/zwtypes.h>
|
||||
#include <ddk/ioctrl.h>
|
||||
#include <ddk/rtltypes.h>
|
||||
#include <ddk/haltypes.h>
|
||||
#include <napi/shared_data.h>
|
||||
|
||||
#include <ddk/zw.h>
|
||||
#include <ddk/rtl.h>
|
||||
#include <ddk/dbgfuncs.h>
|
||||
#include <ddk/ldrfuncs.h>
|
||||
#include <ddk/cmfuncs.h>
|
||||
#if defined(__NTOSKRNL__) || defined(__NTDRIVER__) || defined(__NTHAL__)
|
||||
#include <ddk/exfuncs.h>
|
||||
#include <ddk/halfuncs.h>
|
||||
#include <ddk/mmfuncs.h>
|
||||
#include <ddk/kdfuncs.h>
|
||||
#include <ddk/kefuncs.h>
|
||||
#include <ddk/pofuncs.h>
|
||||
#include <ddk/pnpfuncs.h>
|
||||
#include <ddk/iofuncs.h>
|
||||
#include <ddk/psfuncs.h>
|
||||
#include <ddk/obfuncs.h>
|
||||
#include <ddk/sefuncs.h>
|
||||
#endif /*__NTOSKRNL__ || __NTDRIVER__ || __NTHAL__ */
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif /* __NTDDK_H */
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
#ifndef _NTDDKBD_
|
||||
#define _NTDDKBD_
|
||||
|
||||
typedef struct _KEYBOARD_INPUT_DATA {
|
||||
|
||||
//
|
||||
// Unit number. E.g., for \Device\KeyboardPort0 the unit is '0',
|
||||
// for \Device\KeyboardPort1 the unit is '1', and so on.
|
||||
//
|
||||
|
||||
USHORT UnitId;
|
||||
USHORT MakeCode;
|
||||
USHORT Flags;
|
||||
USHORT Reserved;
|
||||
ULONG ExtraInformation;
|
||||
|
||||
} KEYBOARD_INPUT_DATA, *PKEYBOARD_INPUT_DATA;
|
||||
|
||||
#endif // _NTDDKBD_
|
||||
@@ -0,0 +1,453 @@
|
||||
/*
|
||||
* NTDDVID.H - Video Port and MiniPort driver interface
|
||||
*/
|
||||
|
||||
#include <ddk/miniport.h>
|
||||
|
||||
/*
|
||||
* the rough idea:
|
||||
* init:
|
||||
* miniport driver defines entrypoint thusly:
|
||||
* ULONG DriverEntry(PVOID Context1, PVOID Context2);
|
||||
* miniport allocates and initializes a VIDEO_HW_INIT_DATA struct
|
||||
* miniport calls VideoPortInitialize
|
||||
* video port driver handles init of DriverObject (Context1)
|
||||
* video port driver calls back into HwVidFindAdapter entry point
|
||||
* video port driver finishes up and returns the status code that
|
||||
* the miniport driver should return.
|
||||
* io requests:
|
||||
* video port driver reformats IRP into VRP
|
||||
* video port driver calls back into HwVidStartIO entry point
|
||||
* minimum IoControlCodes that must be handles by the miniport:
|
||||
* IOCTL_VIDEO_QUERY_NUM_AVAIL_MODES
|
||||
* IOCTL_VIDEO_QUERY_AVAIL_MODES
|
||||
* IOCTL_VIDEO_SET_CURRENT_MODE
|
||||
* IOCTL_VIDEO_MAP_MEMORY
|
||||
* IOCTL_VIDEO_RESET_DEVICE
|
||||
* interrupts are handled the same as KM drivers.
|
||||
*/
|
||||
|
||||
typedef LONG VP_STATUS, *PVP_STATUS;
|
||||
|
||||
// Bit definitions for Attribute Flags
|
||||
#define VIDEO_MODE_COLOR 0x0001
|
||||
#define VIDEO_MODE_GRAPHICS 0x0002
|
||||
#define VIDEO_MODE_PALETTE_DRIVEN 0x0004
|
||||
|
||||
#define VIDEO_MEMORY_SPACE_MEMORY 0x00
|
||||
#define VIDEO_MEMORY_SPACE_IO 0x01
|
||||
#define VIDEO_MEMORY_SPACE_USER_MODE 0x02
|
||||
#define VIDEO_MEMORY_SPACE_DENSE 0x04
|
||||
#define VIDEO_MEMORY_SPACE_P6CACHE 0x08
|
||||
|
||||
typedef struct _VIDEO_POINTER_CAPABILITIES
|
||||
{
|
||||
ULONG Flags;
|
||||
ULONG MaxWidth;
|
||||
ULONG MaxHeight;
|
||||
ULONG HWPtrBitmapStart;
|
||||
ULONG HWPtrBitmapEnd;
|
||||
} VIDEO_POINTER_CAPABILITIES, *PVIDEO_POINTER_CAPABILITIES;
|
||||
|
||||
typedef struct _VIDEO_POINTER_ATTRIBUTES
|
||||
{
|
||||
ULONG Flags;
|
||||
ULONG Width;
|
||||
ULONG Height;
|
||||
ULONG WidthInBytes;
|
||||
ULONG Enable;
|
||||
SHORT Column;
|
||||
SHORT Row;
|
||||
UCHAR Pixels[1];
|
||||
} VIDEO_POINTER_ATTRIBUTES, *PVIDEO_POINTER_ATTRIBUTES;
|
||||
|
||||
typedef enum _VIDEO_BANK_TYPE
|
||||
{
|
||||
VideoNotBanked = 0,
|
||||
VideoBanked1RW,
|
||||
VideoBanked1R1W,
|
||||
VideoBanked2RW,
|
||||
NumVideoBankTypes
|
||||
} VIDEO_BANK_TYPE, *PVIDEO_BANK_TYPE;
|
||||
|
||||
typedef struct _VIDEO_BANK_SELECT
|
||||
{
|
||||
ULONG Length;
|
||||
ULONG Size;
|
||||
ULONG BankingFlags;
|
||||
ULONG BankingType;
|
||||
ULONG PlanarHCBankingType;
|
||||
ULONG BitmapWidthInBytes;
|
||||
ULONG BitmapSize;
|
||||
ULONG Granularity;
|
||||
ULONG PlanarHCGranularity;
|
||||
ULONG CodeOffset;
|
||||
ULONG PlanarHCBankCodeOffset;
|
||||
ULONG PlanarHCEnableCodeOffset;
|
||||
ULONG PlanarHCDisableCodeOffset;
|
||||
} VIDEO_BANK_SELECT, *PVIDEO_BANK_SELECT;
|
||||
|
||||
typedef struct _VIDEO_CLUTDATA
|
||||
{
|
||||
UCHAR Red;
|
||||
UCHAR Green;
|
||||
UCHAR Blue;
|
||||
UCHAR Unused;
|
||||
} VIDEO_CLUTDATA, *PVIDEO_CLUTDATA;
|
||||
|
||||
typedef struct _VIDEO_NUM_MODES
|
||||
{
|
||||
ULONG NumModes;
|
||||
ULONG ModeInformationLength;
|
||||
} VIDEO_NUM_MODES, *PVIDEO_NUM_MODES;
|
||||
|
||||
typedef struct _VIDEO_MODE_INFORMATION
|
||||
{
|
||||
ULONG Length;
|
||||
ULONG ModeIndex;
|
||||
ULONG VisScreenWidth;
|
||||
ULONG VisScreenHeight;
|
||||
ULONG ScreenStride;
|
||||
ULONG NumberOfPlanes;
|
||||
ULONG BitsPerPlane;
|
||||
ULONG Frequency;
|
||||
ULONG XMillimeter;
|
||||
ULONG YMillimeter;
|
||||
ULONG NumberRedBits;
|
||||
ULONG NumberGreenBits;
|
||||
ULONG NumberBlueBits;
|
||||
ULONG RedMask;
|
||||
ULONG GreenMask;
|
||||
ULONG BlueMask;
|
||||
ULONG AttributeFlags;
|
||||
ULONG VideoMemoryBitmapWidth;
|
||||
ULONG VideoMemoryBitmapHeight;
|
||||
ULONG DriverSpecificAttributeFlags;
|
||||
} VIDEO_MODE_INFORMATION, *PVIDEO_MODE_INFORMATION;
|
||||
|
||||
typedef enum _VIDEO_DEVICE_DATA_TYPE
|
||||
{
|
||||
VpMachineData,
|
||||
VpCmosData,
|
||||
VpBusData,
|
||||
VpControllerData,
|
||||
VpMonitorData
|
||||
} VIDEO_DEVICE_DATA_TYPE, *PVIDEO_DEVICE_DATA_TYPE;
|
||||
|
||||
typedef enum _VIDEO_SYNCHRONIZE_PRIORITY
|
||||
{
|
||||
VpLowPriority,
|
||||
VpMediumPriority,
|
||||
VpHighPriority
|
||||
} VIDEO_SYNCHRONIZE_PRIORITY, *PVIDEO_SYNCHRONIZE_PRIORITY;
|
||||
|
||||
typedef struct _STATUS_BLOCK
|
||||
{
|
||||
VP_STATUS Status;
|
||||
ULONG Information;
|
||||
} STATUS_BLOCK, *PSTATUS_BLOCK;
|
||||
|
||||
typedef struct _VIDEO_REQUEST_PACKET
|
||||
{
|
||||
ULONG IoControlCode;
|
||||
PSTATUS_BLOCK StatusBlock;
|
||||
PVOID InputBuffer;
|
||||
ULONG InputBufferLength;
|
||||
PVOID OutputBuffer;
|
||||
ULONG OutputBufferLength;
|
||||
} VIDEO_REQUEST_PACKET, *PVIDEO_REQUEST_PACKET;
|
||||
|
||||
#define IOCTL_VIDEO_QUERY_NUM_AVAIL_MODES CTL_CODE(FILE_DEVICE_VIDEO, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define IOCTL_VIDEO_QUERY_AVAIL_MODES CTL_CODE(FILE_DEVICE_VIDEO, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define IOCTL_VIDEO_QUERY_CURRENT_MODE CTL_CODE(FILE_DEVICE_VIDEO, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define IOCTL_VIDEO_SET_CURRENT_MODE CTL_CODE(FILE_DEVICE_VIDEO, 3, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define IOCTL_VIDEO_RESET_DEVICE CTL_CODE(FILE_DEVICE_VIDEO, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define IOCTL_VIDEO_MAP_VIDEO_MEMORY CTL_CODE(FILE_DEVICE_VIDEO, 5, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define IOCTL_VIDEO_UNMAP_VIDEO_MEMORY CTL_CODE(FILE_DEVICE_VIDEO, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define IOCTL_VIDEO_SHARE_VIDEO_MEMORY CTL_CODE(FILE_DEVICE_VIDEO, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define IOCTL_VIDEO_UNSHARE_VIDEO_MEMORY CTL_CODE(FILE_DEVICE_VIDEO, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define IOCTL_VIDEO_GET_PUBLIC_ACCESS_RANGES CTL_CODE(FILE_DEVICE_VIDEO, 9, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define IOCTL_VIDEO_FREE_PUBLIC_ACCESS_RANGES CTL_CODE(FILE_DEVICE_VIDEO, 10, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define IOCTL_VIDEO_GET_POWER_MANAGEMENT CTL_CODE(FILE_DEVICE_VIDEO, 11, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define IOCTL_VIDEO_SET_POWER_MANAGEMENT CTL_CODE(FILE_DEVICE_VIDEO, 12, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define IOCTL_VIDEO_COLOR_CAPABILITIES CTL_CODE(FILE_DEVICE_VIDEO, 13, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define IOCTL_VIDEO_SET_COLOR_REGISTERS CTL_CODE(FILE_DEVICE_VIDEO, 14, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define IOCTL_VIDEO_DISABLE_POINTER CTL_CODE(FILE_DEVICE_VIDEO, 15, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define IOCTL_VIDEO_ENABLE_POINTER CTL_CODE(FILE_DEVICE_VIDEO, 16, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define IOCTL_VIDEO_QUERY_POINTER_CAPABILITIES CTL_CODE(FILE_DEVICE_VIDEO, 17, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define IOCTL_VIDEO_QUERY_POINTER_ATTR CTL_CODE(FILE_DEVICE_VIDEO, 18, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define IOCTL_VIDEO_SET_POINTER_ATTR CTL_CODE(FILE_DEVICE_VIDEO, 19, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define IOCTL_VIDEO_QUERY_POINTER_POSITION CTL_CODE(FILE_DEVICE_VIDEO, 20, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define IOCTL_VIDEO_SET_POINTER_POSITION CTL_CODE(FILE_DEVICE_VIDEO, 21, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define IOCTL_VIDEO_SAVE_HARDWARE_STATE CTL_CODE(FILE_DEVICE_VIDEO, 22, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define IOCTL_VIDEO_RESTORE_HARDWARE_STATE CTL_CODE(FILE_DEVICE_VIDEO, 23, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define IOCTL_VIDEO_DISABLE_CURSOR CTL_CODE(FILE_DEVICE_VIDEO, 24, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define IOCTL_VIDEO_ENABLE_CURSOR CTL_CODE(FILE_DEVICE_VIDEO, 25, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define IOCTL_VIDEO_QUERY_CURSOR_ATTR CTL_CODE(FILE_DEVICE_VIDEO, 26, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define IOCTL_VIDEO_SET_CURSOR_ATTR CTL_CODE(FILE_DEVICE_VIDEO, 27, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define IOCTL_VIDEO_QUERY_CURSOR_POSITION CTL_CODE(FILE_DEVICE_VIDEO, 28, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define IOCTL_VIDEO_SET_CURSOR_POSITION CTL_CODE(FILE_DEVICE_VIDEO, 29, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define IOCTL_VIDEO_GET_BANK_SELECT_CODE CTL_CODE(FILE_DEVICE_VIDEO, 30, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define IOCTL_VIDEO_SET_PALETTE_REGISTERS CTL_CODE(FILE_DEVICE_VIDEO, 31, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
#define IOCTL_VIDEO_LOAD_AND_SET_FONT CTL_CODE(FILE_DEVICE_VIDEO, 32, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
typedef struct _VIDEO_PORT_CONFIG_INFO
|
||||
{
|
||||
ULONG Length;
|
||||
ULONG SystemIoBusNumber;
|
||||
INTERFACE_TYPE AdapterInterfaceType;
|
||||
ULONG BusInterruptLevel;
|
||||
ULONG BusInterruptVector;
|
||||
KINTERRUPT_MODE InterruptMode;
|
||||
ULONG NumEmulatorAccessEntries;
|
||||
PEMULATOR_ACCESS_ENTRY EmulatorAccessEntries;
|
||||
ULONG EmulatorAccessEntriesContext;
|
||||
PHYSICAL_ADDRESS VdmPhysicalVideoMemoryAddress;
|
||||
ULONG VdmPhysicalVideoMemoryLength;
|
||||
ULONG HardwareStateSize;
|
||||
ULONG DmaChannel;
|
||||
ULONG DmaPort;
|
||||
UCHAR DmaShareable;
|
||||
UCHAR InterruptShareable;
|
||||
} VIDEO_PORT_CONFIG_INFO, *PVIDEO_PORT_CONFIG_INFO;
|
||||
|
||||
typedef VP_STATUS STDCALL
|
||||
(*PVIDEO_HW_FIND_ADAPTER)(PVOID HwDeviceExtension,
|
||||
PVOID HwContext,
|
||||
PWSTR ArgumentString,
|
||||
PVIDEO_PORT_CONFIG_INFO ConfigInfo,
|
||||
PUCHAR Again);
|
||||
|
||||
typedef BOOLEAN STDCALL
|
||||
(*PVIDEO_HW_INITIALIZE)(PVOID HwDeviceExtension);
|
||||
|
||||
typedef BOOLEAN STDCALL
|
||||
(*PVIDEO_HW_INTERRUPT)(PVOID HwDeviceExtension);
|
||||
|
||||
typedef BOOLEAN STDCALL
|
||||
(*PVIDEO_HW_START_IO)(PVOID HwDeviceExtension,
|
||||
PVIDEO_REQUEST_PACKET RequestPacket);
|
||||
|
||||
typedef BOOLEAN STDCALL
|
||||
(*PVIDEO_HW_RESET_HW)(PVOID HwDeviceExtension,
|
||||
ULONG Columns,
|
||||
ULONG Rows);
|
||||
|
||||
typedef VOID STDCALL
|
||||
(*PVIDEO_HW_TIMER)(PVOID HwDeviceExtension);
|
||||
|
||||
typedef struct _VIDEO_HW_INITIALIZATION_DATA
|
||||
{
|
||||
ULONG HwInitDataSize;
|
||||
INTERFACE_TYPE AdapterInterfaceType;
|
||||
PVIDEO_HW_FIND_ADAPTER HwFindAdapter;
|
||||
PVIDEO_HW_INITIALIZE HwInitialize;
|
||||
PVIDEO_HW_INTERRUPT HwInterrupt;
|
||||
PVIDEO_HW_START_IO HwStartIO;
|
||||
ULONG HwDeviceExtensionSize;
|
||||
ULONG StartingDeviceNumber;
|
||||
PVIDEO_HW_RESET_HW HwResetHw;
|
||||
PVIDEO_HW_TIMER HwTimer;
|
||||
} VIDEO_HW_INITIALIZATION_DATA, *PVIDEO_HW_INITIALIZATION_DATA;
|
||||
|
||||
typedef VP_STATUS STDCALL
|
||||
(*PMINIPORT_GET_REGISTRY_ROUTINE)(PVOID HwDeviceExtension,
|
||||
PVOID Context,
|
||||
PWSTR ValueName,
|
||||
PVOID ValueData,
|
||||
ULONG ValueLength);
|
||||
|
||||
typedef VP_STATUS STDCALL
|
||||
(*PMINIPORT_QUERY_DEVICE_ROUTINE)(PVOID HwDeviceExtension,
|
||||
PVOID Context,
|
||||
VIDEO_DEVICE_DATA_TYPE DeviceDataType,
|
||||
PVOID Identifier,
|
||||
ULONG IdentiferLength,
|
||||
PVOID ConfigurationData,
|
||||
ULONG ConfigurationDataLength,
|
||||
PVOID ComponentInformation,
|
||||
ULONG ComponentInformationLength);
|
||||
|
||||
typedef BOOLEAN STDCALL
|
||||
(*PMINIPORT_SYNCHRONIZE_ROUTINE)(PVOID Context);
|
||||
|
||||
typedef struct _VIDEO_ACCESS_RANGE
|
||||
{
|
||||
PHYSICAL_ADDRESS RangeStart;
|
||||
ULONG RangeLength;
|
||||
UCHAR RangeInIoSpace;
|
||||
UCHAR RangeVisible;
|
||||
UCHAR RangeShareable;
|
||||
} VIDEO_ACCESS_RANGE, *PVIDEO_ACCESS_RANGE;
|
||||
|
||||
typedef struct _VIDEO_X86_BIOS_ARGUMENTS
|
||||
{
|
||||
ULONG Eax;
|
||||
ULONG Ebx;
|
||||
ULONG Ecx;
|
||||
ULONG Edx;
|
||||
ULONG Esi;
|
||||
ULONG Edi;
|
||||
ULONG Ebp;
|
||||
} VIDEO_X86_BIOS_ARGUMENTS, *PVIDEO_X86_BIOS_ARGUMENTS;
|
||||
|
||||
typedef VOID STDCALL
|
||||
(*PBANKED_SECTION_ROUTINE)(IN ULONG ReadBank,
|
||||
IN ULONG WriteBank,
|
||||
IN PVOID Context);
|
||||
|
||||
typedef struct
|
||||
{
|
||||
USHORT NumEntries;
|
||||
USHORT FirstEntry;
|
||||
union
|
||||
{
|
||||
VIDEO_CLUTDATA RgbArray;
|
||||
ULONG RgbLong;
|
||||
} LookupTable[1];
|
||||
} VIDEO_CLUT, *PVIDEO_CLUT;
|
||||
|
||||
typedef struct _VIDEO_MEMORY
|
||||
{
|
||||
PVOID RequestedVirtualAddress;
|
||||
} VIDEO_MEMORY, *PVIDEO_MEMORY;
|
||||
|
||||
typedef struct _VIDEO_MEMORY_INFORMATION
|
||||
{
|
||||
PVOID VideoRamBase;
|
||||
ULONG VideoRamLength;
|
||||
PVOID FrameBufferBase;
|
||||
ULONG FrameBufferLength;
|
||||
} VIDEO_MEMORY_INFORMATION, *PVIDEO_MEMORY_INFORMATION;
|
||||
|
||||
typedef struct _VIDEO_MODE
|
||||
{
|
||||
ULONG RequestedMode;
|
||||
} VIDEO_MODE, *PVIDEO_MODE;
|
||||
|
||||
typedef struct _VIDEO_SHARE_MEMORY
|
||||
{
|
||||
HANDLE ProcessHandle;
|
||||
ULONG ViewOffset;
|
||||
ULONG ViewSize;
|
||||
PVOID RequestedVirtualAddress;
|
||||
} VIDEO_SHARE_MEMORY, *PVIDEO_SHARE_MEMORY;
|
||||
|
||||
ULONG STDCALL VideoPortCompareMemory(IN PVOID Source1, IN PVOID Source2, IN ULONG Length);
|
||||
VOID VideoPortDebugPrint(IN ULONG DebugPrintLevel, IN PCHAR DebugMessage, ...);
|
||||
VP_STATUS STDCALL VideoPortDisableInterrupt(IN PVOID HwDeviceExtension);
|
||||
VP_STATUS STDCALL VideoPortEnableInterrupt(IN PVOID HwDeviceExtension);
|
||||
VOID STDCALL VideoPortFreeDeviceBase(IN PVOID HwDeviceExtension, IN PVOID MappedAddress);
|
||||
ULONG STDCALL VideoPortGetBusData(IN PVOID HwDeviceExtension,
|
||||
IN BUS_DATA_TYPE BusDataType,
|
||||
IN ULONG SlotNumber,
|
||||
OUT PVOID Buffer,
|
||||
IN ULONG Offset,
|
||||
IN ULONG Length);
|
||||
UCHAR STDCALL VideoPortGetCurrentIrql(VOID);
|
||||
PVOID STDCALL VideoPortGetDeviceBase(IN PVOID HwDeviceExtension,
|
||||
IN PHYSICAL_ADDRESS IoAddress,
|
||||
IN ULONG NumberOfUchars,
|
||||
IN UCHAR InIoSpace);
|
||||
VP_STATUS STDCALL VideoPortGetDeviceData(IN PVOID HwDeviceExtension,
|
||||
IN VIDEO_DEVICE_DATA_TYPE DeviceDataType,
|
||||
IN PMINIPORT_QUERY_DEVICE_ROUTINE CallbackRoutine,
|
||||
IN PVOID Context);
|
||||
VP_STATUS STDCALL VideoPortGetAccessRanges(IN PVOID HwDeviceExtension,
|
||||
IN ULONG NumRequestedResources,
|
||||
IN PIO_RESOURCE_DESCRIPTOR RequestedResources OPTIONAL,
|
||||
IN ULONG NumAccessRanges,
|
||||
IN PVIDEO_ACCESS_RANGE AccessRanges,
|
||||
IN PVOID VendorId,
|
||||
IN PVOID DeviceId,
|
||||
IN PULONG Slot);
|
||||
VP_STATUS STDCALL VideoPortGetRegistryParameters(IN PVOID HwDeviceExtension,
|
||||
IN PWSTR ParameterName,
|
||||
IN UCHAR IsParameterFileName,
|
||||
IN PMINIPORT_GET_REGISTRY_ROUTINE GetRegistryRoutine,
|
||||
IN PVOID Context);
|
||||
ULONG STDCALL VideoPortInitialize(IN PVOID Context1,
|
||||
IN PVOID Context2,
|
||||
IN PVIDEO_HW_INITIALIZATION_DATA HwInitializationData,
|
||||
IN PVOID HwContext);
|
||||
VP_STATUS STDCALL VideoPortInt10(IN PVOID HwDeviceExtension,
|
||||
IN PVIDEO_X86_BIOS_ARGUMENTS BiosArguments);
|
||||
VOID STDCALL VideoPortLogError(IN PVOID HwDeviceExtension,
|
||||
IN PVIDEO_REQUEST_PACKET Vrp OPTIONAL,
|
||||
IN VP_STATUS ErrorCode,
|
||||
IN ULONG UniqueId);
|
||||
VP_STATUS STDCALL VideoPortMapBankedMemory(IN PVOID HwDeviceExtension,
|
||||
IN PHYSICAL_ADDRESS PhysicalAddress,
|
||||
IN PULONG Length,
|
||||
IN PULONG InIoSpace,
|
||||
OUT PVOID *VirtualAddress,
|
||||
IN ULONG BankLength,
|
||||
IN UCHAR ReadWriteBank,
|
||||
IN PBANKED_SECTION_ROUTINE BankRoutine,
|
||||
IN PVOID Context);
|
||||
VP_STATUS STDCALL VideoPortMapMemory(IN PVOID HwDeviceExtension,
|
||||
IN PHYSICAL_ADDRESS PhysicalAddress,
|
||||
IN PULONG Length,
|
||||
IN PULONG InIoSpace,
|
||||
OUT PVOID *VirtualAddress);
|
||||
VOID STDCALL VideoPortMoveMemory(OUT PVOID Destination,
|
||||
IN PVOID Source,
|
||||
IN ULONG Length);
|
||||
UCHAR STDCALL VideoPortReadPortUchar(IN PUCHAR Port);
|
||||
USHORT STDCALL VideoPortReadPortUshort(IN PUSHORT Port);
|
||||
ULONG STDCALL VideoPortReadPortUlong(IN PULONG Port);
|
||||
VOID STDCALL VideoPortReadPortBufferUchar(IN PUCHAR Port, OUT PUCHAR Buffer, IN ULONG Count);
|
||||
VOID STDCALL VideoPortReadPortBufferUshort(IN PUSHORT Port, OUT PUSHORT Buffer, IN ULONG Count);
|
||||
VOID STDCALL VideoPortReadPortBufferUlong(IN PULONG Port, OUT PULONG Buffer, IN ULONG Count);
|
||||
UCHAR STDCALL VideoPortReadRegisterUchar(IN PUCHAR Register);
|
||||
USHORT STDCALL VideoPortReadRegisterUshort(IN PUSHORT Register);
|
||||
ULONG STDCALL VideoPortReadRegisterUlong(IN PULONG Register);
|
||||
VOID STDCALL VideoPortReadRegisterBufferUchar(IN PUCHAR Register, OUT PUCHAR Buffer, IN ULONG Count);
|
||||
VOID STDCALL VideoPortReadRegisterBufferUshort(IN PUSHORT Register, OUT PUSHORT Buffer, IN ULONG Count);
|
||||
VOID STDCALL VideoPortReadRegisterBufferUlong(IN PULONG Register, OUT PULONG Buffer, IN ULONG Count);
|
||||
BOOLEAN STDCALL VideoPortScanRom(IN PVOID HwDeviceExtension,
|
||||
IN PUCHAR RomBase,
|
||||
IN ULONG RomLength,
|
||||
IN PUCHAR String);
|
||||
ULONG STDCALL VideoPortSetBusData(IN PVOID HwDeviceExtension,
|
||||
IN BUS_DATA_TYPE BusDataType,
|
||||
IN ULONG SlotNumber,
|
||||
IN PVOID Buffer,
|
||||
IN ULONG Offset,
|
||||
IN ULONG Length);
|
||||
VP_STATUS STDCALL VideoPortSetRegistryParameters(IN PVOID HwDeviceExtension,
|
||||
IN PWSTR ValueName,
|
||||
IN PVOID ValueData,
|
||||
IN ULONG ValueLength);
|
||||
VP_STATUS STDCALL VideoPortSetTrappedEmulatorPorts(IN PVOID HwDeviceExtension,
|
||||
IN ULONG NumAccessRanges,
|
||||
IN PVIDEO_ACCESS_RANGE AccessRange);
|
||||
VOID STDCALL VideoPortStallExecution(IN ULONG Microseconds);
|
||||
VOID STDCALL VideoPortStartTimer(IN PVOID HwDeviceExtension);
|
||||
VOID STDCALL VideoPortStopTimer(IN PVOID HwDeviceExtension);
|
||||
BOOLEAN STDCALL VideoPortSynchronizeExecution(IN PVOID HwDeviceExtension,
|
||||
IN VIDEO_SYNCHRONIZE_PRIORITY Priority,
|
||||
IN PMINIPORT_SYNCHRONIZE_ROUTINE SynchronizeRoutine,
|
||||
OUT PVOID Context);
|
||||
VP_STATUS STDCALL VideoPortUnmapMemory(IN PVOID HwDeviceExtension,
|
||||
IN PVOID VirtualAddress,
|
||||
IN HANDLE ProcessHandle);
|
||||
VP_STATUS STDCALL VideoPortVerifyAccessRanges(IN PVOID HwDeviceExtension,
|
||||
IN ULONG NumAccessRanges,
|
||||
IN PVIDEO_ACCESS_RANGE AccessRanges);
|
||||
VOID STDCALL VideoPortWritePortUchar(IN PUCHAR Port, IN UCHAR Value);
|
||||
VOID STDCALL VideoPortWritePortUshort(IN PUSHORT Port, IN USHORT Value);
|
||||
VOID STDCALL VideoPortWritePortUlong(IN PULONG Port, IN ULONG Value);
|
||||
VOID STDCALL VideoPortWritePortBufferUchar(IN PUCHAR Port, IN PUCHAR Buffer, IN ULONG Count);
|
||||
VOID STDCALL VideoPortWritePortBufferUshort(IN PUSHORT Port, IN PUSHORT Buffer, IN ULONG Count);
|
||||
VOID STDCALL VideoPortWritePortBufferUlong(IN PULONG Port, IN PULONG Buffer, IN ULONG Count);
|
||||
VOID STDCALL VideoPortWriteRegisterUchar(IN PUCHAR Register, IN UCHAR Value);
|
||||
VOID STDCALL VideoPortWriteRegisterUshort(IN PUSHORT Register, IN USHORT Value);
|
||||
VOID STDCALL VideoPortWriteRegisterUlong(IN PULONG Register, IN ULONG Value);
|
||||
VOID STDCALL VideoPortWriteRegisterBufferUchar(IN PUCHAR Register, IN PUCHAR Buffer, IN ULONG Count);
|
||||
VOID STDCALL VideoPortWriteRegisterBufferUshort(IN PUSHORT Register, IN PUSHORT Buffer, IN ULONG Count);
|
||||
VOID STDCALL VideoPortWriteRegisterBufferUlong(IN PULONG Register, IN PULONG Buffer, IN ULONG Count);
|
||||
VOID STDCALL VideoPortZeroMemory(OUT PVOID Destination, IN ULONG Length);
|
||||
VOID STDCALL VideoPortZeroDeviceMemory(OUT PVOID Destination, IN ULONG Length);
|
||||
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
#ifndef __INCLUDE_DDK_NTDEF_H
|
||||
#define __INCLUDE_DDK_NTDEF_H
|
||||
|
||||
struct _KTHREAD;
|
||||
struct _ETHREAD;
|
||||
struct _EPROCESS;
|
||||
|
||||
#define NTKERNELAPI
|
||||
#define NTSYSAPI
|
||||
#define NTAPI
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,41 @@
|
||||
#ifndef __INCLUDE_DDK_NTIFS_H
|
||||
#define __INCLUDE_DDK_NTIFS_H
|
||||
|
||||
struct _BCB;
|
||||
|
||||
typedef struct _BCB* PBCB;
|
||||
|
||||
struct _MEMORY_AREA;
|
||||
|
||||
struct _CACHE_SEGMENT;
|
||||
|
||||
typedef struct _CACHE_SEGMENT* PCACHE_SEGMENT;
|
||||
|
||||
NTSTATUS STDCALL
|
||||
CcRosReleaseCacheSegment (struct _BCB* Bcb,
|
||||
struct _CACHE_SEGMENT* CacheSeg,
|
||||
BOOLEAN Valid,
|
||||
BOOLEAN Dirty,
|
||||
BOOLEAN Mapped);
|
||||
NTSTATUS STDCALL
|
||||
CcRosRequestCacheSegment (struct _BCB* Bcb,
|
||||
ULONG FileOffset,
|
||||
PVOID* BaseAddress,
|
||||
PBOOLEAN UptoDate,
|
||||
struct _CACHE_SEGMENT** CacheSeg);
|
||||
NTSTATUS STDCALL
|
||||
CcRosInitializeFileCache (PFILE_OBJECT FileObject,
|
||||
struct _BCB** Bcb,
|
||||
ULONG CacheSegmentSize);
|
||||
NTSTATUS STDCALL
|
||||
CcRosReleaseFileCache (PFILE_OBJECT FileObject,
|
||||
struct _BCB* Bcb);
|
||||
|
||||
#include <ddk/cctypes.h>
|
||||
|
||||
#include <ddk/ccfuncs.h>
|
||||
|
||||
#include <ddk/fstypes.h>
|
||||
#include <ddk/fsfuncs.h>
|
||||
|
||||
#endif /* __INCLUDE_DDK_NTIFS_H */
|
||||
@@ -0,0 +1,180 @@
|
||||
#ifndef _INCLUDE_DDK_OBFUNCS_H
|
||||
#define _INCLUDE_DDK_OBFUNCS_H
|
||||
/* OBJECT MANAGER ************************************************************/
|
||||
|
||||
NTSTATUS STDCALL
|
||||
ObAssignSecurity(IN PACCESS_STATE AccessState,
|
||||
IN PSECURITY_DESCRIPTOR SecurityDescriptor,
|
||||
IN PVOID Object,
|
||||
IN POBJECT_TYPE Type);
|
||||
|
||||
/*
|
||||
BOOLEAN STDCALL
|
||||
ObCheckCreateObjectAccess(IN PVOID Object,
|
||||
IN ACCESS_MASK DesiredAccess,
|
||||
ULONG Param3,
|
||||
ULONG Param4,
|
||||
ULONG Param5,
|
||||
IN KPROCESSOR_MODE AccessMode,
|
||||
OUT PNTSTATUS AccessStatus);
|
||||
*/
|
||||
|
||||
/*
|
||||
BOOLEAN STDCALL
|
||||
ObCheckObjectAccess(IN PVOID Object,
|
||||
ULONG Param2,
|
||||
ULONG Param3,
|
||||
IN KPROCESSOR_MODE AccessMode,
|
||||
OUT PACCESS_MODE GrantedAccess);
|
||||
*/
|
||||
|
||||
NTSTATUS STDCALL
|
||||
ObCreateObject(OUT PHANDLE Handle,
|
||||
IN ACCESS_MASK DesiredAccess,
|
||||
IN POBJECT_ATTRIBUTES ObjectAttributes,
|
||||
IN POBJECT_TYPE Type,
|
||||
OUT PVOID *Object);
|
||||
|
||||
#if 0
|
||||
/* original implementation */
|
||||
NTSTATUS STDCALL
|
||||
ObCreateObject(IN KPROCESSOR_MODE ObjectAttributesAccessMode OPTIONAL,
|
||||
IN POBJECT_TYPE Type,
|
||||
IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
|
||||
IN KPROCESSOR_MODE AccessMode,
|
||||
IN OUT PVOID ParseContext OPTIONAL,
|
||||
IN ULONG ObjectSize,
|
||||
IN ULONG PagedPoolCharge OPTIONAL,
|
||||
IN ULONG NonPagedPoolCharge OPTIONAL,
|
||||
OUT PVOID *Object);
|
||||
#endif
|
||||
|
||||
VOID FASTCALL
|
||||
ObfDereferenceObject(IN PVOID Object);
|
||||
|
||||
VOID FASTCALL
|
||||
ObfReferenceObject(IN PVOID Object);
|
||||
|
||||
#define ObDereferenceObject(Object) \
|
||||
ObfDereferenceObject(Object)
|
||||
|
||||
#define ObReferenceObject(Object) \
|
||||
ObfReferenceObject(Object)
|
||||
|
||||
/*
|
||||
BOOLEAN STDCALL
|
||||
ObFindHandleForObject(ULONG Param1,
|
||||
ULONG Param2,
|
||||
ULONG Param3,
|
||||
ULONG Param4);
|
||||
*/
|
||||
|
||||
ULONG STDCALL
|
||||
ObGetObjectPointerCount(IN PVOID Object);
|
||||
|
||||
NTSTATUS STDCALL
|
||||
ObGetObjectSecurity(IN PVOID Object,
|
||||
OUT PSECURITY_DESCRIPTOR *SecurityDescriptor,
|
||||
OUT PBOOLEAN MemoryAllocated);
|
||||
|
||||
NTSTATUS STDCALL
|
||||
ObInsertObject(IN PVOID Object,
|
||||
IN PACCESS_STATE PassedAccessState OPTIONAL,
|
||||
IN ACCESS_MASK DesiredAccess,
|
||||
IN ULONG AdditionalReferences,
|
||||
OUT PVOID* ReferencedObject OPTIONAL,
|
||||
OUT PHANDLE Handle);
|
||||
|
||||
VOID STDCALL
|
||||
ObMakeTemporaryObject(IN PVOID ObjectBody);
|
||||
|
||||
NTSTATUS STDCALL
|
||||
ObOpenObjectByName(IN POBJECT_ATTRIBUTES ObjectAttributes,
|
||||
IN POBJECT_TYPE ObjectType,
|
||||
IN OUT PVOID ParseContext OPTIONAL,
|
||||
IN KPROCESSOR_MODE AccessMode,
|
||||
IN ACCESS_MASK DesiredAccess,
|
||||
IN PACCESS_STATE PassedAccessState,
|
||||
OUT PHANDLE Handle);
|
||||
|
||||
NTSTATUS STDCALL
|
||||
ObOpenObjectByPointer(IN PVOID Object,
|
||||
IN ULONG HandleAttributes,
|
||||
IN PACCESS_STATE PassedAccessState OPTIONAL,
|
||||
IN ACCESS_MASK DesiredAccess OPTIONAL,
|
||||
IN POBJECT_TYPE ObjectType OPTIONAL,
|
||||
IN KPROCESSOR_MODE AccessMode,
|
||||
OUT PHANDLE Handle);
|
||||
|
||||
NTSTATUS STDCALL
|
||||
ObQueryNameString(IN PVOID Object,
|
||||
OUT POBJECT_NAME_INFORMATION ObjectNameInfo,
|
||||
IN ULONG Length,
|
||||
OUT PULONG ReturnLength);
|
||||
|
||||
NTSTATUS STDCALL
|
||||
ObQueryObjectAuditingByHandle(IN HANDLE Handle,
|
||||
OUT PBOOLEAN GenerateOnClose);
|
||||
|
||||
/*
|
||||
* FUNCTION: Performs access validation on an object handle and if access
|
||||
* is granted returns a pointer to the object's body
|
||||
* ARGUMENTS:
|
||||
* Handle = Handle to the object
|
||||
* DesiredAccess = Desired access to the object
|
||||
* ObjectType (OPTIONAL) = Pointer to the object's type definition
|
||||
* AccessMode = Access mode to use for the check
|
||||
* Object (OUT) = Caller supplied storage for a pointer to the object's
|
||||
* body
|
||||
* HandleInformation (OUT) = Points to a structure which receives
|
||||
* information about the handle
|
||||
* RETURNS: Status
|
||||
*/
|
||||
NTSTATUS STDCALL
|
||||
ObReferenceObjectByHandle(IN HANDLE Handle,
|
||||
IN ACCESS_MASK DesiredAccess,
|
||||
IN POBJECT_TYPE ObjectType OPTIONAL,
|
||||
IN KPROCESSOR_MODE AccessMode,
|
||||
OUT PVOID* Object,
|
||||
OUT POBJECT_HANDLE_INFORMATION HandleInfo OPTIONAL);
|
||||
|
||||
/*
|
||||
* FUNCTION: Increments the reference count for a given object
|
||||
* ARGUMENTS:
|
||||
* Object = Points to the body of the object
|
||||
* AccessMode = Requested access to the object
|
||||
* ObjectType = Pointer to the object's type definition
|
||||
* AccessMode = Access mode to use for the security check
|
||||
* RETURNS: Status
|
||||
*/
|
||||
NTSTATUS STDCALL
|
||||
ObReferenceObjectByPointer(IN PVOID Object,
|
||||
IN ACCESS_MASK DesiredAccess,
|
||||
IN POBJECT_TYPE ObjectType,
|
||||
IN KPROCESSOR_MODE AccessMode);
|
||||
|
||||
NTSTATUS STDCALL
|
||||
ObReferenceObjectByName(IN PUNICODE_STRING ObjectPath,
|
||||
IN ULONG Attributes,
|
||||
IN PACCESS_STATE PassedAccessState OPTIONAL,
|
||||
IN ACCESS_MASK DesiredAccess OPTIONAL,
|
||||
IN POBJECT_TYPE ObjectType,
|
||||
IN KPROCESSOR_MODE AccessMode,
|
||||
IN OUT PVOID ParseContext OPTIONAL,
|
||||
OUT PVOID* ObjectPtr);
|
||||
|
||||
VOID STDCALL
|
||||
ObReleaseObjectSecurity(IN PSECURITY_DESCRIPTOR SecurityDescriptor,
|
||||
IN BOOLEAN MemoryAllocated);
|
||||
|
||||
/*
|
||||
NTSTATUS STDCALL
|
||||
ObSetSecurityDescriptorInfo(IN PVOID Object,
|
||||
IN PSECURITY_INFORMATION SecurityInformation,
|
||||
IN PSECURITY_DESCRIPTOR SecurityDescriptor,
|
||||
ULONG Param4,
|
||||
IN POOL_TYPE PoolType,
|
||||
IN PGENERIC_MAPPING GenericMapping);
|
||||
*/
|
||||
|
||||
#endif /* ndef _INCLUDE_DDK_OBFUNCS_H */
|
||||
@@ -0,0 +1,199 @@
|
||||
#ifndef _INCLUDE_DDK_OBTYPES_H
|
||||
#define _INCLUDE_DDK_OBTYPES_H
|
||||
/* $Id: obtypes.h,v 1.18 2002/09/08 10:47:45 chorns Exp $ */
|
||||
struct _DIRECTORY_OBJECT;
|
||||
struct _OBJECT_ATTRIBUTES;
|
||||
|
||||
typedef ULONG ACCESS_STATE, *PACCESS_STATE;
|
||||
|
||||
typedef struct _OBJECT_HANDLE_INFORMATION {
|
||||
ULONG HandleAttributes;
|
||||
ACCESS_MASK GrantedAccess;
|
||||
} OBJECT_HANDLE_INFORMATION, *POBJECT_HANDLE_INFORMATION;
|
||||
|
||||
typedef struct _OBJECT_TYPE
|
||||
{
|
||||
/*
|
||||
* PURPOSE: Tag to be used when allocating objects of this type
|
||||
*/
|
||||
ULONG Tag;
|
||||
|
||||
/*
|
||||
* PURPOSE: Name of the type
|
||||
*/
|
||||
UNICODE_STRING TypeName;
|
||||
|
||||
/*
|
||||
* PURPOSE: Total number of objects of this type
|
||||
*/
|
||||
ULONG TotalObjects;
|
||||
|
||||
/*
|
||||
* PURPOSE: Total number of handles of this type
|
||||
*/
|
||||
ULONG TotalHandles;
|
||||
|
||||
/*
|
||||
* PURPOSE: Maximum objects of this type
|
||||
*/
|
||||
ULONG MaxObjects;
|
||||
|
||||
/*
|
||||
* PURPOSE: Maximum handles of this type
|
||||
*/
|
||||
ULONG MaxHandles;
|
||||
|
||||
/*
|
||||
* PURPOSE: Paged pool charge
|
||||
*/
|
||||
ULONG PagedPoolCharge;
|
||||
|
||||
/*
|
||||
* PURPOSE: Nonpaged pool charge
|
||||
*/
|
||||
ULONG NonpagedPoolCharge;
|
||||
|
||||
/*
|
||||
* PURPOSE: Mapping of generic access rights
|
||||
*/
|
||||
PGENERIC_MAPPING Mapping;
|
||||
|
||||
/*
|
||||
* PURPOSE: Dumps the object
|
||||
* NOTE: To be defined
|
||||
*/
|
||||
VOID STDCALL (*Dump)(VOID);
|
||||
|
||||
/*
|
||||
* PURPOSE: Opens the object
|
||||
* NOTE: To be defined
|
||||
*/
|
||||
VOID STDCALL (*Open)(VOID);
|
||||
|
||||
/*
|
||||
* PURPOSE: Called to close an object if OkayToClose returns true
|
||||
*/
|
||||
VOID STDCALL (*Close)(PVOID ObjectBody,
|
||||
ULONG HandleCount);
|
||||
|
||||
/*
|
||||
* PURPOSE: Called to delete an object when the last reference is removed
|
||||
*/
|
||||
VOID STDCALL (*Delete)(PVOID ObjectBody);
|
||||
|
||||
/*
|
||||
* PURPOSE: Called when an open attempts to open a file apparently
|
||||
* residing within the object
|
||||
* RETURNS
|
||||
* STATUS_SUCCESS NextObject was found
|
||||
* STATUS_UNSUCCESSFUL NextObject not found
|
||||
* STATUS_REPARSE Path changed, restart parsing the path
|
||||
*/
|
||||
NTSTATUS STDCALL (*Parse)(PVOID ParsedObject,
|
||||
PVOID *NextObject,
|
||||
PUNICODE_STRING FullPath,
|
||||
PWSTR *Path,
|
||||
ULONG Attributes);
|
||||
|
||||
/*
|
||||
*/
|
||||
NTSTATUS STDCALL (*Security)(PVOID Object,
|
||||
ULONG InfoClass,
|
||||
PVOID Info,
|
||||
PULONG InfoLength);
|
||||
|
||||
/*
|
||||
*/
|
||||
VOID STDCALL (*QueryName)(VOID);
|
||||
|
||||
/*
|
||||
* PURPOSE: Called when a process asks to close the object
|
||||
*/
|
||||
VOID STDCALL (*OkayToClose)(VOID);
|
||||
|
||||
NTSTATUS STDCALL (*Create)(PVOID ObjectBody,
|
||||
PVOID Parent,
|
||||
PWSTR RemainingPath,
|
||||
struct _OBJECT_ATTRIBUTES* ObjectAttributes);
|
||||
|
||||
VOID STDCALL (*DuplicationNotify)(PEPROCESS DuplicateTo,
|
||||
PEPROCESS DuplicateFrom,
|
||||
PVOID Object);
|
||||
} OBJECT_TYPE, *POBJECT_TYPE;
|
||||
|
||||
|
||||
typedef struct _OBJECT_HEADER
|
||||
/*
|
||||
* PURPOSE: Header for every object managed by the object manager
|
||||
*/
|
||||
{
|
||||
UNICODE_STRING Name;
|
||||
LIST_ENTRY Entry;
|
||||
LONG RefCount;
|
||||
LONG HandleCount;
|
||||
BOOLEAN CloseInProcess;
|
||||
BOOLEAN Permanent;
|
||||
struct _DIRECTORY_OBJECT* Parent;
|
||||
POBJECT_TYPE ObjectType;
|
||||
|
||||
/*
|
||||
* PURPOSE: Object type
|
||||
* NOTE: This overlaps the first member of the object body
|
||||
*/
|
||||
CSHORT Type;
|
||||
|
||||
/*
|
||||
* PURPOSE: Object size
|
||||
* NOTE: This overlaps the second member of the object body
|
||||
*/
|
||||
CSHORT Size;
|
||||
|
||||
|
||||
} OBJECT_HEADER, *POBJECT_HEADER;
|
||||
|
||||
typedef struct _OBJECT_ATTRIBUTES
|
||||
{
|
||||
ULONG Length;
|
||||
HANDLE RootDirectory;
|
||||
PUNICODE_STRING ObjectName;
|
||||
ULONG Attributes;
|
||||
SECURITY_DESCRIPTOR *SecurityDescriptor;
|
||||
SECURITY_QUALITY_OF_SERVICE *SecurityQualityOfService;
|
||||
} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
|
||||
|
||||
typedef struct _HANDLE_TABLE
|
||||
{
|
||||
LIST_ENTRY ListHead;
|
||||
KSPIN_LOCK ListLock;
|
||||
} HANDLE_TABLE, *PHANDLE_TABLE;
|
||||
|
||||
extern POBJECT_TYPE ObDirectoryType;
|
||||
|
||||
#if 0
|
||||
#define OBJECT_TYPE_0 0
|
||||
#define OBJECT_TYPE_1 1
|
||||
#define OBJECT_TYPE_DIRECTORY 2
|
||||
#define OBJECT_TYPE_SYMBOLICLINK 3
|
||||
#define OBJECT_TYPE_TOKEN 4
|
||||
#define OBJECT_TYPE_PROCESS 5
|
||||
#define OBJECT_TYPE_THREAD 6
|
||||
#define OBJECT_TYPE_EVENT 7
|
||||
#define OBJECT_TYPE_8 8
|
||||
#define OBJECT_TYPE_MUTANT 9
|
||||
#define OBJECT_TYPE_SEMAPHORE 10
|
||||
#define OBJECT_TYPE_TIMER 11
|
||||
#define OBJECT_TYPE_12 12
|
||||
#define OBJECT_TYPE_WINDOWSTATION 13
|
||||
#define OBJECT_TYPE_DESKTOP 14
|
||||
#define OBJECT_TYPE_SECTION 15
|
||||
#define OBJECT_TYPE_KEY 16
|
||||
#define OBJECT_TYPE_PORT 17
|
||||
#define OBJECT_TYPE_18 18
|
||||
#define OBJECT_TYPE_19 19
|
||||
#define OBJECT_TYPE_20 20
|
||||
#define OBJECT_TYPE_21 21
|
||||
#define OBJECT_TYPE_IOCOMPLETION 22
|
||||
#define OBJECT_TYPE_FILE 23
|
||||
#endif
|
||||
|
||||
#endif /* ndef _INCLUDE_DDK_OBTYPES_H */
|
||||
@@ -0,0 +1,176 @@
|
||||
#ifndef __INCLUDE_DDK_PNPFUNCS_H
|
||||
#define __INCLUDE_DDK_PNPFUNCS_H
|
||||
|
||||
#define IoInitializeRemoveLock(Lock, Tag, Maxmin, HighWater) \
|
||||
IoInitializeRemoveLockEx(Lock, Tag, Maxmin, HighWater, sizeof(IO_REMOVE_LOCK))
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
IoInitializeRemoveLockEx(
|
||||
IN PIO_REMOVE_LOCK Lock,
|
||||
IN ULONG AllocateTag,
|
||||
IN ULONG MaxLockedMinutes,
|
||||
IN ULONG HighWatermark,
|
||||
IN ULONG RemlockSize);
|
||||
|
||||
#define IoAcquireRemoveLock(RemoveLock, Tag) \
|
||||
IoAcquireRemoveLockEx(RemoveLock, Tag, __FILE__, __LINE__, sizeof(IO_REMOVE_LOCK))
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
IoAcquireRemoveLockEx(
|
||||
IN PIO_REMOVE_LOCK RemoveLock,
|
||||
IN OPTIONAL PVOID Tag,
|
||||
IN LPCSTR File,
|
||||
IN ULONG Line,
|
||||
IN ULONG RemlockSize);
|
||||
|
||||
#define IoReleaseRemoveLock(RemoveLock, Tag) \
|
||||
IoReleaseRemoveLockEx(RemoveLock, Tag, sizeof (IO_REMOVE_LOCK))
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
IoReleaseRemoveLockEx(
|
||||
IN PIO_REMOVE_LOCK RemoveLock,
|
||||
IN PVOID Tag,
|
||||
IN ULONG RemlockSize);
|
||||
|
||||
#define IoReleaseRemoveLockAndWait(RemoveLock, Tag) \
|
||||
IoReleaseRemoveLockAndWaitEx(RemoveLock, Tag, sizeof (IO_REMOVE_LOCK))
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
IoReleaseRemoveLockAndWaitEx(
|
||||
IN PIO_REMOVE_LOCK RemoveLock,
|
||||
IN PVOID Tag,
|
||||
IN ULONG RemlockSize);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
IoAdjustPagingPathCount(
|
||||
IN PLONG Count,
|
||||
IN BOOLEAN Increment);
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
IoGetDeviceInterfaceAlias(
|
||||
IN PUNICODE_STRING SymbolicLinkName,
|
||||
IN CONST GUID *AliasInterfaceClassGuid,
|
||||
OUT PUNICODE_STRING AliasSymbolicLinkName);
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
IoGetDeviceInterfaces(
|
||||
IN CONST GUID *InterfaceClassGuid,
|
||||
IN PDEVICE_OBJECT PhysicalDeviceObject OPTIONAL,
|
||||
IN ULONG Flags,
|
||||
OUT PWSTR *SymbolicLinkList);
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
IoGetDeviceProperty(
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
IN DEVICE_REGISTRY_PROPERTY DeviceProperty,
|
||||
IN ULONG BufferLength,
|
||||
OUT PVOID PropertyBuffer,
|
||||
OUT PULONG ResultLength);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
IoInvalidateDeviceRelations(
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
IN DEVICE_RELATION_TYPE Type);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
IoInvalidateDeviceState(
|
||||
IN PDEVICE_OBJECT PhysicalDeviceObject);
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
IoOpenDeviceInterfaceRegistryKey(
|
||||
IN PUNICODE_STRING SymbolicLinkName,
|
||||
IN ACCESS_MASK DesiredAccess,
|
||||
OUT PHANDLE DeviceInterfaceKey);
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
IoOpenDeviceRegistryKey(
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
IN ULONG DevInstKeyType,
|
||||
IN ACCESS_MASK DesiredAccess,
|
||||
OUT PHANDLE DevInstRegKey);
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
IoRegisterDeviceInterface(
|
||||
IN PDEVICE_OBJECT PhysicalDeviceObject,
|
||||
IN CONST GUID *InterfaceClassGuid,
|
||||
IN PUNICODE_STRING ReferenceString OPTIONAL,
|
||||
OUT PUNICODE_STRING SymbolicLinkName);
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
IoRegisterPlugPlayNotification(
|
||||
IN IO_NOTIFICATION_EVENT_CATEGORY EventCategory,
|
||||
IN ULONG EventCategoryFlags,
|
||||
IN PVOID EventCategoryData OPTIONAL,
|
||||
IN PDRIVER_OBJECT DriverObject,
|
||||
IN PDRIVER_NOTIFICATION_CALLBACK_ROUTINE CallbackRoutine,
|
||||
IN PVOID Context,
|
||||
OUT PVOID *NotificationEntry);
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
IoReportDetectedDevice(
|
||||
IN PDRIVER_OBJECT DriverObject,
|
||||
IN INTERFACE_TYPE LegacyBusType,
|
||||
IN ULONG BusNumber,
|
||||
IN ULONG SlotNumber,
|
||||
IN PCM_RESOURCE_LIST ResourceList,
|
||||
IN PIO_RESOURCE_REQUIREMENTS_LIST ResourceRequirements OPTIONAL,
|
||||
IN BOOLEAN ResourceAssigned,
|
||||
IN OUT PDEVICE_OBJECT *DeviceObject);
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
IoReportResourceForDetection(
|
||||
IN PDRIVER_OBJECT DriverObject,
|
||||
IN PCM_RESOURCE_LIST DriverList OPTIONAL,
|
||||
IN ULONG DriverListSize OPTIONAL,
|
||||
IN PDEVICE_OBJECT DeviceObject OPTIONAL,
|
||||
IN PCM_RESOURCE_LIST DeviceList OPTIONAL,
|
||||
IN ULONG DeviceListSize OPTIONAL,
|
||||
OUT PBOOLEAN ConflictDetected);
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
IoReportTargetDeviceChange(
|
||||
IN PDEVICE_OBJECT PhysicalDeviceObject,
|
||||
IN PVOID NotificationStructure);
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
IoReportTargetDeviceChangeAsynchronous(
|
||||
IN PDEVICE_OBJECT PhysicalDeviceObject,
|
||||
IN PVOID NotificationStructure,
|
||||
IN PDEVICE_CHANGE_COMPLETE_CALLBACK Callback OPTIONAL,
|
||||
IN PVOID Context OPTIONAL);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
IoRequestDeviceEject(
|
||||
IN PDEVICE_OBJECT PhysicalDeviceObject);
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
IoSetDeviceInterfaceState(
|
||||
IN PUNICODE_STRING SymbolicLinkName,
|
||||
IN BOOLEAN Enable);
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
IoUnregisterPlugPlayNotification(
|
||||
IN PVOID NotificationEntry);
|
||||
|
||||
#endif /* __INCLUDE_DDK_PNPFUNCS_H */
|
||||
@@ -0,0 +1,194 @@
|
||||
#ifndef __INCLUDE_DDK_PNPTYPES_H
|
||||
#define __INCLUDE_DDK_PNPTYPES_H
|
||||
|
||||
struct _DEVICE_OBJECT;
|
||||
struct _FILE_OBJECT;
|
||||
|
||||
// windows.h may be included before
|
||||
#ifndef GUID_DEFINED
|
||||
#define GUID_DEFINED
|
||||
|
||||
typedef struct _GUID {
|
||||
ULONG Data1;
|
||||
USHORT Data2;
|
||||
USHORT Data3;
|
||||
UCHAR Data4[8];
|
||||
} GUID, *LPGUID;
|
||||
|
||||
#endif
|
||||
|
||||
typedef struct _PNP_BUS_INFORMATION {
|
||||
GUID BusTypeGuid;
|
||||
INTERFACE_TYPE LegacyBusType;
|
||||
ULONG BusNumber;
|
||||
} PNP_BUS_INFORMATION, *PPNP_BUS_INFORMATION;
|
||||
|
||||
typedef struct _DEVICE_CAPABILITIES {
|
||||
USHORT Size;
|
||||
USHORT Version;
|
||||
ULONG DeviceD1:1;
|
||||
ULONG DeviceD2:1;
|
||||
ULONG LockSupported:1;
|
||||
ULONG EjectSupported:1;
|
||||
ULONG Removable:1;
|
||||
ULONG DockDevice:1;
|
||||
ULONG UniqueID:1;
|
||||
ULONG SilentInstall:1;
|
||||
ULONG RawDeviceOK:1;
|
||||
ULONG SurpriseRemovalOK:1;
|
||||
ULONG WakeFromD0:1;
|
||||
ULONG WakeFromD1:1;
|
||||
ULONG WakeFromD2:1;
|
||||
ULONG WakeFromD3:1;
|
||||
ULONG HardwareDisabled:1;
|
||||
ULONG NonDynamic:1;
|
||||
ULONG WarmEjectSupported:1;
|
||||
ULONG Reserved:15;
|
||||
ULONG Address;
|
||||
ULONG UINumber;
|
||||
DEVICE_POWER_STATE DeviceState[PowerSystemMaximum];
|
||||
SYSTEM_POWER_STATE SystemWake;
|
||||
DEVICE_POWER_STATE DeviceWake;
|
||||
ULONG D1Latency;
|
||||
ULONG D2Latency;
|
||||
ULONG D3Latency;
|
||||
} DEVICE_CAPABILITIES, *PDEVICE_CAPABILITIES;
|
||||
|
||||
typedef struct _DEVICE_INTERFACE_CHANGE_NOTIFICATION {
|
||||
USHORT Version;
|
||||
USHORT Size;
|
||||
GUID Event;
|
||||
//
|
||||
// Event-specific data
|
||||
//
|
||||
GUID InterfaceClassGuid;
|
||||
PUNICODE_STRING SymbolicLinkName;
|
||||
} DEVICE_INTERFACE_CHANGE_NOTIFICATION, *PDEVICE_INTERFACE_CHANGE_NOTIFICATION;
|
||||
|
||||
typedef struct _HWPROFILE_CHANGE_NOTIFICATION {
|
||||
USHORT Version;
|
||||
USHORT Size;
|
||||
GUID Event;
|
||||
//
|
||||
// (No event-specific data)
|
||||
//
|
||||
} HWPROFILE_CHANGE_NOTIFICATION, *PHWPROFILE_CHANGE_NOTIFICATION;
|
||||
|
||||
typedef struct _PLUGPLAY_NOTIFICATION_HEADER {
|
||||
USHORT Version;
|
||||
USHORT Size;
|
||||
GUID Event;
|
||||
} PLUGPLAY_NOTIFICATION_HEADER, *PPLUGPLAY_NOTIFICATION_HEADER;
|
||||
|
||||
typedef ULONG PNP_DEVICE_STATE, *PPNP_DEVICE_STATE;
|
||||
|
||||
#define PNP_DEVICE_DISABLED 0x00000001
|
||||
#define PNP_DEVICE_DONT_DISPLAY_IN_UI 0x00000002
|
||||
#define PNP_DEVICE_FAILED 0x00000004
|
||||
#define PNP_DEVICE_REMOVED 0x00000008
|
||||
#define PNP_DEVICE_RESOURCE_REQUIREMENTS_CHANGED 0x00000010
|
||||
#define PNP_DEVICE_NOT_DISABLEABLE 0x00000020
|
||||
|
||||
typedef struct _TARGET_DEVICE_CUSTOM_NOTIFICATION {
|
||||
USHORT Version;
|
||||
USHORT Size;
|
||||
GUID Event;
|
||||
//
|
||||
// Event-specific data
|
||||
//
|
||||
struct _FILE_OBJECT *FileObject;
|
||||
LONG NameBufferOffset;
|
||||
UCHAR CustomDataBuffer[1];
|
||||
} TARGET_DEVICE_CUSTOM_NOTIFICATION, *PTARGET_DEVICE_CUSTOM_NOTIFICATION;
|
||||
|
||||
typedef struct _TARGET_DEVICE_REMOVAL_NOTIFICATION {
|
||||
USHORT Version;
|
||||
USHORT Size;
|
||||
GUID Event;
|
||||
//
|
||||
// Event-specific data
|
||||
//
|
||||
struct _FILE_OBJECT *FileObject;
|
||||
} TARGET_DEVICE_REMOVAL_NOTIFICATION, *PTARGET_DEVICE_REMOVAL_NOTIFICATION;
|
||||
|
||||
|
||||
// PnP Device Property for IoGetDeviceProperty
|
||||
typedef enum {
|
||||
DevicePropertyDeviceDescription,
|
||||
DevicePropertyHardwareID,
|
||||
DevicePropertyCompatibleIDs,
|
||||
DevicePropertyBootConfiguration,
|
||||
DevicePropertyBootConfigurationTranslated,
|
||||
DevicePropertyClassName,
|
||||
DevicePropertyClassGuid,
|
||||
DevicePropertyDriverKeyName,
|
||||
DevicePropertyManufacturer,
|
||||
DevicePropertyFriendlyName,
|
||||
DevicePropertyLocationInformation,
|
||||
DevicePropertyPhysicalDeviceObjectName,
|
||||
DevicePropertyBusTypeGuid,
|
||||
DevicePropertyLegacyBusType,
|
||||
DevicePropertyBusNumber,
|
||||
DevicePropertyEnumeratorName,
|
||||
DevicePropertyAddress,
|
||||
DevicePropertyUINumber
|
||||
} DEVICE_REGISTRY_PROPERTY;
|
||||
|
||||
// DevInstKeyType values for IoOpenDeviceRegistryKey
|
||||
#define PLUGPLAY_REGKEY_DEVICE 1
|
||||
#define PLUGPLAY_REGKEY_DRIVER 2
|
||||
#define PLUGPLAY_REGKEY_CURRENT_HWPROFILE 4
|
||||
|
||||
// EventCategory for IoRegisterPlugPlayNotification
|
||||
typedef enum _IO_NOTIFICATION_EVENT_CATEGORY {
|
||||
EventCategoryReserved,
|
||||
EventCategoryHardwareProfileChange,
|
||||
EventCategoryDeviceInterfaceChange,
|
||||
EventCategoryTargetDeviceChange
|
||||
} IO_NOTIFICATION_EVENT_CATEGORY;
|
||||
|
||||
// CallbackRoutine for IoRegisterPlugPlayNotification
|
||||
typedef NTSTATUS STDCALL
|
||||
(*PDRIVER_NOTIFICATION_CALLBACK_ROUTINE)(
|
||||
IN PVOID NotificationStructure,
|
||||
IN PVOID Context);
|
||||
|
||||
// Callback for IoReportTargetDeviceChangeAsynchronous
|
||||
typedef VOID STDCALL
|
||||
(*PDEVICE_CHANGE_COMPLETE_CALLBACK)(
|
||||
IN PVOID Context);
|
||||
|
||||
// PNP/POWER values for IRP_MJ_PNP/IRP_MJ_POWER
|
||||
typedef enum _DEVICE_RELATION_TYPE {
|
||||
BusRelations,
|
||||
EjectionRelations,
|
||||
PowerRelations,
|
||||
RemovalRelations,
|
||||
TargetDeviceRelation
|
||||
} DEVICE_RELATION_TYPE, *PDEVICE_RELATION_TYPE;
|
||||
|
||||
typedef struct _DEVICE_RELATIONS {
|
||||
ULONG Count;
|
||||
struct _DEVICE_OBJECT *Objects[1];
|
||||
} DEVICE_RELATIONS, *PDEVICE_RELATIONS;
|
||||
|
||||
typedef enum _DEVICE_USAGE_NOTIFICATION_TYPE {
|
||||
DeviceUsageTypeUndefined,
|
||||
DeviceUsageTypePaging,
|
||||
DeviceUsageTypeHibernation,
|
||||
DeviceUsageTypeDumpFile
|
||||
} DEVICE_USAGE_NOTIFICATION_TYPE;
|
||||
|
||||
|
||||
typedef struct _IO_REMOVE_LOCK_COMMON_BLOCK {
|
||||
BOOLEAN Removed;
|
||||
BOOLEAN Reserved[3];
|
||||
LONG IoCount;
|
||||
KEVENT RemoveEvent;
|
||||
} IO_REMOVE_LOCK_COMMON_BLOCK;
|
||||
|
||||
typedef struct _IO_REMOVE_LOCK {
|
||||
IO_REMOVE_LOCK_COMMON_BLOCK Common;
|
||||
} IO_REMOVE_LOCK, *PIO_REMOVE_LOCK;
|
||||
|
||||
#endif /* __INCLUDE_DDK_PNPTYPES_H */
|
||||
@@ -0,0 +1,61 @@
|
||||
#ifndef __INCLUDE_DDK_POFUNCS_H
|
||||
#define __INCLUDE_DDK_POFUNCS_H
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
PoCallDriver(
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
IN OUT PIRP Irp);
|
||||
|
||||
PULONG
|
||||
STDCALL
|
||||
PoRegisterDeviceForIdleDetection(
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
IN ULONG ConservationIdleTime,
|
||||
IN ULONG PerformanceIdleTime,
|
||||
IN DEVICE_POWER_STATE State);
|
||||
|
||||
PVOID
|
||||
STDCALL
|
||||
PoRegisterSystemState(
|
||||
IN PVOID StateHandle,
|
||||
IN EXECUTION_STATE Flags);
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
PoRequestPowerIrp(
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
IN UCHAR MinorFunction,
|
||||
IN POWER_STATE PowerState,
|
||||
IN PREQUEST_POWER_COMPLETE CompletionFunction,
|
||||
IN PVOID Context,
|
||||
OUT PIRP *Irp OPTIONAL);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
PoSetDeviceBusy(
|
||||
PULONG IdlePointer);
|
||||
|
||||
POWER_STATE
|
||||
STDCALL
|
||||
PoSetPowerState(
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
IN POWER_STATE_TYPE Type,
|
||||
IN POWER_STATE State);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
PoSetSystemState(
|
||||
IN EXECUTION_STATE Flags);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
PoStartNextPowerIrp(
|
||||
IN PIRP Irp);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
PoUnregisterSystemState(
|
||||
IN PVOID StateHandle);
|
||||
|
||||
#endif /* __INCLUDE_DDK_POFUNCS_H */
|
||||
@@ -0,0 +1,101 @@
|
||||
#ifndef __INCLUDE_DDK_POTYPES_H
|
||||
#define __INCLUDE_DDK_POTYPES_H
|
||||
|
||||
struct _DEVICE_OBJECT;
|
||||
struct _IO_STATUS_BLOCK;
|
||||
|
||||
// Flags for PoSetSystemState
|
||||
typedef ULONG EXECUTION_STATE;
|
||||
|
||||
#define ES_SYSTEM_REQUIRED ((EXECUTION_STATE)0x00000001)
|
||||
#define ES_DISPLAY_REQUIRED ((EXECUTION_STATE)0x00000002)
|
||||
#define ES_USER_PRESENT ((EXECUTION_STATE)0x00000004)
|
||||
#define ES_CONTINUOUS ((EXECUTION_STATE)0x80000000)
|
||||
|
||||
// PowerState for PoRequestPowerIrp
|
||||
typedef enum _SYSTEM_POWER_STATE {
|
||||
PowerSystemUnspecified = 0,
|
||||
PowerSystemWorking,
|
||||
PowerSystemSleeping1,
|
||||
PowerSystemSleeping2,
|
||||
PowerSystemSleeping3,
|
||||
PowerSystemHibernate,
|
||||
PowerSystemShutdown,
|
||||
PowerSystemMaximum
|
||||
} SYSTEM_POWER_STATE, *PSYSTEM_POWER_STATE;
|
||||
|
||||
// Values for IRP_MN_QUERY_POWER/IRP_MN_SET_POWER
|
||||
typedef enum {
|
||||
PowerActionNone = 0,
|
||||
PowerActionReserved,
|
||||
PowerActionSleep,
|
||||
PowerActionHibernate,
|
||||
PowerActionShutdown,
|
||||
PowerActionShutdownReset,
|
||||
PowerActionShutdownOff,
|
||||
PowerActionWarmEject
|
||||
} POWER_ACTION, *PPOWER_ACTION;
|
||||
|
||||
// State for PoRegisterDeviceForIdleDetection
|
||||
typedef enum _DEVICE_POWER_STATE {
|
||||
PowerDeviceUnspecified = 0,
|
||||
PowerDeviceD0,
|
||||
PowerDeviceD1,
|
||||
PowerDeviceD2,
|
||||
PowerDeviceD3,
|
||||
PowerDeviceMaximum
|
||||
} DEVICE_POWER_STATE, *PDEVICE_POWER_STATE;
|
||||
|
||||
// State for PoSetPowerState
|
||||
typedef union _POWER_STATE {
|
||||
SYSTEM_POWER_STATE SystemState;
|
||||
DEVICE_POWER_STATE DeviceState;
|
||||
} POWER_STATE, *PPOWER_STATE;
|
||||
|
||||
// Type for PoSetPowerState
|
||||
typedef enum _POWER_STATE_TYPE {
|
||||
SystemPowerState = 0,
|
||||
DevicePowerState
|
||||
} POWER_STATE_TYPE, *PPOWER_STATE_TYPE;
|
||||
|
||||
// CompletionFunction for PoRequestPowerIrp
|
||||
typedef VOID STDCALL
|
||||
(*PREQUEST_POWER_COMPLETE) (
|
||||
IN struct _DEVICE_OBJECT *DeviceObject,
|
||||
IN UCHAR MinorFunction,
|
||||
IN POWER_STATE PowerState,
|
||||
IN PVOID Context,
|
||||
IN struct _IO_STATUS_BLOCK *IoStatus);
|
||||
|
||||
|
||||
typedef struct _POWER_SEQUENCE {
|
||||
ULONG SequenceD1;
|
||||
ULONG SequenceD2;
|
||||
ULONG SequenceD3;
|
||||
} POWER_SEQUENCE, *PPOWER_SEQUENCE;
|
||||
|
||||
typedef VOID STDCALL (*PINTERFACE_REFERENCE)(PVOID Context);
|
||||
typedef VOID STDCALL (*PINTERFACE_DEREFERENCE)(PVOID Context);
|
||||
|
||||
typedef struct _INTERFACE {
|
||||
USHORT Size;
|
||||
USHORT Version;
|
||||
PVOID Context;
|
||||
PINTERFACE_REFERENCE InterfaceReference;
|
||||
PINTERFACE_DEREFERENCE InterfaceDereference;
|
||||
} INTERFACE, *PINTERFACE;
|
||||
|
||||
typedef enum {
|
||||
BusQueryDeviceID = 0,
|
||||
BusQueryHardwareIDs = 1,
|
||||
BusQueryCompatibleIDs = 2,
|
||||
BusQueryInstanceID = 3,
|
||||
BusQueryDeviceSerialNumber = 4
|
||||
} BUS_QUERY_ID_TYPE, *PBUS_QUERY_ID_TYPE;
|
||||
|
||||
typedef enum {
|
||||
DeviceTextDescription = 0,
|
||||
DeviceTextLocationInformation = 1
|
||||
} DEVICE_TEXT_TYPE, *PDEVICE_TEXT_TYPE;
|
||||
|
||||
#endif /* __INCLUDE_DDK_POTYPES_H */
|
||||
@@ -0,0 +1,98 @@
|
||||
/* $Id: psfuncs.h,v 1.22 2002/09/08 10:47:45 chorns Exp $
|
||||
*/
|
||||
#ifndef _INCLUDE_DDK_PSFUNCS_H
|
||||
#define _INCLUDE_DDK_PSFUNCS_H
|
||||
|
||||
NTSTATUS STDCALL PsAssignImpersonationToken (struct _ETHREAD* Thread,
|
||||
HANDLE TokenHandle);
|
||||
|
||||
HANDLE STDCALL PsGetCurrentProcessId(VOID);
|
||||
HANDLE STDCALL PsGetCurrentThreadId(VOID);
|
||||
|
||||
/*
|
||||
* FUNCTION: Creates a thread which executes in kernel mode
|
||||
* ARGUMENTS:
|
||||
* ThreadHandle (OUT) = Caller supplied storage for the returned thread
|
||||
* handle
|
||||
* DesiredAccess = Requested access to the thread
|
||||
* ObjectAttributes = Object attributes (optional)
|
||||
* ProcessHandle = Handle of process thread will run in
|
||||
* NULL to use system process
|
||||
* ClientId (OUT) = Caller supplied storage for the returned client id
|
||||
* of the thread (optional)
|
||||
* StartRoutine = Entry point for the thread
|
||||
* StartContext = Argument supplied to the thread when it begins
|
||||
* execution
|
||||
* RETURNS: Success or failure status
|
||||
*/
|
||||
NTSTATUS STDCALL PsCreateSystemThread(PHANDLE ThreadHandle,
|
||||
ACCESS_MASK DesiredAccess,
|
||||
POBJECT_ATTRIBUTES ObjectAttributes,
|
||||
HANDLE ProcessHandle,
|
||||
PCLIENT_ID ClientId,
|
||||
PKSTART_ROUTINE StartRoutine,
|
||||
PVOID StartContext);
|
||||
NTSTATUS STDCALL PsTerminateSystemThread(NTSTATUS ExitStatus);
|
||||
|
||||
NTSTATUS STDCALL PsCreateSystemProcess(PHANDLE ProcessHandle,
|
||||
ACCESS_MASK DesiredAccess,
|
||||
POBJECT_ATTRIBUTES ObjectAttributes);
|
||||
|
||||
NTSTATUS STDCALL PsCreateWin32Process(struct _EPROCESS* Process);
|
||||
NTSTATUS STDCALL PsCreateWin32Thread(struct _ETHREAD* Thread);
|
||||
|
||||
VOID STDCALL PsEstablishWin32Callouts(PVOID Param1,
|
||||
PVOID Param2,
|
||||
PVOID Param3,
|
||||
PVOID Param4,
|
||||
ULONG W32ThreadSize,
|
||||
ULONG W32ProcessSize);
|
||||
|
||||
struct _ETHREAD* STDCALL PsGetCurrentThread(VOID);
|
||||
struct _EPROCESS* STDCALL PsGetCurrentProcess(VOID);
|
||||
PACCESS_TOKEN STDCALL PsReferenceImpersonationToken(struct _ETHREAD* Thread,
|
||||
PULONG Unknown1,
|
||||
PULONG Unknown2,
|
||||
SECURITY_IMPERSONATION_LEVEL*
|
||||
Level);
|
||||
PACCESS_TOKEN STDCALL PsReferencePrimaryToken(struct _EPROCESS* Process);
|
||||
NTSTATUS STDCALL PsAssignImpersonationToken(struct _ETHREAD* Thread,
|
||||
HANDLE TokenHandle);
|
||||
|
||||
VOID STDCALL PsImpersonateClient(struct _ETHREAD* Thread,
|
||||
PACCESS_TOKEN Token,
|
||||
UCHAR b,
|
||||
UCHAR c,
|
||||
SECURITY_IMPERSONATION_LEVEL Level);
|
||||
VOID STDCALL PsRevertToSelf(VOID);
|
||||
|
||||
BOOLEAN STDCALL PsGetVersion (PULONG MajorVersion OPTIONAL,
|
||||
PULONG MinorVersion OPTIONAL,
|
||||
PULONG BuildNumber OPTIONAL,
|
||||
PUNICODE_STRING CSDVersion OPTIONAL);
|
||||
|
||||
LARGE_INTEGER STDCALL PsGetProcessExitTime(VOID);
|
||||
BOOLEAN STDCALL PsIsThreadTerminating(struct _ETHREAD* Thread);
|
||||
|
||||
NTSTATUS STDCALL PsLookupProcessByProcessId(IN PVOID ProcessId,
|
||||
OUT PEPROCESS *Process);
|
||||
|
||||
NTSTATUS STDCALL PsLookupProcessThreadByCid(IN PCLIENT_ID Cid,
|
||||
OUT PEPROCESS *Process OPTIONAL,
|
||||
OUT struct _ETHREAD **Thread);
|
||||
// OUT PETHREAD *Thread);
|
||||
|
||||
NTSTATUS STDCALL PsLookupThreadByThreadId(IN PVOID ThreadId,
|
||||
OUT struct _ETHREAD **Thread);
|
||||
// OUT PETHREAD *Thread);
|
||||
|
||||
NTSTATUS STDCALL
|
||||
PsSetCreateProcessNotifyRoutine(IN PCREATE_PROCESS_NOTIFY_ROUTINE NotifyRoutine,
|
||||
IN BOOLEAN Remove);
|
||||
|
||||
NTSTATUS STDCALL
|
||||
PsSetCreateThreadNotifyRoutine(IN PCREATE_THREAD_NOTIFY_ROUTINE NotifyRoutine);
|
||||
|
||||
#endif
|
||||
|
||||
/* EOF */
|
||||
@@ -0,0 +1,57 @@
|
||||
#ifndef __INCLUDE_DDK_PSTYPES_H
|
||||
#define __INCLUDE_DDK_PSTYPES_H
|
||||
|
||||
#include <ntos/ps.h>
|
||||
|
||||
#include <ddk/i386/tss.h>
|
||||
#include <napi/teb.h>
|
||||
|
||||
#ifndef TLS_MINIMUM_AVAILABLE
|
||||
#define TLS_MINIMUM_AVAILABLE (64)
|
||||
#endif
|
||||
#ifndef MAX_PATH
|
||||
#define MAX_PATH (260)
|
||||
#endif
|
||||
|
||||
struct _EPROCESS;
|
||||
struct _KPROCESS;
|
||||
struct _ETHREAD;
|
||||
struct _KTHREAD;
|
||||
|
||||
typedef NTSTATUS STDCALL (*PKSTART_ROUTINE)(PVOID StartContext);
|
||||
|
||||
typedef VOID STDCALL (*PCREATE_PROCESS_NOTIFY_ROUTINE)(HANDLE ParentId,
|
||||
HANDLE ProcessId,
|
||||
BOOLEAN Create);
|
||||
|
||||
typedef VOID STDCALL (*PCREATE_THREAD_NOTIFY_ROUTINE)(HANDLE ProcessId,
|
||||
HANDLE ThreadId,
|
||||
BOOLEAN Create);
|
||||
|
||||
typedef struct _STACK_INFORMATION
|
||||
{
|
||||
PVOID BaseAddress;
|
||||
PVOID UpperAddress;
|
||||
} STACK_INFORMATION, *PSTACK_INFORMATION;
|
||||
|
||||
typedef ULONG THREADINFOCLASS;
|
||||
|
||||
struct _KPROCESS;
|
||||
|
||||
#define LOW_PRIORITY (0)
|
||||
#define LOW_REALTIME_PRIORITY (16)
|
||||
#define HIGH_PRIORITY (31)
|
||||
#define MAXIMUM_PRIORITY (32)
|
||||
|
||||
|
||||
#ifdef __NTOSKRNL__
|
||||
extern struct _EPROCESS* EXPORTED PsInitialSystemProcess;
|
||||
extern POBJECT_TYPE EXPORTED PsProcessType;
|
||||
extern POBJECT_TYPE EXPORTED PsThreadType;
|
||||
#else
|
||||
extern struct _EPROCESS* IMPORTED PsInitialSystemProcess;
|
||||
extern POBJECT_TYPE IMPORTED PsProcessType;
|
||||
extern POBJECT_TYPE IMPORTED PsThreadType;
|
||||
#endif
|
||||
|
||||
#endif /* __INCLUDE_DDK_PSTYPES_H */
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,214 @@
|
||||
/* $Id: rtltypes.h,v 1.6 2002/09/08 10:47:45 chorns Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __DDK_RTLTYPES_H
|
||||
#define __DDK_RTLTYPES_H
|
||||
|
||||
|
||||
#define COMPRESSION_FORMAT_NONE 0x0000
|
||||
#define COMPRESSION_FORMAT_DEFAULT 0x0001
|
||||
#define COMPRESSION_FORMAT_LZNT1 0x0002
|
||||
|
||||
#define COMPRESSION_ENGINE_STANDARD 0x0000
|
||||
#define COMPRESSION_ENGINE_MAXIMUM 0x0100
|
||||
#define COMPRESSION_ENGINE_HIBER 0x0200
|
||||
|
||||
|
||||
typedef struct _INITIAL_TEB
|
||||
{
|
||||
ULONG StackCommit;
|
||||
ULONG StackReserve;
|
||||
PVOID StackBase;
|
||||
PVOID StackLimit;
|
||||
PVOID StackAllocate;
|
||||
} INITIAL_TEB, *PINITIAL_TEB;
|
||||
|
||||
typedef struct _CONTROLLER_OBJECT
|
||||
{
|
||||
CSHORT Type;
|
||||
CSHORT Size;
|
||||
PVOID ControllerExtension;
|
||||
KDEVICE_QUEUE DeviceWaitQueue;
|
||||
ULONG Spare1;
|
||||
LARGE_INTEGER Spare2;
|
||||
} CONTROLLER_OBJECT, *PCONTROLLER_OBJECT;
|
||||
|
||||
typedef struct _STRING
|
||||
{
|
||||
/*
|
||||
* Length in bytes of the string stored in buffer
|
||||
*/
|
||||
USHORT Length;
|
||||
|
||||
/*
|
||||
* Maximum length of the string
|
||||
*/
|
||||
USHORT MaximumLength;
|
||||
|
||||
/*
|
||||
* String
|
||||
*/
|
||||
PCHAR Buffer;
|
||||
} STRING, *PSTRING;
|
||||
|
||||
typedef STRING ANSI_STRING;
|
||||
typedef PSTRING PANSI_STRING;
|
||||
|
||||
typedef STRING OEM_STRING;
|
||||
typedef PSTRING POEM_STRING;
|
||||
|
||||
|
||||
typedef struct _TIME_FIELDS
|
||||
{
|
||||
CSHORT Year;
|
||||
CSHORT Month;
|
||||
CSHORT Day;
|
||||
CSHORT Hour;
|
||||
CSHORT Minute;
|
||||
CSHORT Second;
|
||||
CSHORT Milliseconds;
|
||||
CSHORT Weekday;
|
||||
} TIME_FIELDS, *PTIME_FIELDS;
|
||||
|
||||
typedef struct _RTL_BITMAP
|
||||
{
|
||||
ULONG SizeOfBitMap;
|
||||
PULONG Buffer;
|
||||
} RTL_BITMAP, *PRTL_BITMAP;
|
||||
|
||||
typedef struct _RTL_HEAP_DEFINITION
|
||||
{
|
||||
ULONG Length;
|
||||
ULONG Unknown[11];
|
||||
} RTL_HEAP_DEFINITION, *PRTL_HEAP_DEFINITION;
|
||||
|
||||
typedef struct _RTL_ATOM_TABLE
|
||||
{
|
||||
ULONG TableSize;
|
||||
ULONG NumberOfAtoms;
|
||||
PVOID Lock; /* fast mutex (kernel mode)/ critical section (user mode) */
|
||||
PVOID HandleTable;
|
||||
LIST_ENTRY Slot[0];
|
||||
} RTL_ATOM_TABLE, *PRTL_ATOM_TABLE;
|
||||
|
||||
typedef struct _LB_RANGE
|
||||
{
|
||||
UCHAR upper;
|
||||
UCHAR lower;
|
||||
} LB_RANGE;
|
||||
|
||||
typedef struct _RTL_NLS_DATA
|
||||
{
|
||||
USHORT CodePage;
|
||||
USHORT MaxCharacterSize; // SBCS = 1, DBCS = 2
|
||||
WCHAR DefaultCharacter;
|
||||
WCHAR char1;
|
||||
WCHAR char2;
|
||||
WCHAR char3;
|
||||
USHORT DbcsFlag;
|
||||
LB_RANGE LeadByteRange[6];
|
||||
USHORT reserved;
|
||||
PWCHAR MultiByteToUnicode;
|
||||
PCHAR UnicodeToMultiByte;
|
||||
PWCHAR DosMultiByteToUnicode;
|
||||
PCHAR DbcsTags;
|
||||
} RTL_NLS_DATA, *PRTL_NLS_DATA;
|
||||
|
||||
typedef struct _RTL_NLS_TABLE
|
||||
{
|
||||
RTL_NLS_DATA OemInfo;
|
||||
RTL_NLS_DATA AnsiInfo;
|
||||
PWCHAR UpcaseTable;
|
||||
PWCHAR DowncaseTable;
|
||||
} RTL_NLS_TABLE, *PRTL_NLS_TABLE;
|
||||
|
||||
|
||||
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;
|
||||
|
||||
|
||||
typedef struct _RTL_GENERIC_TABLE
|
||||
{
|
||||
PVOID RootElement;
|
||||
ULONG Unknown2;
|
||||
ULONG Unknown3;
|
||||
ULONG Unknown4;
|
||||
ULONG Unknown5;
|
||||
ULONG ElementCount;
|
||||
PVOID CompareRoutine;
|
||||
PVOID AllocateRoutine;
|
||||
PVOID FreeRoutine;
|
||||
ULONG UserParameter;
|
||||
} RTL_GENERIC_TABLE, *PRTL_GENERIC_TABLE;
|
||||
|
||||
|
||||
typedef struct _RTL_MESSAGE_RESOURCE_ENTRY
|
||||
{
|
||||
USHORT Length;
|
||||
USHORT Flags;
|
||||
UCHAR Text[1];
|
||||
} RTL_MESSAGE_RESOURCE_ENTRY, *PRTL_MESSAGE_RESOURCE_ENTRY;
|
||||
|
||||
typedef struct _RTL_MESSAGE_RESOURCE_BLOCK
|
||||
{
|
||||
ULONG LowId;
|
||||
ULONG HighId;
|
||||
ULONG OffsetToEntries;
|
||||
} RTL_MESSAGE_RESOURCE_BLOCK, *PRTL_MESSAGE_RESOURCE_BLOCK;
|
||||
|
||||
typedef struct _RTL_MESSAGE_RESOURCE_DATA
|
||||
{
|
||||
ULONG NumberOfBlocks;
|
||||
RTL_MESSAGE_RESOURCE_BLOCK Blocks[1];
|
||||
} RTL_MESSAGE_RESOURCE_DATA, *PRTL_MESSAGE_RESOURCE_DATA;
|
||||
|
||||
|
||||
typedef NTSTATUS STDCALL
|
||||
(*PRTL_QUERY_REGISTRY_ROUTINE)(PWSTR ValueName,
|
||||
ULONG ValueType,
|
||||
PVOID ValueData,
|
||||
ULONG ValueLength,
|
||||
PVOID Context,
|
||||
PVOID EntryContext);
|
||||
|
||||
typedef struct _RTL_QUERY_REGISTRY_TABLE
|
||||
{
|
||||
PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine;
|
||||
ULONG Flags;
|
||||
PWSTR Name;
|
||||
PVOID EntryContext;
|
||||
ULONG DefaultType;
|
||||
PVOID DefaultData;
|
||||
ULONG DefaultLength;
|
||||
} RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE;
|
||||
|
||||
|
||||
typedef struct _GENERATE_NAME_CONTEXT
|
||||
{
|
||||
USHORT Checksum;
|
||||
BOOLEAN CheckSumInserted;
|
||||
UCHAR NameLength;
|
||||
WCHAR NameBuffer[8];
|
||||
ULONG ExtensionLength;
|
||||
WCHAR ExtensionBuffer[4];
|
||||
ULONG LastIndexValue;
|
||||
} GENERATE_NAME_CONTEXT, *PGENERATE_NAME_CONTEXT;
|
||||
|
||||
|
||||
typedef struct _COMPRESSED_DATA_INFO
|
||||
{
|
||||
USHORT CompressionFormatAndEngine;
|
||||
UCHAR CompressionUnitShift;
|
||||
UCHAR ChunkShift;
|
||||
UCHAR ClusterShift;
|
||||
UCHAR Reserved;
|
||||
USHORT NumberOfChunks;
|
||||
ULONG CompressedChunkSizes[1];
|
||||
} COMPRESSED_DATA_INFO, *PCOMPRESSED_DATA_INFO;
|
||||
|
||||
#endif /* __DDK_RTLTYPES_H */
|
||||
@@ -0,0 +1,152 @@
|
||||
#ifndef _INCLUDE_DDK_SEFUNCS_H
|
||||
#define _INCLUDE_DDK_SEFUNCS_H
|
||||
/* $Id: sefuncs.h,v 1.19 2002/09/08 10:47:45 chorns Exp $ */
|
||||
|
||||
BOOLEAN STDCALL
|
||||
SeAccessCheck(IN PSECURITY_DESCRIPTOR SecurityDescriptor,
|
||||
IN PSECURITY_SUBJECT_CONTEXT SubjectSecurityContext,
|
||||
IN BOOLEAN SubjectContextLocked,
|
||||
IN ACCESS_MASK DesiredAccess,
|
||||
IN ACCESS_MASK PreviouslyGrantedAccess,
|
||||
OUT PPRIVILEGE_SET* Privileges OPTIONAL,
|
||||
IN PGENERIC_MAPPING GenericMapping,
|
||||
IN KPROCESSOR_MODE AccessMode,
|
||||
OUT PACCESS_MODE GrantedAccess,
|
||||
OUT PNTSTATUS AccessStatus);
|
||||
|
||||
NTSTATUS STDCALL
|
||||
SeAppendPrivileges(IN PACCESS_STATE AccessState,
|
||||
IN PPRIVILEGE_SET Privileges);
|
||||
|
||||
NTSTATUS STDCALL
|
||||
SeAssignSecurity(IN PSECURITY_DESCRIPTOR ParentDescriptor OPTIONAL,
|
||||
IN PSECURITY_DESCRIPTOR ExplicitDescriptor,
|
||||
OUT PSECURITY_DESCRIPTOR* NewDescriptor,
|
||||
IN BOOLEAN IsDirectoryObject,
|
||||
IN PSECURITY_SUBJECT_CONTEXT SubjectContext,
|
||||
IN PGENERIC_MAPPING GenericMapping,
|
||||
IN POOL_TYPE PoolType);
|
||||
|
||||
BOOLEAN STDCALL
|
||||
SeAuditingFileEvents(IN BOOLEAN AccessGranted,
|
||||
IN PSECURITY_DESCRIPTOR SecurityDescriptor);
|
||||
|
||||
BOOLEAN STDCALL
|
||||
SeAuditingFileOrGlobalEvents(IN BOOLEAN AccessGranted,
|
||||
IN PSECURITY_DESCRIPTOR SecurityDescriptor,
|
||||
IN PSECURITY_SUBJECT_CONTEXT SubjectContext);
|
||||
|
||||
VOID STDCALL
|
||||
SeCaptureSubjectContext(OUT PSECURITY_SUBJECT_CONTEXT SubjectContext);
|
||||
|
||||
NTSTATUS STDCALL
|
||||
SeCreateAccessState(OUT PACCESS_STATE AccessState,
|
||||
IN PVOID AuxData,
|
||||
IN ACCESS_MASK AccessMask,
|
||||
IN PGENERIC_MAPPING Mapping);
|
||||
|
||||
NTSTATUS STDCALL
|
||||
SeCreateClientSecurity(IN struct _ETHREAD *Thread,
|
||||
IN PSECURITY_QUALITY_OF_SERVICE Qos,
|
||||
IN BOOLEAN RemoteClient,
|
||||
OUT PSECURITY_CLIENT_CONTEXT ClientContext);
|
||||
|
||||
NTSTATUS STDCALL
|
||||
SeDeassignSecurity(IN OUT PSECURITY_DESCRIPTOR* SecurityDescriptor);
|
||||
|
||||
VOID STDCALL
|
||||
SeDeleteAccessState(IN PACCESS_STATE AccessState);
|
||||
|
||||
VOID STDCALL
|
||||
SeDeleteObjectAuditAlarm(IN PVOID Object,
|
||||
IN HANDLE Handle);
|
||||
|
||||
VOID STDCALL
|
||||
SeFreePrivileges(IN PPRIVILEGE_SET Privileges);
|
||||
|
||||
VOID STDCALL
|
||||
SeImpersonateClient(IN PSECURITY_CLIENT_CONTEXT ClientContext,
|
||||
IN struct _ETHREAD *ServerThread OPTIONAL);
|
||||
|
||||
VOID STDCALL
|
||||
SeLockSubjectContext(IN PSECURITY_SUBJECT_CONTEXT SubjectContext);
|
||||
|
||||
NTSTATUS STDCALL
|
||||
SeMarkLogonSessionForTerminationNotification(IN PLUID LogonId);
|
||||
|
||||
VOID STDCALL
|
||||
SeOpenObjectAuditAlarm(IN PUNICODE_STRING ObjectTypeName,
|
||||
IN PVOID Object OPTIONAL,
|
||||
IN PUNICODE_STRING AbsoluteObjectName OPTIONAL,
|
||||
IN PSECURITY_DESCRIPTOR SecurityDescriptor,
|
||||
IN PACCESS_STATE AccessState,
|
||||
IN BOOLEAN ObjectCreated,
|
||||
IN BOOLEAN AccessGranted,
|
||||
IN KPROCESSOR_MODE AccessMode,
|
||||
OUT PBOOLEAN GenerateOnClose);
|
||||
|
||||
VOID STDCALL
|
||||
SeOpenObjectForDeleteAuditAlarm(IN PUNICODE_STRING ObjectTypeName,
|
||||
IN PVOID Object OPTIONAL,
|
||||
IN PUNICODE_STRING AbsoluteObjectName OPTIONAL,
|
||||
IN PSECURITY_DESCRIPTOR SecurityDescriptor,
|
||||
IN PACCESS_STATE AccessState,
|
||||
IN BOOLEAN ObjectCreated,
|
||||
IN BOOLEAN AccessGranted,
|
||||
IN KPROCESSOR_MODE AccessMode,
|
||||
OUT PBOOLEAN GenerateOnClose);
|
||||
|
||||
BOOLEAN STDCALL
|
||||
SePrivilegeCheck(IN OUT PPRIVILEGE_SET RequiredPrivileges,
|
||||
IN PSECURITY_SUBJECT_CONTEXT SubjectContext,
|
||||
IN KPROCESSOR_MODE AccessMode);
|
||||
|
||||
NTSTATUS STDCALL
|
||||
SeQueryAuthenticationIdToken(IN PACCESS_TOKEN Token,
|
||||
OUT PLUID LogonId);
|
||||
|
||||
NTSTATUS STDCALL
|
||||
SeQuerySecurityDescriptorInfo(IN PSECURITY_INFORMATION SecurityInformation,
|
||||
OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
|
||||
IN OUT PULONG Length,
|
||||
IN PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor);
|
||||
|
||||
NTSTATUS STDCALL
|
||||
SeRegisterLogonSessionTerminatedRoutine(IN PSE_LOGON_SESSION_TERMINATED_ROUTINE CallbackRoutine);
|
||||
|
||||
VOID STDCALL
|
||||
SeReleaseSubjectContext(IN PSECURITY_SUBJECT_CONTEXT SubjectContext);
|
||||
|
||||
VOID STDCALL
|
||||
SeSetAccessStateGenericMapping(IN PACCESS_STATE AccessState,
|
||||
IN PGENERIC_MAPPING GenericMapping);
|
||||
|
||||
NTSTATUS STDCALL
|
||||
SeSetSecurityDescriptorInfo(IN PVOID Object OPTIONAL,
|
||||
IN PSECURITY_INFORMATION SecurityInformation,
|
||||
IN PSECURITY_DESCRIPTOR SecurityDescriptor,
|
||||
IN OUT PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor,
|
||||
IN POOL_TYPE PoolType,
|
||||
IN PGENERIC_MAPPING GenericMapping);
|
||||
|
||||
BOOLEAN STDCALL
|
||||
SeSinglePrivilegeCheck(IN LUID PrivilegeValue,
|
||||
IN KPROCESSOR_MODE PreviousMode);
|
||||
|
||||
SECURITY_IMPERSONATION_LEVEL STDCALL
|
||||
SeTokenImpersonationLevel(IN PACCESS_TOKEN Token);
|
||||
|
||||
TOKEN_TYPE STDCALL
|
||||
SeTokenType(IN PACCESS_TOKEN Token);
|
||||
|
||||
VOID STDCALL
|
||||
SeUnlockSubjectContext(IN PSECURITY_SUBJECT_CONTEXT SubjectContext);
|
||||
|
||||
NTSTATUS STDCALL
|
||||
SeUnregisterLogonSessionTerminatedRoutine(IN PSE_LOGON_SESSION_TERMINATED_ROUTINE CallbackRoutine);
|
||||
|
||||
BOOLEAN STDCALL
|
||||
SeValidSecurityDescriptor(IN ULONG Length,
|
||||
IN PSECURITY_DESCRIPTOR SecurityDescriptor);
|
||||
|
||||
#endif /* ndef _INCLUDE_DDK_SEFUNCS_H */
|
||||
@@ -0,0 +1,60 @@
|
||||
|
||||
#ifndef __INTERNAL_SERVICE_H
|
||||
#define __INTERNAL_SERVICE_H
|
||||
|
||||
|
||||
/* number of entries in the service descriptor tables */
|
||||
#define SSDT_MAX_ENTRIES 4
|
||||
|
||||
|
||||
#pragma pack(1)
|
||||
|
||||
// System Service Dispatch Table
|
||||
typedef struct t_SSDT {
|
||||
ULONG SysCallPtr;
|
||||
} SSDT, *PSSDT;
|
||||
|
||||
// System Service Parameters Table
|
||||
typedef struct t_SSPT {
|
||||
unsigned int ParamBytes;
|
||||
} SSPT, *PSSPT;
|
||||
|
||||
typedef struct t_KeServiceDescriptorTableEntry {
|
||||
PSSDT SSDT;
|
||||
PULONG ServiceCounterTable;
|
||||
unsigned int NumberOfServices;
|
||||
PSSPT SSPT;
|
||||
|
||||
} KE_SERVICE_DESCRIPTOR_TABLE_ENTRY, *PKE_SERVICE_DESCRIPTOR_TABLE_ENTRY;
|
||||
|
||||
#pragma pack()
|
||||
|
||||
|
||||
/* --- NTOSKRNL.EXE --- */
|
||||
#if defined(__NTOSKRNL__)
|
||||
extern
|
||||
KE_SERVICE_DESCRIPTOR_TABLE_ENTRY
|
||||
KeServiceDescriptorTable[SSDT_MAX_ENTRIES] __declspec(dllexport);
|
||||
#else
|
||||
extern
|
||||
KE_SERVICE_DESCRIPTOR_TABLE_ENTRY
|
||||
KeServiceDescriptorTable[SSDT_MAX_ENTRIES] __declspec(dllimport);
|
||||
#endif
|
||||
|
||||
extern
|
||||
KE_SERVICE_DESCRIPTOR_TABLE_ENTRY
|
||||
KeServiceDescriptorTableShadow[SSDT_MAX_ENTRIES];
|
||||
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
KeAddSystemServiceTable (
|
||||
PSSDT SSDT,
|
||||
PULONG ServiceCounterTable,
|
||||
ULONG NumberOfServices,
|
||||
PSSPT SSPT,
|
||||
ULONG TableIndex
|
||||
);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,164 @@
|
||||
/* $Id: setypes.h,v 1.9 2002/09/08 10:47:45 chorns Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory for details
|
||||
* PROJECT: ReactOS kernel
|
||||
* FILE: include/ddk/setypes.h
|
||||
* PURPOSE: Security manager types
|
||||
* REVISION HISTORY:
|
||||
* ??/??/??: Created with empty stubs by David Welch
|
||||
* 29/08/98: ACCESS_TOKEN definition from Boudewijn Dekker
|
||||
*/
|
||||
|
||||
#ifndef __INCLUDE_DDK_SETYPES_H
|
||||
#define __INCLUDE_DDK_SETYPES_H
|
||||
|
||||
#include <ntos/security.h>
|
||||
|
||||
/* TOKEN_GROUPS structure */
|
||||
#define SE_GROUP_MANDATORY (0x1L)
|
||||
#define SE_GROUP_ENABLED_BY_DEFAULT (0x2L)
|
||||
#define SE_GROUP_ENABLED (0x4L)
|
||||
#define SE_GROUP_OWNER (0x8L)
|
||||
#define SE_GROUP_LOGON_ID (0xc0000000L)
|
||||
|
||||
/* ACL Defines */
|
||||
#define ACL_REVISION (2)
|
||||
|
||||
/* ACE_HEADER structure */
|
||||
#define ACCESS_ALLOWED_ACE_TYPE (0x0)
|
||||
#define ACCESS_DENIED_ACE_TYPE (0x1)
|
||||
#define SYSTEM_AUDIT_ACE_TYPE (0x2)
|
||||
#define SYSTEM_ALARM_ACE_TYPE (0x3)
|
||||
|
||||
/* ACE flags in the ACE_HEADER structure */
|
||||
#define OBJECT_INHERIT_ACE (0x1)
|
||||
#define CONTAINER_INHERIT_ACE (0x2)
|
||||
#define NO_PROPAGATE_INHERIT_ACE (0x4)
|
||||
#define INHERIT_ONLY_ACE (0x8)
|
||||
#define SUCCESSFUL_ACCESS_ACE_FLAG (0x40)
|
||||
#define FAILED_ACCESS_ACE_FLAG (0x80)
|
||||
|
||||
/* SECURITY_DESCRIPTOR_CONTROL */
|
||||
#define SECURITY_DESCRIPTOR_REVISION (1)
|
||||
#define SECURITY_DESCRIPTOR_MIN_LENGTH (20)
|
||||
#define SE_OWNER_DEFAULTED (1)
|
||||
#define SE_GROUP_DEFAULTED (2)
|
||||
#define SE_DACL_PRESENT (4)
|
||||
#define SE_DACL_DEFAULTED (8)
|
||||
#define SE_SACL_PRESENT (16)
|
||||
#define SE_SACL_DEFAULTED (32)
|
||||
#define SE_SELF_RELATIVE (32768)
|
||||
|
||||
/* PRIVILEGE_SET */
|
||||
#define SE_PRIVILEGE_ENABLED_BY_DEFAULT (0x1L)
|
||||
#define SE_PRIVILEGE_ENABLED (0x2L)
|
||||
#define SE_PRIVILEGE_USED_FOR_ACCESS (0x80000000L)
|
||||
#define PRIVILEGE_SET_ALL_NECESSARY (0x1)
|
||||
|
||||
typedef struct _ACCESS_TOKEN
|
||||
{
|
||||
TOKEN_SOURCE TokenSource; // 0x00
|
||||
LUID TokenId; // 0x10
|
||||
LUID AuthenticationId; // 0x18
|
||||
LARGE_INTEGER ExpirationTime; // 0x20
|
||||
LUID ModifiedId; // 0x28
|
||||
ULONG UserAndGroupCount; // 0x30
|
||||
ULONG PrivilegeCount; // 0x34
|
||||
ULONG VariableLength; // 0x38
|
||||
ULONG DynamicCharged; // 0x3C
|
||||
ULONG DynamicAvailable; // 0x40
|
||||
ULONG DefaultOwnerIndex; // 0x44
|
||||
PSID_AND_ATTRIBUTES UserAndGroups; // 0x48
|
||||
PSID PrimaryGroup; // 0x4C
|
||||
PLUID_AND_ATTRIBUTES Privileges; // 0x50
|
||||
ULONG Unknown1; // 0x54
|
||||
PACL DefaultDacl; // 0x58
|
||||
TOKEN_TYPE TokenType; // 0x5C
|
||||
SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; // 0x60
|
||||
UCHAR TokenFlags; // 0x64
|
||||
UCHAR TokenInUse; // 0x65
|
||||
UCHAR Unused[2]; // 0x66
|
||||
PVOID ProxyData; // 0x68
|
||||
PVOID AuditData; // 0x6c
|
||||
UCHAR VariablePart[0]; // 0x70
|
||||
} ACCESS_TOKEN, *PACCESS_TOKEN;
|
||||
|
||||
|
||||
typedef struct _SECURITY_SUBJECT_CONTEXT
|
||||
{
|
||||
PACCESS_TOKEN ClientToken; // 0x0
|
||||
SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; // 0x4
|
||||
PACCESS_TOKEN PrimaryToken; // 0x8
|
||||
PVOID ProcessAuditId; // 0xC
|
||||
} SECURITY_SUBJECT_CONTEXT, *PSECURITY_SUBJECT_CONTEXT;
|
||||
|
||||
|
||||
typedef struct _SECURITY_CLIENT_CONTEXT
|
||||
{
|
||||
SECURITY_QUALITY_OF_SERVICE SecurityQos; // 0x00
|
||||
PACCESS_TOKEN Token; // 0x0C
|
||||
BOOLEAN DirectlyAccessClientToken; // 0x10
|
||||
BOOLEAN DirectAccessEffectiveOnly; // 0x11
|
||||
BOOLEAN ServerIsRemote; // 0x12
|
||||
TOKEN_CONTROL ClientTokenControl; // 0x14
|
||||
} SECURITY_CLIENT_CONTEXT, *PSECURITY_CLIENT_CONTEXT;
|
||||
|
||||
|
||||
typedef struct _SE_EXPORTS
|
||||
{
|
||||
/* Privilege values */
|
||||
LUID SeCreateTokenPrivilege;
|
||||
LUID SeAssignPrimaryTokenPrivilege;
|
||||
LUID SeLockMemoryPrivilege;
|
||||
LUID SeIncreaseQuotaPrivilege;
|
||||
LUID SeUnsolicitedInputPrivilege;
|
||||
LUID SeTcbPrivilege;
|
||||
LUID SeSecurityPrivilege;
|
||||
LUID SeTakeOwnershipPrivilege;
|
||||
LUID SeLoadDriverPrivilege;
|
||||
LUID SeCreatePagefilePrivilege;
|
||||
LUID SeIncreaseBasePriorityPrivilege;
|
||||
LUID SeSystemProfilePrivilege;
|
||||
LUID SeSystemtimePrivilege;
|
||||
LUID SeProfileSingleProcessPrivilege;
|
||||
LUID SeCreatePermanentPrivilege;
|
||||
LUID SeBackupPrivilege;
|
||||
LUID SeRestorePrivilege;
|
||||
LUID SeShutdownPrivilege;
|
||||
LUID SeDebugPrivilege;
|
||||
LUID SeAuditPrivilege;
|
||||
LUID SeSystemEnvironmentPrivilege;
|
||||
LUID SeChangeNotifyPrivilege;
|
||||
LUID SeRemoteShutdownPrivilege;
|
||||
|
||||
/* Universally defined SIDs */
|
||||
PSID SeNullSid;
|
||||
PSID SeWorldSid;
|
||||
PSID SeLocalSid;
|
||||
PSID SeCreatorOwnerSid;
|
||||
PSID SeCreatorGroupSid;
|
||||
|
||||
/* Nt defined SIDs */
|
||||
PSID SeNtAuthoritySid;
|
||||
PSID SeDialupSid;
|
||||
PSID SeNetworkSid;
|
||||
PSID SeBatchSid;
|
||||
PSID SeInteractiveSid;
|
||||
PSID SeLocalSystemSid;
|
||||
PSID SeAliasAdminsSid;
|
||||
PSID SeAliasUsersSid;
|
||||
PSID SeAliasGuestsSid;
|
||||
PSID SeAliasPowerUsersSid;
|
||||
PSID SeAliasAccountOpsSid;
|
||||
PSID SeAliasSystemOpsSid;
|
||||
PSID SeAliasPrintOpsSid;
|
||||
PSID SeAliasBackupOpsSid;
|
||||
} SE_EXPORTS, *PSE_EXPORTS;
|
||||
|
||||
|
||||
typedef NTSTATUS STDCALL
|
||||
(*PSE_LOGON_SESSION_TERMINATED_ROUTINE)(IN PLUID LogonId);
|
||||
|
||||
#endif
|
||||
|
||||
/* EOF */
|
||||
@@ -0,0 +1,711 @@
|
||||
#ifndef __INCLUDE_DDK_STATUS_H
|
||||
#define __INCLUDE_DDK_STATUS_H
|
||||
|
||||
#define NTSTAT_SEVERITY_SHIFT 30
|
||||
#define NTSTAT_SEVERITY_MASK 0x00000003
|
||||
#define NTSTAT_FACILITY_SHIFT 16
|
||||
#define NTSTAT_FACILITY_MASK 0x00000FFF
|
||||
#define NTSTAT_CUSTOMER_MASK 0x20000000
|
||||
|
||||
#define NT_SEVERITY(StatCode) (((StatCode) >> NTSTAT_SEVERITY_SHIFT) & NTSTAT_SEVERITY_MASK)
|
||||
#define NT_FACILITY(StatCode) (((StatCode) >> NTSTAT_FACILITY_SHIFT) & NTSTAT_FACILITY_MASK)
|
||||
#define NT_CUSTOMER(StatCode) ((StatCode) & NTSTAT_CUSTOMER_MASK)
|
||||
#define NT_SUCCESS(StatCode) ((NTSTATUS)(StatCode) >= 0)
|
||||
|
||||
/*
|
||||
* Possible status codes
|
||||
* FIXME: These may not be the actual values used by NT
|
||||
*/
|
||||
|
||||
#define STATUS_SUCCESS (0x00000000)
|
||||
#ifndef STATUS_WAIT_0
|
||||
#define STATUS_WAIT_0 (0x00000000)
|
||||
#endif
|
||||
#define STATUS_WAIT_63 (0x0000003F)
|
||||
#define STATUS_ABANDONED (0x00000080)
|
||||
#ifndef STATUS_ABANDONED_WAIT_0
|
||||
#define STATUS_ABANDONED_WAIT_0 (0x00000080)
|
||||
#endif
|
||||
#define STATUS_ABANDONED_WAIT_63 (0x000000BF)
|
||||
#ifndef STATUS_USER_APC
|
||||
#define STATUS_USER_APC (0x000000C0)
|
||||
#endif
|
||||
#define STATUS_KERNEL_APC (0x00000100)
|
||||
#define STATUS_ALERTED (0x00000101)
|
||||
#ifndef STATUS_TIMEOUT
|
||||
#define STATUS_TIMEOUT (0x00000102)
|
||||
#endif
|
||||
#ifndef STATUS_PENDING
|
||||
#define STATUS_PENDING (0x00000103)
|
||||
#endif
|
||||
#define STATUS_REPARSE (0x00000104)
|
||||
#define STATUS_MORE_ENTRIES (0x00000105)
|
||||
#define STATUS_NOT_ALL_ASSIGNED (0x00000106)
|
||||
#define STATUS_SOME_NOT_MAPPED (0x00000107)
|
||||
#define STATUS_OPLOCK_BREAK_IN_PROCESS (0x00000108)
|
||||
#define STATUS_VOLUME_MOUNTED (0x00000109)
|
||||
#define STATUS_RXACT_COMMITTED (0x0000010A)
|
||||
#define STATUS_NOTIFY_CLEANUP (0x0000010B)
|
||||
#define STATUS_NOTIFY_ENUM_DIR (0x0000010C)
|
||||
#define STATUS_NO_QUOTAS_NO_ACCOUNT (0x0000010D)
|
||||
#define STATUS_PRIMARY_TRANSPORT_CONNECT_FAILED (0x0000010E)
|
||||
|
||||
#define STATUS_OBJECT_EXISTS (0x40000000)
|
||||
#define STATUS_THREAD_WAS_SUSPENDED (0x40000001)
|
||||
#define STATUS_WORKING_SET_LIMIT_RANGE (0x40000002)
|
||||
#define STATUS_IMAGE_NOT_AT_BASE (0x40000003)
|
||||
#define STATUS_RXACT_STATE_CREATED (0x40000004)
|
||||
#define STATUS_SEGMENT_NOTIFICATION (0x40000005)
|
||||
#define STATUS_LOCAL_USER_SESSION_KEY (0x40000006)
|
||||
#define STATUS_BAD_CURRENT_DIRECTORY (0x40000007)
|
||||
#define STATUS_SERIAL_MORE_WRITES (0x40000008)
|
||||
#define STATUS_REGISTRY_RECOVERED (0x40000009)
|
||||
#define STATUS_FT_READ_RECOVERING_FROM_BACKUP (0x4000000A)
|
||||
#define STATUS_FT_WRITE_RECOVERY (0x4000000B)
|
||||
#define STATUS_SERIAL_COUNTER_TIMEOUT (0x4000000C)
|
||||
#define STATUS_NULL_LM_PASSWORD (0x4000000D)
|
||||
#define STATUS_IMAGE_MACHINE_TYPE_MISMATCH (0x4000000E)
|
||||
#define STATUS_RECEIVE_PARTIAL (0x4000000F)
|
||||
#define STATUS_RECEIVE_EXPEDITED (0x40000010)
|
||||
#define STATUS_RECEIVE_PARTIAL_EXPEDITED (0x40000011)
|
||||
#define STATUS_EVENT_DONE (0x40000012)
|
||||
#define STATUS_EVENT_PENDING (0x40000013)
|
||||
#define STATUS_CHECKING_FILE_SYSTEM (0x40000014)
|
||||
#define STATUS_FATAL_APP_EXIT (0x40000015)
|
||||
#define STATUS_PREDEFINED_HANDLE (0x40000016)
|
||||
#define STATUS_WAS_UNLOCKED (0x40000017)
|
||||
#define STATUS_SERVICE_NOTIFICATION (0x40000018)
|
||||
#define STATUS_WAS_LOCKED (0x40000019)
|
||||
#define STATUS_LOG_HARD_ERROR (0x4000001A)
|
||||
#define STATUS_ALREADY_WIN32 (0x4000001B)
|
||||
#define STATUS_WX86_UNSIMULATE (0x4000001C)
|
||||
#define STATUS_WX86_CONTINUE (0x4000001D)
|
||||
#define STATUS_WX86_SINGLE_STEP (0x4000001E)
|
||||
#define STATUS_WX86_BREAKPOINT (0x4000001F)
|
||||
#define STATUS_WX86_EXCEPTION_CONTINUE (0x40000020)
|
||||
#define STATUS_WX86_EXCEPTION_LASTCHANCE (0x40000021)
|
||||
#define STATUS_WX86_EXCEPTION_CHAIN (0x40000022)
|
||||
#define STATUS_IMAGE_MACHINE_TYPE_MISMATCH_EXE (0x40000023)
|
||||
#define STATUS_NO_YIELD_PERFORMED (0x40000024)
|
||||
#define STATUS_TIMER_RESUME_IGNORED (0x40000025)
|
||||
#define STATUS_ARBITRATION_UNHANDLED (0x40000026)
|
||||
#define STATUS_CARDBUS_NOT_SUPPORTED (0x40000027)
|
||||
#define STATUS_WX86_CREATEWX86TIB (0x40000028)
|
||||
|
||||
#define STATUS_GUARD_PAGE_VIOLATION (0x80000001)
|
||||
#define STATUS_DATATYPE_MISALIGNMENT (0x80000002)
|
||||
#define STATUS_BREAKPOINT (0x80000003)
|
||||
#define STATUS_SINGLE_STEP (0x80000004)
|
||||
#define STATUS_BUFFER_OVERFLOW (0x80000005)
|
||||
#define STATUS_NO_MORE_FILES (0x80000006)
|
||||
#define STATUS_WAKE_SYSTEM_DEBUGGER (0x80000007)
|
||||
|
||||
#define STATUS_HANDLES_CLOSED (0x8000000A)
|
||||
#define STATUS_NO_INHERITANCE (0x8000000B)
|
||||
#define STATUS_GUID_SUBSTITUTION_MADE (0x8000000C)
|
||||
#define STATUS_PARTIAL_COPY (0x8000000D)
|
||||
#define STATUS_DEVICE_PAPER_EMPTY (0x8000000E)
|
||||
#define STATUS_DEVICE_POWERED_OFF (0x8000000F)
|
||||
#define STATUS_DEVICE_OFF_LINE (0x80000010)
|
||||
#define STATUS_DEVICE_BUSY (0x80000011)
|
||||
#define STATUS_NO_MORE_EAS (0x80000012)
|
||||
#define STATUS_INVALID_EA_NAME (0x80000013)
|
||||
#define STATUS_EA_LIST_INCONSISTENT (0x80000014)
|
||||
#define STATUS_INVALID_EA_FLAG (0x80000015)
|
||||
#define STATUS_VERIFY_REQUIRED (0x80000016)
|
||||
#define STATUS_EXTRANEOUS_INFORMATION (0x80000017)
|
||||
#define STATUS_RXACT_COMMIT_NECESSARY (0x80000018)
|
||||
|
||||
#define STATUS_NO_MORE_ENTRIES (0x8000001A)
|
||||
#define STATUS_FILEMARK_DETECTED (0x8000001B)
|
||||
#define STATUS_MEDIA_CHANGED (0x8000001C)
|
||||
#define STATUS_BUS_RESET (0x8000001D)
|
||||
#define STATUS_END_OF_MEDIA (0x8000001E)
|
||||
#define STATUS_BEGINNING_OF_MEDIA (0x8000001F)
|
||||
#define STATUS_MEDIA_CHECK (0x80000020)
|
||||
#define STATUS_SETMARK_DETECTED (0x80000021)
|
||||
#define STATUS_NO_DATA_DETECTED (0x80000022)
|
||||
#define STATUS_REDIRECTOR_HAS_OPEN_HANDLES (0x80000023)
|
||||
#define STATUS_SERVER_HAS_OPEN_HANDLES (0x80000024)
|
||||
#define STATUS_ALREADY_DISCONNECTED (0x80000025)
|
||||
#define STATUS_LONGJUMP (0x80000026)
|
||||
|
||||
#define STATUS_UNSUCCESSFUL (0xc0000001)
|
||||
#define STATUS_NOT_IMPLEMENTED (0xc0000002)
|
||||
#define STATUS_INVALID_INFO_CLASS (0xc0000003)
|
||||
#define STATUS_INFO_LENGTH_MISMATCH (0xc0000004)
|
||||
#define STATUS_ACCESS_VIOLATION (0xc0000005)
|
||||
#define STATUS_IN_PAGE_ERROR (0xc0000006)
|
||||
#define STATUS_PAGEFILE_QUOTA (0xc0000007)
|
||||
#define STATUS_INVALID_HANDLE (0xc0000008)
|
||||
#define STATUS_BAD_INITIAL_STACK (0xc0000009)
|
||||
#define STATUS_BAD_INITIAL_PC (0xc000000a)
|
||||
#define STATUS_INVALID_CID (0xc000000b)
|
||||
#define STATUS_TIMER_NOT_CANCELED (0xc000000c)
|
||||
#define STATUS_INVALID_PARAMETER (0xc000000d)
|
||||
#define STATUS_NO_SUCH_DEVICE (0xc000000e)
|
||||
#define STATUS_NO_SUCH_FILE (0xc000000f)
|
||||
#define STATUS_INVALID_DEVICE_REQUEST (0xc0000010)
|
||||
#define STATUS_END_OF_FILE (0xc0000011)
|
||||
#define STATUS_WRONG_VOLUME (0xc0000012)
|
||||
#define STATUS_NO_MEDIA_IN_DEVICE (0xc0000013)
|
||||
#define STATUS_UNRECOGNIZED_MEDIA (0xc0000014)
|
||||
#define STATUS_NONEXISTENT_SECTOR (0xc0000015)
|
||||
#define STATUS_MORE_PROCESSING_REQUIRED (0xc0000016)
|
||||
#define STATUS_NO_MEMORY (0xc0000017)
|
||||
#define STATUS_CONFLICTING_ADDRESSES (0xc0000018)
|
||||
#define STATUS_NOT_MAPPED_VIEW (0xc0000019)
|
||||
#define STATUS_UNABLE_TO_FREE_VM (0xc000001a)
|
||||
#define STATUS_UNABLE_TO_DELETE_SECTION (0xc000001b)
|
||||
#define STATUS_INVALID_SYSTEM_SERVICE (0xc000001c)
|
||||
#define STATUS_ILLEGAL_INSTRUCTION (0xc000001d)
|
||||
#define STATUS_INVALID_LOCK_SEQUENCE (0xc000001e)
|
||||
#define STATUS_INVALID_VIEW_SIZE (0xc000001f)
|
||||
#define STATUS_INVALID_FILE_FOR_SECTION (0xc0000020)
|
||||
#define STATUS_ALREADY_COMMITTED (0xc0000021)
|
||||
#define STATUS_ACCESS_DENIED (0xc0000022)
|
||||
#define STATUS_BUFFER_TOO_SMALL (0xc0000023)
|
||||
#define STATUS_OBJECT_TYPE_MISMATCH (0xc0000024)
|
||||
#define STATUS_NONCONTINUABLE_EXCEPTION (0xc0000025)
|
||||
#define STATUS_INVALID_DISPOSITION (0xc0000026)
|
||||
#define STATUS_UNWIND (0xc0000027)
|
||||
#define STATUS_BAD_STACK (0xc0000028)
|
||||
#define STATUS_INVALID_UNWIND_TARGET (0xc0000029)
|
||||
#define STATUS_NOT_LOCKED (0xc000002a)
|
||||
#define STATUS_PARITY_ERROR (0xc000002b)
|
||||
#define STATUS_UNABLE_TO_DECOMMIT_VM (0xc000002c)
|
||||
#define STATUS_NOT_COMMITTED (0xc000002d)
|
||||
#define STATUS_INVALID_PORT_ATTRIBUTES (0xc000002e)
|
||||
#define STATUS_PORT_MESSAGE_TOO_LONG (0xc000002f)
|
||||
#define STATUS_INVALID_PARAMETER_MIX (0xc0000030)
|
||||
#define STATUS_INVALID_QUOTA_LOWER (0xc0000031)
|
||||
#define STATUS_DISK_CORRUPT_ERROR (0xc0000032)
|
||||
#define STATUS_OBJECT_NAME_INVALID (0xc0000033)
|
||||
#define STATUS_OBJECT_NAME_NOT_FOUND (0xc0000034)
|
||||
#define STATUS_OBJECT_NAME_COLLISION (0xc0000035)
|
||||
|
||||
#define STATUS_PORT_DISCONNECTED (0xc0000037)
|
||||
#define STATUS_DEVICE_ALREADY_ATTACHED (0xc0000038)
|
||||
#define STATUS_OBJECT_PATH_INVALID (0xc0000039)
|
||||
#define STATUS_OBJECT_PATH_NOT_FOUND (0xc000003a)
|
||||
#define STATUS_PATH_SYNTAX_BAD (0xc000003b)
|
||||
#define STATUS_DATA_OVERRUN (0xc000003c)
|
||||
#define STATUS_DATA_LATE_ERROR (0xc000003d)
|
||||
#define STATUS_DATA_ERROR (0xc000003e)
|
||||
#define STATUS_CRC_ERROR (0xc000003f)
|
||||
#define STATUS_SECTION_TOO_BIG (0xc0000040)
|
||||
#define STATUS_PORT_CONNECTION_REFUSED (0xc0000041)
|
||||
#define STATUS_INVALID_PORT_HANDLE (0xc0000042)
|
||||
#define STATUS_SHARING_VIOLATION (0xc0000043)
|
||||
#define STATUS_QUOTA_EXCEEDED (0xc0000044)
|
||||
#define STATUS_INVALID_PAGE_PROTECTION (0xc0000045)
|
||||
#define STATUS_MUTANT_NOT_OWNED (0xc0000046)
|
||||
#define STATUS_SEMAPHORE_LIMIT_EXCEEDED (0xc0000047)
|
||||
#define STATUS_PORT_ALREADY_SET (0xc0000048)
|
||||
#define STATUS_SECTION_NOT_IMAGE (0xc0000049)
|
||||
#define STATUS_SUSPEND_COUNT_EXCEEDED (0xc000004a)
|
||||
#define STATUS_THREAD_IS_TERMINATING (0xc000004b)
|
||||
#define STATUS_BAD_WORKING_SET_LIMIT (0xc000004c)
|
||||
#define STATUS_INCOMPATIBLE_FILE_MAP (0xc000004d)
|
||||
#define STATUS_SECTION_PROTECTION (0xc000004e)
|
||||
#define STATUS_EAS_NOT_SUPPORTED (0xc000004f)
|
||||
#define STATUS_EA_TOO_LARGE (0xc0000050)
|
||||
#define STATUS_NONEXISTENT_EA_ENTRY (0xc0000051)
|
||||
#define STATUS_NO_EAS_ON_FILE (0xc0000052)
|
||||
#define STATUS_EA_CORRUPT_ERROR (0xc0000053)
|
||||
#define STATUS_FILE_LOCK_CONFLICT (0xc0000054)
|
||||
#define STATUS_LOCK_NOT_GRANTED (0xc0000055)
|
||||
#define STATUS_DELETE_PENDING (0xc0000056)
|
||||
#define STATUS_CTL_FILE_NOT_SUPPORTED (0xc0000057)
|
||||
#define STATUS_UNKNOWN_REVISION (0xc0000058)
|
||||
#define STATUS_REVISION_MISMATCH (0xc0000059)
|
||||
#define STATUS_INVALID_OWNER (0xc000005a)
|
||||
#define STATUS_INVALID_PRIMARY_GROUP (0xc000005b)
|
||||
#define STATUS_NO_IMPERSONATION_TOKEN (0xc000005c)
|
||||
#define STATUS_CANT_DISABLE_MANDATORY (0xc000005d)
|
||||
#define STATUS_NO_LOGON_SERVERS (0xc000005e)
|
||||
#define STATUS_NO_SUCH_LOGON_SESSION (0xc000005f)
|
||||
#define STATUS_NO_SUCH_PRIVILEGE (0xc0000060)
|
||||
#define STATUS_PRIVILEGE_NOT_HELD (0xc0000061)
|
||||
#define STATUS_INVALID_ACCOUNT_NAME (0xc0000062)
|
||||
#define STATUS_USER_EXISTS (0xc0000063)
|
||||
#define STATUS_NO_SUCH_USER (0xc0000064)
|
||||
#define STATUS_GROUP_EXISTS (0xc0000065)
|
||||
#define STATUS_NO_SUCH_GROUP (0xc0000066)
|
||||
#define STATUS_MEMBER_IN_GROUP (0xc0000067)
|
||||
#define STATUS_MEMBER_NOT_IN_GROUP (0xc0000068)
|
||||
#define STATUS_LAST_ADMIN (0xc0000069)
|
||||
#define STATUS_WRONG_PASSWORD (0xc000006a)
|
||||
#define STATUS_ILL_FORMED_PASSWORD (0xc000006b)
|
||||
#define STATUS_PASSWORD_RESTRICTION (0xc000006c)
|
||||
#define STATUS_LOGON_FAILURE (0xc000006d)
|
||||
#define STATUS_ACCOUNT_RESTRICTION (0xc000006e)
|
||||
#define STATUS_INVALID_LOGON_HOURS (0xc000006f)
|
||||
#define STATUS_INVALID_WORKSTATION (0xc0000070)
|
||||
#define STATUS_PASSWORD_EXPIRED (0xc0000071)
|
||||
#define STATUS_ACCOUNT_DISABLED (0xc0000072)
|
||||
#define STATUS_NONE_MAPPED (0xc0000073)
|
||||
#define STATUS_TOO_MANY_LUIDS_REQUESTED (0xc0000074)
|
||||
#define STATUS_LUIDS_EXHAUSTED (0xc0000075)
|
||||
#define STATUS_INVALID_SUB_AUTHORITY (0xc0000076)
|
||||
#define STATUS_INVALID_ACL (0xc0000077)
|
||||
#define STATUS_INVALID_SID (0xc0000078)
|
||||
#define STATUS_INVALID_SECURITY_DESCR (0xc0000079)
|
||||
#define STATUS_PROCEDURE_NOT_FOUND (0xc000007a)
|
||||
#define STATUS_INVALID_IMAGE_FORMAT (0xc000007b)
|
||||
#define STATUS_NO_TOKEN (0xc000007c)
|
||||
#define STATUS_BAD_INHERITANCE_ACL (0xc000007d)
|
||||
#define STATUS_RANGE_NOT_LOCKED (0xc000007e)
|
||||
#define STATUS_DISK_FULL (0xc000007f)
|
||||
#define STATUS_SERVER_DISABLED (0xc0000080)
|
||||
#define STATUS_SERVER_NOT_DISABLED (0xc0000081)
|
||||
#define STATUS_TOO_MANY_GUIDS_REQUESTED (0xc0000082)
|
||||
#define STATUS_GUIDS_EXHAUSTED (0xc0000083)
|
||||
#define STATUS_INVALID_ID_AUTHORITY (0xc0000084)
|
||||
#define STATUS_AGENTS_EXHAUSTED (0xc0000085)
|
||||
#define STATUS_INVALID_VOLUME_LABEL (0xc0000086)
|
||||
#define STATUS_SECTION_NOT_EXTENDED (0xc0000087)
|
||||
#define STATUS_NOT_MAPPED_DATA (0xc0000088)
|
||||
#define STATUS_RESOURCE_DATA_NOT_FOUND (0xc0000089)
|
||||
#define STATUS_RESOURCE_TYPE_NOT_FOUND (0xc000008a)
|
||||
#define STATUS_RESOURCE_NAME_NOT_FOUND (0xc000008b)
|
||||
#define STATUS_ARRAY_BOUNDS_EXCEEDED (0xc000008c)
|
||||
#define STATUS_FLOAT_DENORMAL_OPERAND (0xc000008d)
|
||||
#define STATUS_FLOAT_DIVIDE_BY_ZERO (0xc000008e)
|
||||
#define STATUS_FLOAT_INEXACT_RESULT (0xc000008f)
|
||||
#define STATUS_FLOAT_INVALID_OPERATION (0xc0000090)
|
||||
#define STATUS_FLOAT_OVERFLOW (0xc0000091)
|
||||
#define STATUS_FLOAT_STACK_CHECK (0xc0000092)
|
||||
#define STATUS_FLOAT_UNDERFLOW (0xc0000093)
|
||||
#define STATUS_INTEGER_DIVIDE_BY_ZERO (0xc0000094)
|
||||
#define STATUS_INTEGER_OVERFLOW (0xc0000095)
|
||||
#define STATUS_PRIVILEGED_INSTRUCTION (0xc0000096)
|
||||
#define STATUS_TOO_MANY_PAGING_FILES (0xc0000097)
|
||||
#define STATUS_FILE_INVALID (0xc0000098)
|
||||
#define STATUS_ALLOTTED_SPACE_EXCEEDED (0xc0000099)
|
||||
#define STATUS_INSUFFICIENT_RESOURCES (0xc000009a)
|
||||
#define STATUS_DFS_EXIT_PATH_FOUND (0xc000009b)
|
||||
#define STATUS_DEVICE_DATA_ERROR (0xc000009c)
|
||||
#define STATUS_DEVICE_NOT_CONNECTED (0xc000009d)
|
||||
#define STATUS_DEVICE_POWER_FAILURE (0xc000009e)
|
||||
#define STATUS_FREE_VM_NOT_AT_BASE (0xc000009f)
|
||||
#define STATUS_MEMORY_NOT_ALLOCATED (0xc00000a0)
|
||||
#define STATUS_WORKING_SET_QUOTA (0xc00000a1)
|
||||
#define STATUS_MEDIA_WRITE_PROTECTED (0xc00000a2)
|
||||
#define STATUS_DEVICE_NOT_READY (0xc00000a3)
|
||||
#define STATUS_INVALID_GROUP_ATTRIBUTES (0xc00000a4)
|
||||
#define STATUS_BAD_IMPERSONATION_LEVEL (0xc00000a5)
|
||||
#define STATUS_CANT_OPEN_ANONYMOUS (0xc00000a6)
|
||||
#define STATUS_BAD_VALIDATION_CLASS (0xc00000a7)
|
||||
#define STATUS_BAD_TOKEN_TYPE (0xc00000a8)
|
||||
#define STATUS_BAD_MASTER_BOOT_RECORD (0xc00000a9)
|
||||
#define STATUS_INSTRUCTION_MISALIGNMENT (0xc00000aa)
|
||||
#define STATUS_INSTANCE_NOT_AVAILABLE (0xc00000ab)
|
||||
#define STATUS_PIPE_NOT_AVAILABLE (0xc00000ac)
|
||||
#define STATUS_INVALID_PIPE_STATE (0xc00000ad)
|
||||
#define STATUS_PIPE_BUSY (0xc00000ae)
|
||||
#define STATUS_ILLEGAL_FUNCTION (0xc00000af)
|
||||
#define STATUS_PIPE_DISCONNECTED (0xc00000b0)
|
||||
#define STATUS_PIPE_CLOSING (0xc00000b1)
|
||||
#define STATUS_PIPE_CONNECTED (0xc00000b2)
|
||||
#define STATUS_PIPE_LISTENING (0xc00000b3)
|
||||
#define STATUS_INVALID_READ_MODE (0xc00000b4)
|
||||
#define STATUS_IO_TIMEOUT (0xc00000b5)
|
||||
#define STATUS_FILE_FORCED_CLOSED (0xc00000b6)
|
||||
#define STATUS_PROFILING_NOT_STARTED (0xc00000b7)
|
||||
#define STATUS_PROFILING_NOT_STOPPED (0xc00000b8)
|
||||
#define STATUS_COULD_NOT_INTERPRET (0xc00000b9)
|
||||
#define STATUS_FILE_IS_A_DIRECTORY (0xc00000ba)
|
||||
#define STATUS_NOT_SUPPORTED (0xc00000bb)
|
||||
#define STATUS_REMOTE_NOT_LISTENING (0xc00000bc)
|
||||
#define STATUS_DUPLICATE_NAME (0xc00000bd)
|
||||
#define STATUS_BAD_NETWORK_PATH (0xc00000be)
|
||||
#define STATUS_NETWORK_BUSY (0xc00000bf)
|
||||
#define STATUS_DEVICE_DOES_NOT_EXIST (0xc00000c0)
|
||||
#define STATUS_TOO_MANY_COMMANDS (0xc00000c1)
|
||||
#define STATUS_ADAPTER_HARDWARE_ERROR (0xc00000c2)
|
||||
#define STATUS_INVALID_NETWORK_RESPONSE (0xc00000c3)
|
||||
#define STATUS_UNEXPECTED_NETWORK_ERROR (0xc00000c4)
|
||||
#define STATUS_BAD_REMOTE_ADAPTER (0xc00000c5)
|
||||
#define STATUS_PRINT_QUEUE_FULL (0xc00000c6)
|
||||
#define STATUS_NO_SPOOL_SPACE (0xc00000c7)
|
||||
#define STATUS_PRINT_CANCELLED (0xc00000c8)
|
||||
#define STATUS_NETWORK_NAME_DELETED (0xc00000c9)
|
||||
#define STATUS_NETWORK_ACCESS_DENIED (0xc00000ca)
|
||||
#define STATUS_BAD_DEVICE_TYPE (0xc00000cb)
|
||||
#define STATUS_BAD_NETWORK_NAME (0xc00000cc)
|
||||
#define STATUS_TOO_MANY_NAMES (0xc00000cd)
|
||||
#define STATUS_TOO_MANY_SESSIONS (0xc00000ce)
|
||||
#define STATUS_SHARING_PAUSED (0xc00000cf)
|
||||
#define STATUS_REQUEST_NOT_ACCEPTED (0xc00000d0)
|
||||
#define STATUS_REDIRECTOR_PAUSED (0xc00000d1)
|
||||
#define STATUS_NET_WRITE_FAULT (0xc00000d2)
|
||||
#define STATUS_PROFILING_AT_LIMIT (0xc00000d3)
|
||||
#define STATUS_NOT_SAME_DEVICE (0xc00000d4)
|
||||
#define STATUS_FILE_RENAMED (0xc00000d5)
|
||||
#define STATUS_VIRTUAL_CIRCUIT_CLOSED (0xc00000d6)
|
||||
#define STATUS_NO_SECURITY_ON_OBJECT (0xc00000d7)
|
||||
#define STATUS_CANT_WAIT (0xc00000d8)
|
||||
#define STATUS_PIPE_EMPTY (0xc00000d9)
|
||||
#define STATUS_CANT_ACCESS_DOMAIN_INFO (0xc00000da)
|
||||
#define STATUS_CANT_TERMINATE_SELF (0xc00000db)
|
||||
#define STATUS_INVALID_SERVER_STATE (0xc00000dc)
|
||||
#define STATUS_INVALID_DOMAIN_STATE (0xc00000dd)
|
||||
#define STATUS_INVALID_DOMAIN_ROLE (0xc00000de)
|
||||
#define STATUS_NO_SUCH_DOMAIN (0xc00000df)
|
||||
#define STATUS_DOMAIN_EXISTS (0xc00000e0)
|
||||
#define STATUS_DOMAIN_LIMIT_EXCEEDED (0xc00000e1)
|
||||
#define STATUS_OPLOCK_NOT_GRANTED (0xc00000e2)
|
||||
#define STATUS_INVALID_OPLOCK_PROTOCOL (0xc00000e3)
|
||||
#define STATUS_INTERNAL_DB_CORRUPTION (0xc00000e4)
|
||||
#define STATUS_INTERNAL_ERROR (0xc00000e5)
|
||||
#define STATUS_GENERIC_NOT_MAPPED (0xc00000e6)
|
||||
#define STATUS_BAD_DESCRIPTOR_FORMAT (0xc00000e7)
|
||||
#define STATUS_INVALID_USER_BUFFER (0xc00000e8)
|
||||
#define STATUS_UNEXPECTED_IO_ERROR (0xc00000e9)
|
||||
#define STATUS_UNEXPECTED_MM_CREATE_ERR (0xc00000ea)
|
||||
#define STATUS_UNEXPECTED_MM_MAP_ERROR (0xc00000eb)
|
||||
#define STATUS_UNEXPECTED_MM_EXTEND_ERR (0xc00000ec)
|
||||
#define STATUS_NOT_LOGON_PROCESS (0xc00000ed)
|
||||
#define STATUS_LOGON_SESSION_EXISTS (0xc00000ee)
|
||||
#define STATUS_INVALID_PARAMETER_1 (0xc00000ef)
|
||||
#define STATUS_INVALID_PARAMETER_2 (0xc00000f0)
|
||||
#define STATUS_INVALID_PARAMETER_3 (0xc00000f1)
|
||||
#define STATUS_INVALID_PARAMETER_4 (0xc00000f2)
|
||||
#define STATUS_INVALID_PARAMETER_5 (0xc00000f3)
|
||||
#define STATUS_INVALID_PARAMETER_6 (0xc00000f4)
|
||||
#define STATUS_INVALID_PARAMETER_7 (0xc00000f5)
|
||||
#define STATUS_INVALID_PARAMETER_8 (0xc00000f6)
|
||||
#define STATUS_INVALID_PARAMETER_9 (0xc00000f7)
|
||||
#define STATUS_INVALID_PARAMETER_10 (0xc00000f8)
|
||||
#define STATUS_INVALID_PARAMETER_11 (0xc00000f9)
|
||||
#define STATUS_INVALID_PARAMETER_12 (0xc00000fa)
|
||||
#define STATUS_REDIRECTOR_NOT_STARTED (0xc00000fb)
|
||||
#define STATUS_REDIRECTOR_STARTED (0xc00000fc)
|
||||
#define STATUS_STACK_OVERFLOW (0xc00000fd)
|
||||
#define STATUS_NO_SUCH_PACKAGE (0xc00000fe)
|
||||
#define STATUS_BAD_FUNCTION_TABLE (0xc00000ff)
|
||||
#define STATUS_VARIABLE_NOT_FOUND (0xc0000100)
|
||||
#define STATUS_DIRECTORY_NOT_EMPTY (0xc0000101)
|
||||
#define STATUS_FILE_CORRUPT_ERROR (0xc0000102)
|
||||
#define STATUS_NOT_A_DIRECTORY (0xc0000103)
|
||||
#define STATUS_BAD_LOGON_SESSION_STATE (0xc0000104)
|
||||
#define STATUS_LOGON_SESSION_COLLISION (0xc0000105)
|
||||
#define STATUS_NAME_TOO_LONG (0xc0000106)
|
||||
#define STATUS_FILES_OPEN (0xc0000107)
|
||||
#define STATUS_CONNECTION_IN_USE (0xc0000108)
|
||||
#define STATUS_MESSAGE_NOT_FOUND (0xc0000109)
|
||||
#define STATUS_PROCESS_IS_TERMINATING (0xc000010a)
|
||||
#define STATUS_INVALID_LOGON_TYPE (0xc000010b)
|
||||
#define STATUS_NO_GUID_TRANSLATION (0xc000010c)
|
||||
#define STATUS_CANNOT_IMPERSONATE (0xc000010d)
|
||||
#define STATUS_IMAGE_ALREADY_LOADED (0xc000010e)
|
||||
#define STATUS_ABIOS_NOT_PRESENT (0xc000010f)
|
||||
#define STATUS_ABIOS_LID_NOT_EXIST (0xc0000110)
|
||||
#define STATUS_ABIOS_LID_ALREADY_OWNED (0xc0000111)
|
||||
#define STATUS_ABIOS_NOT_LID_OWNER (0xc0000112)
|
||||
#define STATUS_ABIOS_INVALID_COMMAND (0xc0000113)
|
||||
#define STATUS_ABIOS_INVALID_LID (0xc0000114)
|
||||
#define STATUS_ABIOS_SELECTOR_NOT_AVAILABLE (0xc0000115)
|
||||
#define STATUS_ABIOS_INVALID_SELECTOR (0xc0000116)
|
||||
#define STATUS_NO_LDT (0xc0000117)
|
||||
#define STATUS_INVALID_LDT_SIZE (0xc0000118)
|
||||
#define STATUS_INVALID_LDT_OFFSET (0xc0000119)
|
||||
#define STATUS_INVALID_LDT_DESCRIPTOR (0xc000011a)
|
||||
#define STATUS_INVALID_IMAGE_NE_FORMAT (0xc000011b)
|
||||
#define STATUS_RXACT_INVALID_STATE (0xc000011c)
|
||||
#define STATUS_RXACT_COMMIT_FAILURE (0xc000011d)
|
||||
#define STATUS_MAPPED_FILE_SIZE_ZERO (0xc000011e)
|
||||
#define STATUS_TOO_MANY_OPENED_FILES (0xc000011f)
|
||||
#define STATUS_CANCELLED (0xc0000120)
|
||||
#define STATUS_CANNOT_DELETE (0xc0000121)
|
||||
#define STATUS_INVALID_COMPUTER_NAME (0xc0000122)
|
||||
#define STATUS_FILE_DELETED (0xc0000123)
|
||||
#define STATUS_SPECIAL_ACCOUNT (0xc0000124)
|
||||
#define STATUS_SPECIAL_GROUP (0xc0000125)
|
||||
#define STATUS_SPECIAL_USER (0xc0000126)
|
||||
#define STATUS_MEMBERS_PRIMARY_GROUP (0xc0000127)
|
||||
#define STATUS_FILE_CLOSED (0xc0000128)
|
||||
#define STATUS_TOO_MANY_THREADS (0xc0000129)
|
||||
#define STATUS_THREAD_NOT_IN_PROCESS (0xc000012a)
|
||||
#define STATUS_TOKEN_ALREADY_IN_USE (0xc000012b)
|
||||
#define STATUS_PAGEFILE_QUOTA_EXCEEDED (0xc000012c)
|
||||
#define STATUS_COMMITMENT_LIMIT (0xc000012d)
|
||||
#define STATUS_INVALID_IMAGE_LE_FORMAT (0xc000012e)
|
||||
#define STATUS_INVALID_IMAGE_NOT_MZ (0xc000012f)
|
||||
#define STATUS_INVALID_IMAGE_PROTECT (0xc0000130)
|
||||
#define STATUS_INVALID_IMAGE_WIN_16 (0xc0000131)
|
||||
#define STATUS_LOGON_SERVER_CONFLICT (0xc0000132)
|
||||
#define STATUS_TIME_DIFFERENCE_AT_DC (0xc0000133)
|
||||
#define STATUS_SYNCHRONIZATION_REQUIRED (0xc0000134)
|
||||
#define STATUS_DLL_NOT_FOUND (0xc0000135)
|
||||
#define STATUS_OPEN_FAILED (0xc0000136)
|
||||
#define STATUS_IO_PRIVILEGE_FAILED (0xc0000137)
|
||||
#define STATUS_ORDINAL_NOT_FOUND (0xc0000138)
|
||||
#define STATUS_ENTRYPOINT_NOT_FOUND (0xc0000139)
|
||||
#define STATUS_CONTROL_C_EXIT (0xc000013a)
|
||||
#define STATUS_LOCAL_DISCONNECT (0xc000013b)
|
||||
#define STATUS_REMOTE_DISCONNECT (0xc000013c)
|
||||
#define STATUS_REMOTE_RESOURCES (0xc000013d)
|
||||
#define STATUS_LINK_FAILED (0xc000013e)
|
||||
#define STATUS_LINK_TIMEOUT (0xc000013f)
|
||||
#define STATUS_INVALID_CONNECTION (0xc0000140)
|
||||
#define STATUS_INVALID_ADDRESS (0xc0000141)
|
||||
#define STATUS_DLL_INIT_FAILED (0xc0000142)
|
||||
#define STATUS_MISSING_SYSTEMFILE (0xc0000143)
|
||||
#define STATUS_UNHANDLED_EXCEPTION (0xc0000144)
|
||||
#define STATUS_APP_INIT_FAILURE (0xc0000145)
|
||||
#define STATUS_PAGEFILE_CREATE_FAILED (0xc0000146)
|
||||
#define STATUS_NO_PAGEFILE (0xc0000147)
|
||||
#define STATUS_INVALID_LEVEL (0xc0000148)
|
||||
#define STATUS_WRONG_PASSWORD_CORE (0xc0000149)
|
||||
#define STATUS_ILLEGAL_FLOAT_CONTEXT (0xc000014a)
|
||||
#define STATUS_PIPE_BROKEN (0xc000014b)
|
||||
#define STATUS_REGISTRY_CORRUPT (0xc000014c)
|
||||
#define STATUS_REGISTRY_IO_FAILED (0xc000014d)
|
||||
#define STATUS_NO_EVENT_PAIR (0xc000014e)
|
||||
#define STATUS_UNRECOGNIZED_VOLUME (0xc000014f)
|
||||
#define STATUS_SERIAL_NO_DEVICE_INITED (0xc0000150)
|
||||
#define STATUS_NO_SUCH_ALIAS (0xc0000151)
|
||||
#define STATUS_MEMBER_NOT_IN_ALIAS (0xc0000152)
|
||||
#define STATUS_MEMBER_IN_ALIAS (0xc0000153)
|
||||
#define STATUS_ALIAS_EXISTS (0xc0000154)
|
||||
#define STATUS_LOGON_NOT_GRANTED (0xc0000155)
|
||||
#define STATUS_TOO_MANY_SECRETS (0xc0000156)
|
||||
#define STATUS_SECRET_TOO_LONG (0xc0000157)
|
||||
#define STATUS_INTERNAL_DB_ERROR (0xc0000158)
|
||||
#define STATUS_FULLSCREEN_MODE (0xc0000159)
|
||||
#define STATUS_TOO_MANY_CONTEXT_IDS (0xc000015a)
|
||||
#define STATUS_LOGON_TYPE_NOT_GRANTED (0xc000015b)
|
||||
#define STATUS_NOT_REGISTRY_FILE (0xc000015c)
|
||||
#define STATUS_NT_CROSS_ENCRYPTION_REQUIRED (0xc000015d)
|
||||
#define STATUS_DOMAIN_CTRLR_CONFIG_ERROR (0xc000015e)
|
||||
#define STATUS_FT_MISSING_MEMBER (0xc000015f)
|
||||
#define STATUS_ILL_FORMED_SERVICE_ENTRY (0xc0000160)
|
||||
#define STATUS_ILLEGAL_CHARACTER (0xc0000161)
|
||||
#define STATUS_UNMAPPABLE_CHARACTER (0xc0000162)
|
||||
#define STATUS_UNDEFINED_CHARACTER (0xc0000163)
|
||||
#define STATUS_FLOPPY_VOLUME (0xc0000164)
|
||||
#define STATUS_FLOPPY_ID_MARK_NOT_FOUND (0xc0000165)
|
||||
#define STATUS_FLOPPY_WRONG_CYLINDER (0xc0000166)
|
||||
#define STATUS_FLOPPY_UNKNOWN_ERROR (0xc0000167)
|
||||
#define STATUS_FLOPPY_BAD_REGISTERS (0xc0000168)
|
||||
#define STATUS_DISK_RECALIBRATE_FAILED (0xc0000169)
|
||||
#define STATUS_DISK_OPERATION_FAILED (0xc000016a)
|
||||
#define STATUS_DISK_RESET_FAILED (0xc000016b)
|
||||
#define STATUS_SHARED_IRQ_BUSY (0xc000016c)
|
||||
#define STATUS_FT_ORPHANING (0xc000016d)
|
||||
#define STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT (0xc000016e)
|
||||
|
||||
#define STATUS_PARTITION_FAILURE (0xc0000172)
|
||||
#define STATUS_INVALID_BLOCK_LENGTH (0xc0000173)
|
||||
#define STATUS_DEVICE_NOT_PARTITIONED (0xc0000174)
|
||||
#define STATUS_UNABLE_TO_LOCK_MEDIA (0xc0000175)
|
||||
#define STATUS_UNABLE_TO_UNLOAD_MEDIA (0xc0000176)
|
||||
#define STATUS_EOM_OVERFLOW (0xc0000177)
|
||||
#define STATUS_NO_MEDIA (0xc0000178)
|
||||
|
||||
#define STATUS_NO_SUCH_MEMBER (0xc000017a)
|
||||
#define STATUS_INVALID_MEMBER (0xc000017b)
|
||||
#define STATUS_KEY_DELETED (0xc000017c)
|
||||
#define STATUS_NO_LOG_SPACE (0xc000017d)
|
||||
#define STATUS_TOO_MANY_SIDS (0xc000017e)
|
||||
#define STATUS_LM_CROSS_ENCRYPTION_REQUIRED (0xc000017f)
|
||||
#define STATUS_KEY_HAS_CHILDREN (0xc0000180)
|
||||
#define STATUS_CHILD_MUST_BE_VOLATILE (0xc0000181)
|
||||
#define STATUS_DEVICE_CONFIGURATION_ERROR (0xc0000182)
|
||||
#define STATUS_DRIVER_INTERNAL_ERROR (0xc0000183)
|
||||
#define STATUS_INVALID_DEVICE_STATE (0xc0000184)
|
||||
#define STATUS_IO_DEVICE_ERROR (0xc0000185)
|
||||
#define STATUS_DEVICE_PROTOCOL_ERROR (0xc0000186)
|
||||
#define STATUS_BACKUP_CONTROLLER (0xc0000187)
|
||||
#define STATUS_LOG_FILE_FULL (0xc0000188)
|
||||
#define STATUS_TOO_LATE (0xc0000189)
|
||||
#define STATUS_NO_TRUST_LSA_SECRET (0xc000018a)
|
||||
#define STATUS_NO_TRUST_SAM_ACCOUNT (0xc000018b)
|
||||
#define STATUS_TRUSTED_DOMAIN_FAILURE (0xc000018c)
|
||||
#define STATUS_TRUSTED_RELATIONSHIP_FAILURE (0xc000018d)
|
||||
#define STATUS_EVENTLOG_FILE_CORRUPT (0xc000018e)
|
||||
#define STATUS_EVENTLOG_CANT_START (0xc000018f)
|
||||
#define STATUS_TRUST_FAILURE (0xc0000190)
|
||||
#define STATUS_MUTANT_LIMIT_EXCEEDED (0xc0000191)
|
||||
#define STATUS_NETLOGON_NOT_STARTED (0xc0000192)
|
||||
#define STATUS_ACCOUNT_EXPIRED (0xc0000193)
|
||||
#define STATUS_POSSIBLE_DEADLOCK (0xc0000194)
|
||||
#define STATUS_NETWORK_CREDENTIAL_CONFLICT (0xc0000195)
|
||||
#define STATUS_REMOTE_SESSION_LIMIT (0xc0000196)
|
||||
#define STATUS_EVENTLOG_FILE_CHANGED (0xc0000197)
|
||||
#define STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT (0xc0000198)
|
||||
#define STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT (0xc0000199)
|
||||
#define STATUS_NOLOGON_SERVER_TRUST_ACCOUNT (0xc000019a)
|
||||
#define STATUS_DOMAIN_TRUST_INCONSISTENT (0xc000019b)
|
||||
#define STATUS_FS_DRIVER_REQUIRED (0xc000019c)
|
||||
|
||||
#define STATUS_NO_USER_SESSION_KEY (0xc0000202)
|
||||
#define STATUS_USER_SESSION_DELETED (0xc0000203)
|
||||
#define STATUS_RESOURCE_LANG_NOT_FOUND (0xc0000204)
|
||||
#define STATUS_INSUFF_SERVER_RESOURCES (0xc0000205)
|
||||
#define STATUS_INVALID_BUFFER_SIZE (0xc0000206)
|
||||
#define STATUS_INVALID_ADDRESS_COMPONENT (0xc0000207)
|
||||
#define STATUS_INVALID_ADDRESS_WILDCARD (0xc0000208)
|
||||
#define STATUS_TOO_MANY_ADDRESSES (0xc0000209)
|
||||
#define STATUS_ADDRESS_ALREADY_EXISTS (0xc000020a)
|
||||
#define STATUS_ADDRESS_CLOSED (0xc000020b)
|
||||
#define STATUS_CONNECTION_DISCONNECTED (0xc000020c)
|
||||
#define STATUS_CONNECTION_RESET (0xc000020d)
|
||||
#define STATUS_TOO_MANY_NODES (0xc000020e)
|
||||
#define STATUS_TRANSACTION_ABORTED (0xc000020f)
|
||||
#define STATUS_TRANSACTION_TIMED_OUT (0xc0000210)
|
||||
#define STATUS_TRANSACTION_NO_RELEASE (0xc0000211)
|
||||
#define STATUS_TRANSACTION_NO_MATCH (0xc0000212)
|
||||
#define STATUS_TRANSACTION_RESPONDED (0xc0000213)
|
||||
#define STATUS_TRANSACTION_INVALID_ID (0xc0000214)
|
||||
#define STATUS_TRANSACTION_INVALID_TYPE (0xc0000215)
|
||||
#define STATUS_NOT_SERVER_SESSION (0xc0000216)
|
||||
#define STATUS_NOT_CLIENT_SESSION (0xc0000217)
|
||||
#define STATUS_CANNOT_LOAD_REGISTRY_FILE (0xc0000218)
|
||||
#define STATUS_DEBUG_ATTACH_FAILED (0xc0000219)
|
||||
#define STATUS_SYSTEM_PROCESS_TERMINATED (0xc000021a)
|
||||
#define STATUS_DATA_NOT_ACCEPTED (0xc000021b)
|
||||
#define STATUS_NO_BROWSER_SERVERS_FOUND (0xc000021c)
|
||||
#define STATUS_VDM_HARD_ERROR (0xc000021d)
|
||||
#define STATUS_DRIVER_CANCEL_TIMEOUT (0xc000021e)
|
||||
#define STATUS_REPLY_MESSAGE_MISMATCH (0xc000021f)
|
||||
#define STATUS_MAPPED_ALIGNMENT (0xc0000220)
|
||||
#define STATUS_IMAGE_CHECKSUM_MISMATCH (0xc0000221)
|
||||
#define STATUS_LOST_WRITEBEHIND_DATA (0xc0000222)
|
||||
#define STATUS_CLIENT_SERVER_PARAMETERS_INVALID (0xc0000223)
|
||||
#define STATUS_PASSWORD_MUST_CHANGE (0xc0000224)
|
||||
#define STATUS_NOT_FOUND (0xc0000225)
|
||||
#define STATUS_NOT_TINY_STREAM (0xc0000226)
|
||||
#define STATUS_RECOVERY_FAILURE (0xc0000227)
|
||||
#define STATUS_STACK_OVERFLOW_READ (0xc0000228)
|
||||
#define STATUS_FAIL_CHECK (0xc0000229)
|
||||
#define STATUS_DUPLICATE_OBJECTID (0xc000022a)
|
||||
#define STATUS_OBJECTID_EXISTS (0xc000022b)
|
||||
#define STATUS_CONVERT_TO_LARGE (0xc000022c)
|
||||
#define STATUS_RETRY (0xc000022d)
|
||||
#define STATUS_FOUND_OUT_OF_SCOPE (0xc000022e)
|
||||
#define STATUS_ALLOCATE_BUCKET (0xc000022f)
|
||||
#define STATUS_PROPSET_NOT_FOUND (0xc0000230)
|
||||
#define STATUS_MARSHALL_OVERFLOW (0xc0000231)
|
||||
#define STATUS_INVALID_VARIANT (0xc0000232)
|
||||
#define STATUS_DOMAIN_CONTROLLER_NOT_FOUND (0xc0000233)
|
||||
#define STATUS_ACCOUNT_LOCKED_OUT (0xc0000234)
|
||||
#define STATUS_HANDLE_NOT_CLOSABLE (0xc0000235)
|
||||
#define STATUS_CONNECTION_REFUSED (0xc0000236)
|
||||
#define STATUS_GRACEFUL_DISCONNECT (0xc0000237)
|
||||
#define STATUS_ADDRESS_ALREADY_ASSOCIATED (0xc0000238)
|
||||
#define STATUS_ADDRESS_NOT_ASSOCIATED (0xc0000239)
|
||||
#define STATUS_CONNECTION_INVALID (0xc000023a)
|
||||
#define STATUS_CONNECTION_ACTIVE (0xc000023b)
|
||||
#define STATUS_NETWORK_UNREACHABLE (0xc000023c)
|
||||
#define STATUS_HOST_UNREACHABLE (0xc000023d)
|
||||
#define STATUS_PROTOCOL_UNREACHABLE (0xc000023e)
|
||||
#define STATUS_PORT_UNREACHABLE (0xc000023f)
|
||||
#define STATUS_REQUEST_ABORTED (0xc0000240)
|
||||
#define STATUS_CONNECTION_ABORTED (0xc0000241)
|
||||
#define STATUS_BAD_COMPRESSION_BUFFER (0xc0000242)
|
||||
#define STATUS_USER_MAPPED_FILE (0xc0000243)
|
||||
#define STATUS_AUDIT_FAILED (0xc0000244)
|
||||
#define STATUS_TIMER_RESOLUTION_NOT_SET (0xc0000245)
|
||||
#define STATUS_CONNECTION_COUNT_LIMIT (0xc0000246)
|
||||
#define STATUS_LOGIN_TIME_RESTRICTION (0xc0000247)
|
||||
#define STATUS_LOGIN_WKSTA_RESTRICTION (0xc0000248)
|
||||
#define STATUS_IMAGE_MP_UP_MISMATCH (0xc0000249)
|
||||
|
||||
#define STATUS_INSUFFICIENT_LOGON_INFO (0xc0000250)
|
||||
#define STATUS_BAD_DLL_ENTRYPOINT (0xc0000251)
|
||||
#define STATUS_BAD_SERVICE_ENTRYPOINT (0xc0000252)
|
||||
#define STATUS_LPC_REPLY_LOST (0xc0000253)
|
||||
#define STATUS_IP_ADDRESS_CONFLICT1 (0xc0000254)
|
||||
#define STATUS_IP_ADDRESS_CONFLICT2 (0xc0000255)
|
||||
#define STATUS_REGISTRY_QUOTA_LIMIT (0xc0000256)
|
||||
#define STATUS_PATH_NOT_COVERED (0xc0000257)
|
||||
#define STATUS_NO_CALLBACK_ACTIVE (0xc0000258)
|
||||
#define STATUS_LICENSE_QUOTA_EXCEEDED (0xc0000259)
|
||||
#define STATUS_PWD_TOO_SHORT (0xc000025a)
|
||||
#define STATUS_PWD_TOO_RECENT (0xc000025b)
|
||||
#define STATUS_PWD_HISTORY_CONFLICT (0xc000025c)
|
||||
#define STATUS_PLUGPLAY_NO_DEVICE (0xc000025e)
|
||||
#define STATUS_UNSUPPORTED_COMPRESSION (0xc000025f)
|
||||
#define STATUS_INVALID_HW_PROFILE (0xc0000260)
|
||||
#define STATUS_INVALID_PLUGPLAY_DEVICE_PATH (0xc0000261)
|
||||
#define STATUS_DRIVER_ORDINAL_NOT_FOUND (0xc0000262)
|
||||
#define STATUS_DRIVER_ENTRYPOINT_NOT_FOUND (0xc0000263)
|
||||
#define STATUS_RESOURCE_NOT_OWNED (0xc0000264)
|
||||
#define STATUS_TOO_MANY_LINKS (0xc0000265)
|
||||
#define STATUS_QUOTA_LIST_INCONSISTENT (0xc0000266)
|
||||
#define STATUS_FILE_IS_OFFLINE (0xc0000267)
|
||||
#define STATUS_EVALUATION_EXPIRATION (0xc0000268)
|
||||
#define STATUS_ILLEGAL_DLL_RELOCATION (0xc0000269)
|
||||
#define STATUS_LICENSE_VIOLATION (0xc000026a)
|
||||
#define STATUS_DLL_INIT_FAILED_LOGOFF (0xc000026b)
|
||||
#define STATUS_DRIVER_UNABLE_TO_LOAD (0xc000026c)
|
||||
#define STATUS_DFS_UNAVAILABLE (0xc000026d)
|
||||
#define STATUS_VOLUME_DISMOUNTED (0xc000026e)
|
||||
#define STATUS_WX86_INTERNAL_ERROR (0xc000026f)
|
||||
#define STATUS_WX86_FLOAT_STACK_CHECK (0xc0000270)
|
||||
#define STATUS_VALIDATE_CONTINUE (0xc0000271)
|
||||
#define STATUS_NO_MATCH (0xc0000272)
|
||||
#define STATUS_NO_MORE_MATCHES (0xc0000273)
|
||||
#define STATUS_INVALID_VLM_OPERATION (0xc0000274)
|
||||
#define STATUS_NOT_A_REPARSE_POINT (0xc0000275)
|
||||
#define STATUS_IO_REPARSE_TAG_INVALID (0xc0000276)
|
||||
#define STATUS_IO_REPARSE_TAG_MISMATCH (0xc0000277)
|
||||
#define STATUS_IO_REPARSE_DATA_INVALID (0xc0000278)
|
||||
#define STATUS_IO_REPARSE_TAG_NOT_HANDLED (0xc0000279)
|
||||
|
||||
|
||||
#define STATUS_SAM_INIT_FAILURE (0xC00002CB)
|
||||
|
||||
|
||||
#define RPC_NT_INVALID_STRING_BINDING (0xC0020001)
|
||||
#define RPC_NT_WRONG_KIND_OF_BINDING (0xC0020002)
|
||||
#define RPC_NT_INVALID_BINDING (0xC0020003)
|
||||
#define RPC_NT_PROTSEQ_NOT_SUPPORTED (0xC0020004)
|
||||
#define RPC_NT_INVALID_RPC_PROTSEQ (0xC0020005)
|
||||
#define RPC_NT_INVALID_STRING_UUID (0xC0020006)
|
||||
#define RPC_NT_INVALID_ENDPOINT_FORMAT (0xC0020007)
|
||||
#define RPC_NT_INVALID_NET_ADDR (0xC0020008)
|
||||
#define RPC_NT_NO_ENDPOINT_FOUND (0xC0020009)
|
||||
#define RPC_NT_INVALID_TIMEOUT (0xC002000A)
|
||||
#define RPC_NT_OBJECT_NOT_FOUND (0xC002000B)
|
||||
#define RPC_NT_ALREADY_REGISTERED (0xC002000C)
|
||||
#define RPC_NT_TYPE_ALREADY_REGISTERED (0xC002000D)
|
||||
#define RPC_NT_ALREADY_LISTENING (0xC002000E)
|
||||
#define RPC_NT_NO_PROTSEQS_REGISTERED (0xC002000F)
|
||||
#define RPC_NT_NOT_LISTENING (0xC0020010)
|
||||
#define RPC_NT_UNKNOWN_MGR_TYPE (0xC0020011)
|
||||
#define RPC_NT_UNKNOWN_IF (0xC0020012)
|
||||
#define RPC_NT_NO_BINDINGS (0xC0020013)
|
||||
#define RPC_NT_NO_PROTSEQS (0xC0020014)
|
||||
#define RPC_NT_CANT_CREATE_ENDPOINT (0xC0020015)
|
||||
#define RPC_NT_OUT_OF_RESOURCES (0xC0020016)
|
||||
#define RPC_NT_SERVER_UNAVAILABLE (0xC0020017)
|
||||
#define RPC_NT_SERVER_TOO_BUSY (0xC0020018)
|
||||
#define RPC_NT_INVALID_NETWORK_OPTIONS (0xC0020019)
|
||||
#define RPC_NT_NO_CALL_ACTIVE (0xC002001A)
|
||||
#define RPC_NT_CALL_FAILED (0xC002001B)
|
||||
#define RPC_NT_CALL_FAILED_DNE (0xC002001C)
|
||||
#define RPC_NT_PROTOCOL_ERROR (0xC002001D)
|
||||
|
||||
|
||||
#define RPC_NT_SS_IN_NULL_CONTEXT (0xC0030004)
|
||||
|
||||
|
||||
/* FIXME: Are these official values ?? */
|
||||
#define STATUS_FS_QUERY_REQUIRED (0xC1000001)
|
||||
#define STATUS_HANDLE_NOT_WAITABLE (0xC1000002)
|
||||
#define STATUS_OBJECT_FILE_MISMATCH (0xC1000003)
|
||||
#define STATUS_INVALID_PARAMETER_MAX (0xC1000004)
|
||||
#define STATUS_CONFLICTING_ADDRESS (0xC1000005)
|
||||
#define STATUS_NO_MEDIA_IN_DRIVE (0xC1000006)
|
||||
|
||||
#endif /* __INCLUDE_DDK_STATUS_H */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
/* SYSTEM STRUCTURES ******************************************************/
|
||||
|
||||
#include <ddk/cfgtypes.h>
|
||||
#include <ddk/ketypes.h>
|
||||
#include <ddk/obtypes.h>
|
||||
#include <ddk/mmtypes.h>
|
||||
#include <ddk/iotypes.h>
|
||||
#include <ddk/extypes.h>
|
||||
#include <ddk/pstypes.h>
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
#ifndef __INCLUDE_DDK_TYPES_H
|
||||
#define __INCLUDE_DDK_TYPES_H
|
||||
|
||||
// these should be moved to a file like ntdef.h
|
||||
|
||||
|
||||
|
||||
typedef ULONG KAFFINITY, *PKAFFINITY;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Various other types (all quite pointless)
|
||||
*/
|
||||
typedef CCHAR KPROCESSOR_MODE;
|
||||
typedef UCHAR KIRQL;
|
||||
typedef KIRQL* PKIRQL;
|
||||
typedef ULONG IO_ALLOCATION_ACTION;
|
||||
typedef ULONG POOL_TYPE;
|
||||
typedef ULONG TIMER_TYPE;
|
||||
typedef ULONG MM_SYSTEM_SIZE;
|
||||
typedef ULONG LOCK_OPERATION;
|
||||
|
||||
typedef LARGE_INTEGER PHYSICAL_ADDRESS;
|
||||
typedef PHYSICAL_ADDRESS* PPHYSICAL_ADDRESS;
|
||||
|
||||
|
||||
|
||||
|
||||
#endif /* __INCLUDE_DDK_TYPES_H */
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,35 @@
|
||||
#ifndef __INCLUDE_NAPI_CORE_H
|
||||
#define __INCLUDE_NAPI_CORE_H
|
||||
|
||||
#include "../ntoskrnl/include/internal/ke.h"
|
||||
|
||||
#define MM_CORE_DUMP_HEADER_MAGIC (0xdeafbead)
|
||||
#define MM_CORE_DUMP_HEADER_VERSION (0x1)
|
||||
#define MM_CORE_DUMP_TYPE_MINIMAL (0x1)
|
||||
#define MM_CORE_DUMP_TYPE_FULL (0x2)
|
||||
|
||||
typedef struct _MM_CORE_DUMP_HEADER
|
||||
{
|
||||
ULONG Magic;
|
||||
ULONG Version;
|
||||
ULONG Type;
|
||||
KTRAP_FRAME TrapFrame;
|
||||
ULONG BugCheckCode;
|
||||
ULONG BugCheckParameters[4];
|
||||
PVOID FaultingStackBase;
|
||||
ULONG FaultingStackSize;
|
||||
ULONG PhysicalMemorySize;
|
||||
} MM_CORE_DUMP_HEADER, *PMM_CORE_DUMP_HEADER;
|
||||
|
||||
typedef struct _MM_DUMP_POINTERS
|
||||
{
|
||||
PVOID Context;
|
||||
NTSTATUS (*DeviceInit)(PVOID Context);
|
||||
NTSTATUS (*DeviceWrite)(PVOID Context, ULONG Block, PMDL Mdl);
|
||||
NTSTATUS (*DeviceFinish)(PVOID Context);
|
||||
} MM_DUMP_POINTERS, *PMM_DUMP_POINTERS;
|
||||
|
||||
#define FSCTL_GET_DUMP_BLOCK_MAP (('R' << 24) | 0xF1)
|
||||
#define IOCTL_GET_DUMP_POINTERS (('R' << 24) | 0xF2)
|
||||
|
||||
#endif /* __INCLUDE_NAPI_CORE_H */
|
||||
@@ -0,0 +1,63 @@
|
||||
#ifndef __INCLUDE_NAPI_DBG_H
|
||||
#define __INCLUDE_NAPI_DBG_H
|
||||
|
||||
#include <napi/lpc.h>
|
||||
|
||||
#define DBG_EVENT_EXCEPTION (1)
|
||||
#define DBG_EVENT_CREATE_THREAD (2)
|
||||
#define DBG_EVENT_CREATE_PROCESS (3)
|
||||
#define DBG_EVENT_EXIT_THREAD (4)
|
||||
#define DBG_EVENT_EXIT_PROCESS (5)
|
||||
#define DBG_EVENT_LOAD_DLL (6)
|
||||
#define DBG_EVENT_UNLOAD_DLL (7)
|
||||
|
||||
typedef struct _LPC_DBG_MESSAGE
|
||||
{
|
||||
LPC_MESSAGE_HEADER Header;
|
||||
ULONG Type;
|
||||
ULONG Status;
|
||||
union
|
||||
{
|
||||
struct
|
||||
{
|
||||
EXCEPTION_RECORD ExceptionRecord;
|
||||
ULONG FirstChance;
|
||||
} Exception;
|
||||
struct
|
||||
{
|
||||
ULONG Reserved;
|
||||
PVOID StartAddress;
|
||||
} CreateThread;
|
||||
struct
|
||||
{
|
||||
ULONG Reserved;
|
||||
HANDLE FileHandle;
|
||||
PVOID Base;
|
||||
ULONG PointerToSymbolTable;
|
||||
ULONG NumberOfSymbols;
|
||||
ULONG Reserved2;
|
||||
PVOID EntryPoint;
|
||||
} CreateProcess;
|
||||
struct
|
||||
{
|
||||
ULONG ExitCode;
|
||||
} ExitThread;
|
||||
struct
|
||||
{
|
||||
ULONG ExitCode;
|
||||
} ExitProcess;
|
||||
struct
|
||||
{
|
||||
HANDLE FileHandle;
|
||||
PVOID Base;
|
||||
ULONG PointerToSymbolTable;
|
||||
ULONG NumberOfSymbols;
|
||||
} LoadDll;
|
||||
struct
|
||||
{
|
||||
PVOID Base;
|
||||
} UnloadDll;
|
||||
} Data;
|
||||
} LPC_DBG_MESSAGE, *PLPC_DBG_MESSAGE;
|
||||
|
||||
#endif /* __INCLUDE_NAPI_DBG_H */
|
||||
@@ -0,0 +1,353 @@
|
||||
#ifndef _ASM_SEGMENT_H
|
||||
#define _ASM_SEGMENT_H
|
||||
|
||||
#define KERNEL_CS (0x8)
|
||||
#define KERNEL_DS (0x10)
|
||||
#define USER_CS (0x18 + 0x3)
|
||||
#define USER_DS (0x20 + 0x3)
|
||||
#define RESERVED_FOR_TSS (0x28)
|
||||
#define PCR_SELECTOR (0x30)
|
||||
#define TEB_SELECTOR (0x38 + 0x3)
|
||||
|
||||
//#define USER_CS (0x8+0x3)
|
||||
//#define USER_DS (0x10+0x3)
|
||||
//#define ZERO_DS 0x18
|
||||
//#define KERNEL_CS 0x20
|
||||
//#define KERNEL_DS 0x28
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
/*
|
||||
* Uh, these should become the main single-value transfer routines..
|
||||
* They automatically use the right size if we just have the right
|
||||
* pointer type..
|
||||
*/
|
||||
#define put_user(x,ptr) __put_user((unsigned long)(x),(ptr),sizeof(*(ptr)))
|
||||
#define get_user(ptr) ((__typeof__(*(ptr)))__get_user((ptr),sizeof(*(ptr))))
|
||||
|
||||
/*
|
||||
* This is a silly but good way to make sure that
|
||||
* the __put_user function is indeed always optimized,
|
||||
* and that we use the correct sizes..
|
||||
*/
|
||||
extern int bad_user_access_length(void);
|
||||
|
||||
/*
|
||||
* dummy pointer type structure.. gcc won't try to do something strange
|
||||
* this way..
|
||||
*/
|
||||
struct __segment_dummy { unsigned long a[100]; };
|
||||
#define __sd(x) ((struct __segment_dummy *) (x))
|
||||
#define __const_sd(x) ((const struct __segment_dummy *) (x))
|
||||
|
||||
static inline void __put_user(unsigned long x, void * y, int size)
|
||||
{
|
||||
switch (size) {
|
||||
case 1:
|
||||
__asm__ ("movb %b1,%%fs:%0" \
|
||||
:"=m" (*__sd(y)) \
|
||||
:"iq" ((unsigned char) x), "m" (*__sd(y)));
|
||||
break;
|
||||
case 2:
|
||||
__asm__ ("movw %w1,%%fs:%0" \
|
||||
:"=m" (*__sd(y)) \
|
||||
:"ir" ((unsigned short) x), "m" (*__sd(y)));
|
||||
break;
|
||||
case 4:
|
||||
__asm__ ("movl %1,%%fs:%0" \
|
||||
:"=m" (*__sd(y)) \
|
||||
:"ir" (x), "m" (*__sd(y)));
|
||||
break;
|
||||
default:
|
||||
bad_user_access_length();
|
||||
}
|
||||
}
|
||||
|
||||
static inline unsigned long __get_user(const void * y, int size)
|
||||
{
|
||||
unsigned long result;
|
||||
|
||||
switch (size) {
|
||||
case 1:
|
||||
__asm__ ("movb %%fs:%1,%b0" \
|
||||
:"=q" (result) \
|
||||
:"m" (*__const_sd(y)));
|
||||
return (unsigned char) result;
|
||||
case 2:
|
||||
__asm__ ("movw %%fs:%1,%w0" \
|
||||
:"=r" (result) \
|
||||
:"m" (*__const_sd(y)));
|
||||
return (unsigned short) result;
|
||||
case 4:
|
||||
__asm__ ("movl %%fs:%1,%0" \
|
||||
:"=r" (result) \
|
||||
:"m" (*__const_sd(y)));
|
||||
return result;
|
||||
default:
|
||||
return bad_user_access_length();
|
||||
}
|
||||
}
|
||||
|
||||
static inline void __generic_memcpy_tofs(void * to, const void * from, unsigned long n)
|
||||
{
|
||||
__asm__ volatile
|
||||
(" cld \
|
||||
push %%es \
|
||||
push %%fs \
|
||||
cmpl $3,%0 \
|
||||
pop %%es \
|
||||
jbe 1f \
|
||||
movl %%edi,%%ecx \
|
||||
negl %%ecx \
|
||||
andl $3,%%ecx \
|
||||
subl %%ecx,%0 \
|
||||
rep; movsb \
|
||||
movl %0,%%ecx \
|
||||
shrl $2,%%ecx \
|
||||
rep; movsl \
|
||||
andl $3,%0 \
|
||||
1: movl %0,%%ecx \
|
||||
rep; movsb \
|
||||
pop %%es" \
|
||||
:"=abd" (n) \
|
||||
:"0" (n),"D" ((long) to),"S" ((long) from) \
|
||||
:"cx","di","si");
|
||||
}
|
||||
|
||||
static inline void __constant_memcpy_tofs(void * to, const void * from, unsigned long n)
|
||||
{
|
||||
switch (n) {
|
||||
case 0:
|
||||
return;
|
||||
case 1:
|
||||
__put_user(*(const char *) from, (char *) to, 1);
|
||||
return;
|
||||
case 2:
|
||||
__put_user(*(const short *) from, (short *) to, 2);
|
||||
return;
|
||||
case 3:
|
||||
__put_user(*(const short *) from, (short *) to, 2);
|
||||
__put_user(*(2+(const char *) from), 2+(char *) to, 1);
|
||||
return;
|
||||
case 4:
|
||||
__put_user(*(const int *) from, (int *) to, 4);
|
||||
return;
|
||||
case 8:
|
||||
__put_user(*(const int *) from, (int *) to, 4);
|
||||
__put_user(*(1+(const int *) from), 1+(int *) to, 4);
|
||||
return;
|
||||
case 12:
|
||||
__put_user(*(const int *) from, (int *) to, 4);
|
||||
__put_user(*(1+(const int *) from), 1+(int *) to, 4);
|
||||
__put_user(*(2+(const int *) from), 2+(int *) to, 4);
|
||||
return;
|
||||
case 16:
|
||||
__put_user(*(const int *) from, (int *) to, 4);
|
||||
__put_user(*(1+(const int *) from), 1+(int *) to, 4);
|
||||
__put_user(*(2+(const int *) from), 2+(int *) to, 4);
|
||||
__put_user(*(3+(const int *) from), 3+(int *) to, 4);
|
||||
return;
|
||||
}
|
||||
#define COMMON(x) \
|
||||
__asm__("cld\n\t" \
|
||||
"push %%es\n\t" \
|
||||
"push %%fs\n\t" \
|
||||
"pop %%es\n\t" \
|
||||
"rep ; movsl\n\t" \
|
||||
x \
|
||||
"pop %%es" \
|
||||
: /* no outputs */ \
|
||||
:"c" (n/4),"D" ((long) to),"S" ((long) from) \
|
||||
:"cx","di","si")
|
||||
|
||||
switch (n % 4) {
|
||||
case 0:
|
||||
COMMON("");
|
||||
return;
|
||||
case 1:
|
||||
COMMON("movsb\n\t");
|
||||
return;
|
||||
case 2:
|
||||
COMMON("movsw\n\t");
|
||||
return;
|
||||
case 3:
|
||||
COMMON("movsw\n\tmovsb\n\t");
|
||||
return;
|
||||
}
|
||||
#undef COMMON
|
||||
}
|
||||
|
||||
static inline void __generic_memcpy_fromfs(void * to, const void * from, unsigned long n)
|
||||
{
|
||||
__asm__ volatile
|
||||
(" cld \
|
||||
cmpl $3,%0 \
|
||||
jbe 1f \
|
||||
movl %%edi,%%ecx \
|
||||
negl %%ecx \
|
||||
andl $3,%%ecx \
|
||||
subl %%ecx,%0 \
|
||||
fs; rep; movsb \
|
||||
movl %0,%%ecx \
|
||||
shrl $2,%%ecx \
|
||||
fs; rep; movsl \
|
||||
andl $3,%0 \
|
||||
1: movl %0,%%ecx \
|
||||
fs; rep; movsb"
|
||||
:"=abd" (n)
|
||||
:"0" (n),"D" ((long) to),"S" ((long) from)
|
||||
:"cx","di","si", "memory");
|
||||
}
|
||||
|
||||
static inline void __constant_memcpy_fromfs(void * to, const void * from, unsigned long n)
|
||||
{
|
||||
switch (n) {
|
||||
case 0:
|
||||
return;
|
||||
case 1:
|
||||
*(char *)to = __get_user((const char *) from, 1);
|
||||
return;
|
||||
case 2:
|
||||
*(short *)to = __get_user((const short *) from, 2);
|
||||
return;
|
||||
case 3:
|
||||
*(short *) to = __get_user((const short *) from, 2);
|
||||
*((char *) to + 2) = __get_user(2+(const char *) from, 1);
|
||||
return;
|
||||
case 4:
|
||||
*(int *) to = __get_user((const int *) from, 4);
|
||||
return;
|
||||
case 8:
|
||||
*(int *) to = __get_user((const int *) from, 4);
|
||||
*(1+(int *) to) = __get_user(1+(const int *) from, 4);
|
||||
return;
|
||||
case 12:
|
||||
*(int *) to = __get_user((const int *) from, 4);
|
||||
*(1+(int *) to) = __get_user(1+(const int *) from, 4);
|
||||
*(2+(int *) to) = __get_user(2+(const int *) from, 4);
|
||||
return;
|
||||
case 16:
|
||||
*(int *) to = __get_user((const int *) from, 4);
|
||||
*(1+(int *) to) = __get_user(1+(const int *) from, 4);
|
||||
*(2+(int *) to) = __get_user(2+(const int *) from, 4);
|
||||
*(3+(int *) to) = __get_user(3+(const int *) from, 4);
|
||||
return;
|
||||
}
|
||||
#define COMMON(x) \
|
||||
__asm__("cld\n\t" \
|
||||
"rep ; fs ; movsl\n\t" \
|
||||
x \
|
||||
: /* no outputs */ \
|
||||
:"c" (n/4),"D" ((long) to),"S" ((long) from) \
|
||||
:"cx","di","si","memory")
|
||||
|
||||
switch (n % 4) {
|
||||
case 0:
|
||||
COMMON("");
|
||||
return;
|
||||
case 1:
|
||||
COMMON("fs ; movsb");
|
||||
return;
|
||||
case 2:
|
||||
COMMON("fs ; movsw");
|
||||
return;
|
||||
case 3:
|
||||
COMMON("fs ; movsw\n\tfs ; movsb");
|
||||
return;
|
||||
}
|
||||
#undef COMMON
|
||||
}
|
||||
|
||||
#define memcpy_fromfs(to, from, n) \
|
||||
(__builtin_constant_p(n) ? \
|
||||
__constant_memcpy_fromfs((to),(from),(n)) : \
|
||||
__generic_memcpy_fromfs((to),(from),(n)))
|
||||
|
||||
#define memcpy_tofs(to, from, n) \
|
||||
(__builtin_constant_p(n) ? \
|
||||
__constant_memcpy_tofs((to),(from),(n)) : \
|
||||
__generic_memcpy_tofs((to),(from),(n)))
|
||||
|
||||
/*
|
||||
* These are deprecated..
|
||||
*
|
||||
* Use "put_user()" and "get_user()" with the proper pointer types instead.
|
||||
*/
|
||||
|
||||
#define get_fs_byte(addr) __get_user((const unsigned char *)(addr),1)
|
||||
#define get_fs_word(addr) __get_user((const unsigned short *)(addr),2)
|
||||
#define get_fs_long(addr) __get_user((const unsigned int *)(addr),4)
|
||||
|
||||
#define put_fs_byte(x,addr) __put_user((x),(unsigned char *)(addr),1)
|
||||
#define put_fs_word(x,addr) __put_user((x),(unsigned short *)(addr),2)
|
||||
#define put_fs_long(x,addr) __put_user((x),(unsigned int *)(addr),4)
|
||||
|
||||
#ifdef WE_REALLY_WANT_TO_USE_A_BROKEN_INTERFACE
|
||||
|
||||
static inline unsigned short get_user_word(const short *addr)
|
||||
{
|
||||
return __get_user(addr, 2);
|
||||
}
|
||||
|
||||
static inline unsigned char get_user_byte(const char * addr)
|
||||
{
|
||||
return __get_user(addr,1);
|
||||
}
|
||||
|
||||
static inline unsigned long get_user_long(const int *addr)
|
||||
{
|
||||
return __get_user(addr, 4);
|
||||
}
|
||||
|
||||
static inline void put_user_byte(char val,char *addr)
|
||||
{
|
||||
__put_user(val, addr, 1);
|
||||
}
|
||||
|
||||
static inline void put_user_word(short val,short * addr)
|
||||
{
|
||||
__put_user(val, addr, 2);
|
||||
}
|
||||
|
||||
static inline void put_user_long(unsigned long val,int * addr)
|
||||
{
|
||||
__put_user(val, addr, 4);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Someone who knows GNU asm better than I should double check the following.
|
||||
* It seems to work, but I don't know if I'm doing something subtly wrong.
|
||||
* --- TYT, 11/24/91
|
||||
* [ nothing wrong here, Linus: I just changed the ax to be any reg ]
|
||||
*/
|
||||
|
||||
static inline unsigned long get_fs(void)
|
||||
{
|
||||
unsigned long _v;
|
||||
__asm__("mov %%fs,%w0":"=r" (_v):"0" (0));
|
||||
return _v;
|
||||
}
|
||||
|
||||
static inline unsigned long get_ds(void)
|
||||
{
|
||||
unsigned long _v;
|
||||
__asm__("mov %%ds,%w0":"=r" (_v):"0" (0));
|
||||
return _v;
|
||||
}
|
||||
|
||||
static inline void set_fs(unsigned long val)
|
||||
{
|
||||
__asm__ __volatile__("mov %w0,%%fs": /* no output */ :"r" (val));
|
||||
}
|
||||
|
||||
static inline void set_ds(unsigned long val)
|
||||
{
|
||||
__asm__ __volatile__("mov %w0,%%ds": /* no output */ :"r" (val));
|
||||
}
|
||||
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
||||
#endif /* _ASM_SEGMENT_H */
|
||||
@@ -0,0 +1,197 @@
|
||||
#ifndef __INCLUDE_NAPI_LPC_H
|
||||
#define __INCLUDE_NAPI_LPC_H
|
||||
|
||||
#include <ntos/security.h>
|
||||
|
||||
#define MAX_MESSAGE_DATA (0x130)
|
||||
|
||||
typedef enum
|
||||
{
|
||||
UNUSED_MSG_TYPE = 0x0, /* ReactOS */
|
||||
LPC_NEW_MESSAGE = 0x0, /* NT */
|
||||
LPC_REQUEST = 0x1,
|
||||
LPC_REPLY = 0x2,
|
||||
LPC_DATAGRAM = 0x3,
|
||||
LPC_LOST_REPLY = 0x4,
|
||||
LPC_PORT_CLOSED = 0x5,
|
||||
LPC_CLIENT_DIED = 0x6,
|
||||
LPC_EXCEPTION = 0x7,
|
||||
LPC_DEBUG_EVENT = 0x8,
|
||||
LPC_ERROR_EVENT = 0x9,
|
||||
LPC_CONNECTION_REQUEST = 0xa,
|
||||
LPC_CONNECTION_REFUSED = 0xb
|
||||
|
||||
} LPC_TYPE, *PLPC_TYPE;
|
||||
|
||||
typedef struct _LPC_SECTION_WRITE
|
||||
{
|
||||
ULONG Length;
|
||||
HANDLE SectionHandle;
|
||||
ULONG SectionOffset;
|
||||
ULONG ViewSize;
|
||||
PVOID ViewBase;
|
||||
PVOID TargetViewBase;
|
||||
} LPC_SECTION_WRITE, *PLPC_SECTION_WRITE;
|
||||
|
||||
typedef struct _LPC_SECTION_READ
|
||||
{
|
||||
ULONG Length;
|
||||
ULONG ViewSize;
|
||||
PVOID ViewBase;
|
||||
} LPC_SECTION_READ, *PLPC_SECTION_READ;
|
||||
|
||||
typedef struct _LPC_MESSAGE_HEADER
|
||||
{
|
||||
USHORT DataSize;
|
||||
USHORT MessageSize;
|
||||
// LPC_TYPE MessageType;
|
||||
USHORT MessageType;
|
||||
USHORT VirtualRangesOffset;
|
||||
CLIENT_ID Cid;
|
||||
ULONG MessageId;
|
||||
ULONG SharedSectionSize;
|
||||
} LPC_MESSAGE_HEADER, *PLPC_MESSAGE_HEADER;
|
||||
|
||||
typedef struct _LPC_TERMINATION_MESSAGE
|
||||
{
|
||||
LPC_MESSAGE_HEADER Header;
|
||||
TIME CreationTime;
|
||||
} LPC_TERMINATION_MESSAGE, *PLPC_TERMINATION_MESSAGE;
|
||||
|
||||
typedef struct _LPC_DEBUG_MESSAGE
|
||||
{
|
||||
LPC_MESSAGE_HEADER Header;
|
||||
ULONG EventCode;
|
||||
ULONG Status;
|
||||
union {
|
||||
struct {
|
||||
EXCEPTION_RECORD ExceptionRecord;
|
||||
ULONG FirstChance;
|
||||
} Exception;
|
||||
struct {
|
||||
ULONG Reserved;
|
||||
PVOID StartAddress;
|
||||
} CreateThread;
|
||||
struct {
|
||||
ULONG Reserved;
|
||||
HANDLE FileHandle;
|
||||
PVOID Base;
|
||||
ULONG PointerToSymbolTable;
|
||||
ULONG NumberOfSymbols;
|
||||
ULONG Reserved2;
|
||||
PVOID EntryPoint;
|
||||
} CreateProcess;
|
||||
struct {
|
||||
ULONG ExitCode;
|
||||
} ExitThread;
|
||||
struct {
|
||||
ULONG ExitCode;
|
||||
} ExitProcess;
|
||||
struct {
|
||||
HANDLE FileHandle;
|
||||
PVOID Base;
|
||||
ULONG PointerToSymbolTable;
|
||||
ULONG NumberOfSymbols;
|
||||
} LoadDll;
|
||||
struct {
|
||||
PVOID Base;
|
||||
} UnloadDll;
|
||||
#ifdef ANONYMOUSUNIONS
|
||||
};
|
||||
#else
|
||||
} u;
|
||||
#endif
|
||||
} LPC_DEBUG_MESSAGE, * PLPC_DEBUG_MESSAGE;
|
||||
|
||||
typedef LPC_MESSAGE_HEADER LPC_MESSAGE, *PLPC_MESSAGE;
|
||||
|
||||
typedef struct _LPC_MAX_MESSAGE
|
||||
{
|
||||
LPC_MESSAGE_HEADER Header;
|
||||
BYTE Data[MAX_MESSAGE_DATA];
|
||||
} LPC_MAX_MESSAGE, *PLPC_MAX_MESSAGE;
|
||||
|
||||
#define PORT_MESSAGE_TYPE(m) (LPC_TYPE)((m).Header.MessageType)
|
||||
|
||||
#ifndef __USE_NT_LPC__
|
||||
NTSTATUS STDCALL NtAcceptConnectPort (PHANDLE PortHandle,
|
||||
HANDLE NamedPortHandle,
|
||||
PLPC_MESSAGE ServerReply,
|
||||
BOOLEAN AcceptIt,
|
||||
PLPC_SECTION_WRITE WriteMap,
|
||||
PLPC_SECTION_READ ReadMap);
|
||||
#else
|
||||
NTSTATUS STDCALL NtAcceptConnectPort (PHANDLE PortHandle,
|
||||
ULONG PortIdentifier,
|
||||
PLPC_MESSAGE ServerReply,
|
||||
BOOLEAN AcceptIt,
|
||||
PLPC_SECTION_WRITE WriteMap,
|
||||
PLPC_SECTION_READ ReadMap);
|
||||
#endif /* ndef __USE_NT_LPC__ */
|
||||
|
||||
NTSTATUS STDCALL NtCompleteConnectPort (HANDLE PortHandle);
|
||||
|
||||
NTSTATUS STDCALL NtConnectPort(PHANDLE PortHandle,
|
||||
PUNICODE_STRING PortName,
|
||||
PSECURITY_QUALITY_OF_SERVICE SecurityQos,
|
||||
PLPC_SECTION_WRITE SectionInfo,
|
||||
PLPC_SECTION_READ MapInfo,
|
||||
PULONG MaxMessageSize,
|
||||
PVOID ConnectInfo,
|
||||
PULONG ConnectInfoLength);
|
||||
|
||||
NTSTATUS STDCALL NtReplyWaitReplyPort (HANDLE PortHandle,
|
||||
PLPC_MESSAGE ReplyMessage);
|
||||
|
||||
NTSTATUS STDCALL NtCreatePort(PHANDLE PortHandle,
|
||||
POBJECT_ATTRIBUTES ObjectAttributes,
|
||||
ULONG MaxConnectInfoLength,
|
||||
ULONG MaxDataLength,
|
||||
ULONG NPMessageQueueSize OPTIONAL);
|
||||
|
||||
NTSTATUS STDCALL NtCreateWaitablePort(PHANDLE PortHandle,
|
||||
POBJECT_ATTRIBUTES ObjectAttributes,
|
||||
ULONG MaxConnectInfoLength,
|
||||
ULONG MaxDataLength,
|
||||
ULONG NPMessageQueueSize OPTIONAL);
|
||||
|
||||
NTSTATUS STDCALL NtImpersonateClientOfPort (HANDLE PortHandle,
|
||||
PLPC_MESSAGE ClientMessage);
|
||||
|
||||
NTSTATUS STDCALL NtListenPort (HANDLE PortHandle,
|
||||
PLPC_MESSAGE LpcMessage);
|
||||
|
||||
NTSTATUS STDCALL NtQueryInformationPort (HANDLE PortHandle,
|
||||
CINT PortInformationClass,
|
||||
PVOID PortInformation,
|
||||
ULONG PortInformationLength,
|
||||
PULONG ReturnLength);
|
||||
NTSTATUS STDCALL NtReplyPort (HANDLE PortHandle,
|
||||
PLPC_MESSAGE LpcReply);
|
||||
NTSTATUS STDCALL NtReplyWaitReceivePort (HANDLE PortHandle,
|
||||
PULONG PortId,
|
||||
PLPC_MESSAGE MessageReply,
|
||||
PLPC_MESSAGE MessageRequest);
|
||||
NTSTATUS STDCALL NtRequestPort (HANDLE PortHandle,
|
||||
PLPC_MESSAGE LpcMessage);
|
||||
|
||||
NTSTATUS STDCALL NtRequestWaitReplyPort (HANDLE PortHandle,
|
||||
PLPC_MESSAGE LpcReply,
|
||||
PLPC_MESSAGE LpcRequest);
|
||||
|
||||
NTSTATUS STDCALL NtReadRequestData (HANDLE PortHandle,
|
||||
PLPC_MESSAGE Message,
|
||||
ULONG Index,
|
||||
PVOID Buffer,
|
||||
ULONG BufferLength,
|
||||
PULONG ReturnLength);
|
||||
|
||||
NTSTATUS STDCALL NtWriteRequestData (HANDLE PortHandle,
|
||||
PLPC_MESSAGE Message,
|
||||
ULONG Index,
|
||||
PVOID Buffer,
|
||||
ULONG BufferLength,
|
||||
PULONG ReturnLength);
|
||||
|
||||
|
||||
#endif /* __INCLUDE_NAPI_LPC_H */
|
||||
@@ -0,0 +1,196 @@
|
||||
#ifndef __INCLUDE_NAPI_NPIPE_H
|
||||
#define __INCLUDE_NAPI_NPIPE_H
|
||||
|
||||
#include <ddk/ntddk.h>
|
||||
|
||||
/*
|
||||
* FUNCTION: ZwCreateNamedPipeFile creates named pipe
|
||||
* ARGUMENTS:
|
||||
* NamedPipeFileHandle (OUT) = Caller supplied storage for the
|
||||
* resulting handle
|
||||
* DesiredAccess = Specifies the type of access that the caller
|
||||
* requires to the file boject
|
||||
* ObjectAttributes = Points to a structure that specifies the
|
||||
* object attributes.
|
||||
* IoStatusBlock = Points to a variable that receives the final
|
||||
* completion status and information
|
||||
* ShareAccess = Specifies the limitations on sharing of the file.
|
||||
* This parameter can be zero or any compatible
|
||||
* combination of the following flags
|
||||
* FILE_SHARE_READ
|
||||
* FILE_SHARE_WRITE
|
||||
* CreateDisposition = Specifies what to do depending on whether
|
||||
* the file already exists. This must be one of
|
||||
* the following values
|
||||
* FILE_OPEN
|
||||
* FILE_CREATE
|
||||
* FILE_OPEN_IF
|
||||
* CreateOptions = Specifies the options to be applied when
|
||||
* creating or opening the file, as a compatible
|
||||
* combination of the following flags
|
||||
* FILE_WRITE_THROUGH
|
||||
* FILE_SYNCHRONOUS_IO_ALERT
|
||||
* FILE_SYNCHRONOUS_IO_NONALERT
|
||||
* TypeMessage = Specifies whether the data written to the pipe is
|
||||
* interpreted as a sequence of messages or as a
|
||||
* stream of bytes
|
||||
* ReadModeMessage = Specifies whether the data read from the pipe
|
||||
* is interpreted as a sequence of messages or as
|
||||
* a stream of bytes
|
||||
* NonBlocking = Specifies whether non-blocking mode is enabled
|
||||
* MaxInstances = Specifies the maximum number of instancs that can
|
||||
* be created for this pipe
|
||||
* InBufferSize = Specifies the number of bytes to reserve for the
|
||||
* input buffer
|
||||
* OutBufferSize = Specifies the number of bytes to reserve for the
|
||||
* output buffer
|
||||
* DefaultTimeout = Optionally points to a variable that specifies
|
||||
* the default timeout value in units of
|
||||
* 100-nanoseconds.
|
||||
* REMARKS: This funciton maps to the win32 function CreateNamedPipe
|
||||
* RETURNS:
|
||||
* Status
|
||||
*/
|
||||
|
||||
NTSTATUS STDCALL NtCreateNamedPipeFile(OUT PHANDLE NamedPipeFileHandle,
|
||||
IN ACCESS_MASK DesiredAccess,
|
||||
IN POBJECT_ATTRIBUTES ObjectAttributes,
|
||||
OUT PIO_STATUS_BLOCK IoStatusBlock,
|
||||
IN ULONG ShareAccess,
|
||||
IN ULONG CreateDisposition,
|
||||
IN ULONG CreateOptions,
|
||||
IN BOOLEAN WriteModeMessage,
|
||||
IN BOOLEAN ReadModeMessage,
|
||||
IN BOOLEAN NonBlocking,
|
||||
IN ULONG MaxInstances,
|
||||
IN ULONG InBufferSize,
|
||||
IN ULONG OutBufferSize,
|
||||
IN PLARGE_INTEGER DefaultTimeOut);
|
||||
NTSTATUS STDCALL ZwCreateNamedPipeFile(OUT PHANDLE NamedPipeFileHandle,
|
||||
IN ACCESS_MASK DesiredAccess,
|
||||
IN POBJECT_ATTRIBUTES ObjectAttributes,
|
||||
OUT PIO_STATUS_BLOCK IoStatusBlock,
|
||||
IN ULONG ShareAccess,
|
||||
IN ULONG CreateDisposition,
|
||||
IN ULONG CreateOptions,
|
||||
IN BOOLEAN WriteModeMessage,
|
||||
IN BOOLEAN ReadModeMessage,
|
||||
IN BOOLEAN NonBlocking,
|
||||
IN ULONG MaxInstances,
|
||||
IN ULONG InBufferSize,
|
||||
IN ULONG OutBufferSize,
|
||||
IN PLARGE_INTEGER DefaultTimeOut);
|
||||
|
||||
#define FSCTL_PIPE_ASSIGN_EVENT \
|
||||
CTL_CODE(FILE_DEVICE_NAMED_PIPE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define FSCTL_PIPE_DISCONNECT \
|
||||
CTL_CODE(FILE_DEVICE_NAMED_PIPE, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define FSCTL_PIPE_LISTEN \
|
||||
CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define FSCTL_PIPE_PEEK \
|
||||
CTL_CODE(FILE_DEVICE_NAMED_PIPE, 3, METHOD_BUFFERED, FILE_READ_DATA)
|
||||
|
||||
#define FSCTL_PIPE_QUERY_EVENT \
|
||||
CTL_CODE(FILE_DEVICE_NAMED_PIPE, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define FSCTL_PIPE_TRANSCEIVE \
|
||||
CTL_CODE(FILE_DEVICE_NAMED_PIPE, 5, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA)
|
||||
|
||||
#define FSCTL_PIPE_WAIT \
|
||||
CTL_CODE(FILE_DEVICE_NAMED_PIPE, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define FSCTL_PIPE_IMPERSONATE \
|
||||
CTL_CODE(FILE_DEVICE_NAMED_PIPE, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define FSCTL_PIPE_SET_CLIENT_PROCESS \
|
||||
CTL_CODE(FILE_DEVICE_NAMED_PIPE, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define FSCTL_PIPE_QUERY_CLIENT_PROCESS \
|
||||
CTL_CODE(FILE_DEVICE_NAMED_PIPE, 9, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define FSCTL_PIPE_GET_STATE \
|
||||
CTL_CODE(FILE_DEVICE_NAMED_PIPE, 10, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define FSCTL_PIPE_SET_STATE \
|
||||
CTL_CODE(FILE_DEVICE_NAMED_PIPE, 11, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
||||
|
||||
#define FSCTL_PIPE_INTERNAL_READ \
|
||||
CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2045, METHOD_BUFFERED, FILE_READ_DATA)
|
||||
|
||||
#define FSCTL_PIPE_INTERNAL_WRITE \
|
||||
CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2046, METHOD_BUFFERED, FILE_WRITE_DATA)
|
||||
|
||||
#define FSCTL_PIPE_INTERNAL_TRANSCEIVE \
|
||||
CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2047, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA)
|
||||
|
||||
#define FSCTL_PIPE_INTERNAL_READ_OVFLOW \
|
||||
CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2048, METHOD_BUFFERED, FILE_READ_DATA)
|
||||
|
||||
|
||||
typedef struct _NPFS_WAIT_PIPE
|
||||
{
|
||||
LARGE_INTEGER Timeout;
|
||||
} NPFS_WAIT_PIPE, *PNPFS_WAIT_PIPE;
|
||||
|
||||
typedef struct _NPFS_LISTEN
|
||||
{
|
||||
} NPFS_LISTEN, *PNPFS_LISTEN;
|
||||
|
||||
typedef struct _NPFS_SET_STATE
|
||||
{
|
||||
BOOLEAN WriteModeMessage;
|
||||
BOOLEAN ReadModeMessage;
|
||||
BOOLEAN NonBlocking;
|
||||
ULONG InBufferSize;
|
||||
ULONG OutBufferSize;
|
||||
LARGE_INTEGER Timeout;
|
||||
} NPFS_SET_STATE, *PNPFS_SET_STATE;
|
||||
|
||||
typedef struct _NPFS_GET_STATE
|
||||
{
|
||||
BOOLEAN WriteModeMessage;
|
||||
BOOLEAN ReadModeMessage;
|
||||
BOOLEAN NonBlocking;
|
||||
ULONG InBufferSize;
|
||||
ULONG OutBufferSize;
|
||||
LARGE_INTEGER Timeout;
|
||||
} NPFS_GET_STATE, *PNPFS_GET_STATE;
|
||||
|
||||
typedef struct _FILE_PIPE_PEEK_BUFFER
|
||||
{
|
||||
ULONG NamedPipeState;
|
||||
ULONG ReadDataAvailable;
|
||||
ULONG NumberOfMessages;
|
||||
ULONG MessageLength;
|
||||
CHAR Data[1];
|
||||
} FILE_PIPE_PEEK_BUFFER, *PFILE_PIPE_PEEK_BUFFER;
|
||||
|
||||
#define FILE_PIPE_BYTE_STREAM_TYPE 0x00000000
|
||||
#define FILE_PIPE_MESSAGE_TYPE 0x00000001
|
||||
|
||||
#define FILE_PIPE_BYTE_STREAM_MODE 0x00000000
|
||||
#define FILE_PIPE_MESSAGE_MODE 0x00000001
|
||||
|
||||
#define FILE_PIPE_QUEUE_OPERATION 0x00000000
|
||||
#define FILE_PIPE_COMPLETE_OPERATION 0x00000001
|
||||
|
||||
#define FILE_PIPE_INBOUND 0x00000000
|
||||
#define FILE_PIPE_OUTBOUND 0x00000001
|
||||
#define FILE_PIPE_FULL_DUPLEX 0x00000002
|
||||
|
||||
#define FILE_PIPE_DISCONNECTED_STATE 0x00000001
|
||||
#define FILE_PIPE_LISTENING_STATE 0x00000002
|
||||
#define FILE_PIPE_CONNECTED_STATE 0x00000003
|
||||
#define FILE_PIPE_CLOSING_STATE 0x00000004
|
||||
|
||||
#define FILE_PIPE_CLIENT_END 0x00000000
|
||||
#define FILE_PIPE_SERVER_END 0x00000001
|
||||
|
||||
#define FILE_PIPE_READ_DATA 0x00000000
|
||||
#define FILE_PIPE_WRITE_SPACE 0x00000001
|
||||
|
||||
|
||||
#endif /* __INCLUDE_NAPI_NPIPE_H */
|
||||
@@ -0,0 +1,68 @@
|
||||
#ifndef __INCLUDE_NAPI_SHARED_DATA_H
|
||||
#define __INCLUDE_NAPI_SHARED_DATA_H
|
||||
|
||||
#define PROCESSOR_FEATURES_MAX 64
|
||||
|
||||
typedef enum _ALTERNATIVE_ARCHITECTURE_TYPE
|
||||
{
|
||||
StandardDesign,
|
||||
NEC98x86,
|
||||
EndAlternatives
|
||||
} ALTERNATIVE_ARCHITECTURE_TYPE;
|
||||
|
||||
|
||||
typedef struct _KUSER_SHARED_DATA
|
||||
{
|
||||
volatile ULONG TickCountLow;
|
||||
ULONG TickCountMultiplier;
|
||||
volatile KSYSTEM_TIME InterruptTime;
|
||||
volatile KSYSTEM_TIME SystemTime;
|
||||
volatile KSYSTEM_TIME TimeZoneBias;
|
||||
USHORT ImageNumberLow;
|
||||
USHORT ImageNumberHigh;
|
||||
WCHAR NtSystemRoot[260];
|
||||
ULONG DosDeviceMap;
|
||||
ULONG CryptoExponent;
|
||||
ULONG TimeZoneId;
|
||||
UCHAR DosDeviceDriveType[32];
|
||||
NT_PRODUCT_TYPE NtProductType;
|
||||
BOOLEAN ProductTypeIsValid;
|
||||
ULONG NtMajorVersion;
|
||||
ULONG NtMinorVersion;
|
||||
BOOLEAN ProcessorFeatures[PROCESSOR_FEATURES_MAX];
|
||||
|
||||
// NT5 / Win2k specific ??
|
||||
ULONG Reserved1;
|
||||
ULONG Reserved3;
|
||||
volatile ULONG TimeSlip;
|
||||
ALTERNATIVE_ARCHITECTURE_TYPE AlternativeArchitecture;
|
||||
ULONG SuiteMask;
|
||||
#ifdef REMOTE_BOOT
|
||||
ULONG SystemFlags;
|
||||
UCHAR RemoteBootServerPath[260];
|
||||
#endif
|
||||
BOOLEAN KdDebuggerEnabled;
|
||||
} KUSER_SHARED_DATA, *PKUSER_SHARED_DATA;
|
||||
|
||||
/* Values for DosDeviceDriveType */
|
||||
#define DOSDEVICE_DRIVE_UNKNOWN 0
|
||||
#define DOSDEVICE_DRIVE_CALCULATE 1
|
||||
#define DOSDEVICE_DRIVE_REMOVABLE 2
|
||||
#define DOSDEVICE_DRIVE_FIXED 3
|
||||
#define DOSDEVICE_DRIVE_REMOTE 4
|
||||
#define DOSDEVICE_DRIVE_CDROM 5
|
||||
#define DOSDEVICE_DRIVE_RAMDISK 6
|
||||
|
||||
|
||||
#define KERNEL_SHARED_DATA (0xFFDF0000)
|
||||
#define USER_SHARED_DATA (0x7FFE0000)
|
||||
|
||||
#if defined(__NTOSKRNL__) || defined(__NTDRIVER__) || defined(__NTHAL__)
|
||||
#define KI_USER_SHARED_DATA (0xFFDF0000)
|
||||
#define SharedUserData ((KUSER_SHARED_DATA * const)KI_USER_SHARED_DATA)
|
||||
#else
|
||||
#define SharedUserData ((KUSER_SHARED_DATA * const)USER_SHARED_DATA)
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* __INCLUDE_NAPI_SHARED_DATA_H */
|
||||
@@ -0,0 +1,234 @@
|
||||
/* TEB/PEB parameters */
|
||||
#ifndef __INCLUDE_INTERNAL_TEB
|
||||
#define __INCLUDE_INTERNAL_TEB
|
||||
|
||||
#include <napi/types.h>
|
||||
|
||||
typedef struct _CLIENT_ID
|
||||
{
|
||||
HANDLE UniqueProcess;
|
||||
HANDLE UniqueThread;
|
||||
} CLIENT_ID, *PCLIENT_ID;
|
||||
|
||||
typedef struct _CURDIR
|
||||
{
|
||||
UNICODE_STRING DosPath;
|
||||
PVOID Handle;
|
||||
} CURDIR, *PCURDIR;
|
||||
|
||||
typedef struct RTL_DRIVE_LETTER_CURDIR
|
||||
{
|
||||
USHORT Flags;
|
||||
USHORT Length;
|
||||
ULONG TimeStamp;
|
||||
UNICODE_STRING DosPath;
|
||||
} RTL_DRIVE_LETTER_CURDIR, *PRTL_DRIVE_LETTER_CURDIR;
|
||||
|
||||
typedef struct _PEB_FREE_BLOCK
|
||||
{
|
||||
struct _PEB_FREE_BLOCK* Next;
|
||||
ULONG Size;
|
||||
} PEB_FREE_BLOCK, *PPEB_FREE_BLOCK;
|
||||
|
||||
/* RTL_USER_PROCESS_PARAMETERS.Flags */
|
||||
#define PPF_NORMALIZED (1)
|
||||
|
||||
typedef struct _RTL_USER_PROCESS_PARAMETERS
|
||||
{
|
||||
ULONG MaximumLength; // 00h
|
||||
ULONG Length; // 04h
|
||||
ULONG Flags; // 08h
|
||||
ULONG DebugFlags; // 0Ch
|
||||
PVOID ConsoleHandle; // 10h
|
||||
ULONG ConsoleFlags; // 14h
|
||||
HANDLE InputHandle; // 18h
|
||||
HANDLE OutputHandle; // 1Ch
|
||||
HANDLE ErrorHandle; // 20h
|
||||
CURDIR CurrentDirectory; // 24h
|
||||
UNICODE_STRING DllPath; // 30h
|
||||
UNICODE_STRING ImagePathName; // 38h
|
||||
UNICODE_STRING CommandLine; // 40h
|
||||
PWSTR Environment; // 48h
|
||||
ULONG StartingX; // 4Ch
|
||||
ULONG StartingY; // 50h
|
||||
ULONG CountX; // 54h
|
||||
ULONG CountY; // 58h
|
||||
ULONG CountCharsX; // 5Ch
|
||||
ULONG CountCharsY; // 60h
|
||||
ULONG FillAttribute; // 64h
|
||||
ULONG WindowFlags; // 68h
|
||||
ULONG ShowWindowFlags; // 6Ch
|
||||
UNICODE_STRING WindowTitle; // 70h
|
||||
UNICODE_STRING DesktopInfo; // 78h
|
||||
UNICODE_STRING ShellInfo; // 80h
|
||||
UNICODE_STRING RuntimeInfo; // 88h
|
||||
RTL_DRIVE_LETTER_CURDIR DLCurrentDirectory[0x20]; // 90h
|
||||
} RTL_USER_PROCESS_PARAMETERS, *PRTL_USER_PROCESS_PARAMETERS;
|
||||
|
||||
#define PEB_BASE (0x7FFDF000)
|
||||
|
||||
typedef struct _PEB_LDR_DATA
|
||||
{
|
||||
ULONG Length;
|
||||
BOOLEAN Initialized;
|
||||
PVOID SsHandle;
|
||||
LIST_ENTRY InLoadOrderModuleList;
|
||||
LIST_ENTRY InMemoryOrderModuleList;
|
||||
LIST_ENTRY InInitializationOrderModuleList;
|
||||
} PEB_LDR_DATA, *PPEB_LDR_DATA;
|
||||
|
||||
typedef VOID STDCALL (*PPEBLOCKROUTINE)(PVOID);
|
||||
|
||||
typedef struct _PEB
|
||||
{
|
||||
UCHAR InheritedAddressSpace; // 00h
|
||||
UCHAR ReadImageFileExecOptions; // 01h
|
||||
UCHAR BeingDebugged; // 02h
|
||||
UCHAR Spare; // 03h
|
||||
PVOID Mutant; // 04h
|
||||
PVOID ImageBaseAddress; // 08h
|
||||
PPEB_LDR_DATA Ldr; // 0Ch
|
||||
PRTL_USER_PROCESS_PARAMETERS ProcessParameters; // 10h
|
||||
PVOID SubSystemData; // 14h
|
||||
PVOID ProcessHeap; // 18h
|
||||
PVOID FastPebLock; // 1Ch
|
||||
PPEBLOCKROUTINE FastPebLockRoutine; // 20h
|
||||
PPEBLOCKROUTINE FastPebUnlockRoutine; // 24h
|
||||
ULONG EnvironmentUpdateCount; // 28h
|
||||
PVOID* KernelCallbackTable; // 2Ch
|
||||
PVOID EventLogSection; // 30h
|
||||
PVOID EventLog; // 34h
|
||||
PPEB_FREE_BLOCK FreeList; // 38h
|
||||
ULONG TlsExpansionCounter; // 3Ch
|
||||
PVOID TlsBitmap; // 40h
|
||||
ULONG TlsBitmapBits[0x2]; // 44h
|
||||
PVOID ReadOnlySharedMemoryBase; // 4Ch
|
||||
PVOID ReadOnlySharedMemoryHeap; // 50h
|
||||
PVOID* ReadOnlyStaticServerData; // 54h
|
||||
PVOID AnsiCodePageData; // 58h
|
||||
PVOID OemCodePageData; // 5Ch
|
||||
PVOID UnicodeCaseTableData; // 60h
|
||||
ULONG NumberOfProcessors; // 64h
|
||||
ULONG NtGlobalFlag; // 68h
|
||||
UCHAR Spare2[0x4]; // 6Ch
|
||||
LARGE_INTEGER CriticalSectionTimeout; // 70h
|
||||
ULONG HeapSegmentReserve; // 78h
|
||||
ULONG HeapSegmentCommit; // 7Ch
|
||||
ULONG HeapDeCommitTotalFreeThreshold; // 80h
|
||||
ULONG HeapDeCommitFreeBlockThreshold; // 84h
|
||||
ULONG NumberOfHeaps; // 88h
|
||||
ULONG MaximumNumberOfHeaps; // 8Ch
|
||||
PVOID** ProcessHeaps; // 90h
|
||||
PVOID GdiSharedHandleTable; // 94h
|
||||
PVOID ProcessStarterHelper; // 98h
|
||||
PVOID GdiDCAttributeList; // 9Ch
|
||||
PVOID LoaderLock; // A0h
|
||||
ULONG OSMajorVersion; // A4h
|
||||
ULONG OSMinorVersion; // A8h
|
||||
ULONG OSBuildNumber; // ACh
|
||||
ULONG OSPlatformId; // B0h
|
||||
ULONG ImageSubSystem; // B4h
|
||||
ULONG ImageSubSystemMajorVersion; // B8h
|
||||
ULONG ImageSubSystemMinorVersion; // C0h
|
||||
ULONG GdiHandleBuffer[0x22]; // C4h
|
||||
} PEB, *PPEB;
|
||||
|
||||
|
||||
typedef struct _NT_TIB {
|
||||
struct _EXCEPTION_REGISTRATION_RECORD* ExceptionList; // 00h
|
||||
PVOID StackBase; // 04h
|
||||
PVOID StackLimit; // 08h
|
||||
PVOID SubSystemTib; // 0Ch
|
||||
union {
|
||||
PVOID FiberData; // 10h
|
||||
ULONG Version; // 10h
|
||||
} Fib;
|
||||
PVOID ArbitraryUserPointer; // 14h
|
||||
struct _NT_TIB *Self; // 18h
|
||||
} NT_TIB, *PNT_TIB;
|
||||
|
||||
typedef struct _GDI_TEB_BATCH
|
||||
{
|
||||
ULONG Offset;
|
||||
ULONG HDC;
|
||||
ULONG Buffer[0x136];
|
||||
} GDI_TEB_BATCH, *PGDI_TEB_BATCH;
|
||||
|
||||
typedef struct _TEB
|
||||
{
|
||||
NT_TIB Tib; // 00h
|
||||
PVOID EnvironmentPointer; // 1Ch
|
||||
CLIENT_ID Cid; // 20h
|
||||
PVOID ActiveRpcInfo; // 28h
|
||||
PVOID ThreadLocalStoragePointer; // 2Ch
|
||||
PPEB Peb; // 30h
|
||||
ULONG LastErrorValue; // 34h
|
||||
ULONG CountOfOwnedCriticalSections; // 38h
|
||||
PVOID CsrClientThread; // 3Ch
|
||||
struct _W32THREAD* Win32ThreadInfo; // 40h
|
||||
ULONG Win32ClientInfo[0x1F]; // 44h
|
||||
PVOID WOW32Reserved; // C0h
|
||||
ULONG CurrentLocale; // C4h
|
||||
ULONG FpSoftwareStatusRegister; // C8h
|
||||
PVOID SystemReserved1[0x36]; // CCh
|
||||
PVOID Spare1; // 1A4h
|
||||
LONG ExceptionCode; // 1A8h
|
||||
ULONG SpareBytes1[0x28]; // 1ACh
|
||||
PVOID SystemReserved2[0xA]; // 1D4h
|
||||
// GDI_TEB_BATCH GdiTebBatch; // 1FCh
|
||||
ULONG gdiRgn; // 6DCh
|
||||
ULONG gdiPen; // 6E0h
|
||||
ULONG gdiBrush; // 6E4h
|
||||
CLIENT_ID RealClientId; // 6E8h
|
||||
PVOID GdiCachedProcessHandle; // 6F0h
|
||||
ULONG GdiClientPID; // 6F4h
|
||||
ULONG GdiClientTID; // 6F8h
|
||||
PVOID GdiThreadLocaleInfo; // 6FCh
|
||||
PVOID UserReserved[5]; // 700h
|
||||
PVOID glDispatchTable[0x118]; // 714h
|
||||
ULONG glReserved1[0x1A]; // B74h
|
||||
PVOID glReserved2; // BDCh
|
||||
PVOID glSectionInfo; // BE0h
|
||||
PVOID glSection; // BE4h
|
||||
PVOID glTable; // BE8h
|
||||
PVOID glCurrentRC; // BECh
|
||||
PVOID glContext; // BF0h
|
||||
NTSTATUS LastStatusValue; // BF4h
|
||||
UNICODE_STRING StaticUnicodeString; // BF8h
|
||||
WCHAR StaticUnicodeBuffer[0x105]; // C00h
|
||||
PVOID DeallocationStack; // E0Ch
|
||||
PVOID TlsSlots[0x40]; // E10h
|
||||
LIST_ENTRY TlsLinks; // F10h
|
||||
PVOID Vdm; // F18h
|
||||
PVOID ReservedForNtRpc; // F1Ch
|
||||
PVOID DbgSsReserved[0x2]; // F20h
|
||||
ULONG HardErrorDisabled; // F28h
|
||||
PVOID Instrumentation[0x10]; // F2Ch
|
||||
PVOID WinSockData; // F6Ch
|
||||
ULONG GdiBatchCount; // F70h
|
||||
ULONG Spare2; // F74h
|
||||
ULONG Spare3; // F78h
|
||||
ULONG Spare4; // F7Ch
|
||||
PVOID ReservedForOle; // F80h
|
||||
ULONG WaitingOnLoaderLock; // F84h
|
||||
PVOID WineDebugInfo; // Needed for WINE DLL's
|
||||
} TEB, *PTEB;
|
||||
|
||||
|
||||
#define NtCurrentPeb() (NtCurrentTeb()->Peb)
|
||||
|
||||
static inline PTEB NtCurrentTeb(VOID)
|
||||
{
|
||||
int x;
|
||||
|
||||
__asm__ __volatile__("movl %%fs:0x18, %0\n\t"
|
||||
: "=r" (x) /* can't have two memory operands */
|
||||
: /* no inputs */
|
||||
);
|
||||
|
||||
return((PTEB)x);
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endif /* __INCLUDE_INTERNAL_TEB */
|
||||
@@ -0,0 +1,108 @@
|
||||
#ifndef __INCLUDE_NAPI_TYPES_H
|
||||
#define __INCLUDE_NAPI_TYPES_H
|
||||
|
||||
// these should be moved to a file like ntdef.h
|
||||
|
||||
typedef const int CINT;
|
||||
|
||||
typedef LONG NTSTATUS, *PNTSTATUS;
|
||||
|
||||
typedef ULONG DEVICE_TYPE;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum
|
||||
{
|
||||
DIRECTORY_QUERY,
|
||||
DIRECTORY_TRAVERSE,
|
||||
DIRECTORY_CREATE_OBJECT,
|
||||
DIRECTORY_CREATE_SUBDIRECTORY,
|
||||
DIRECTORY_ALL_ACCESS,
|
||||
};
|
||||
|
||||
/*
|
||||
* General type for status information
|
||||
*/
|
||||
//typedef LONG NTSTATUS;
|
||||
|
||||
typedef struct _UNICODE_STRING
|
||||
{
|
||||
USHORT Length;
|
||||
USHORT MaximumLength;
|
||||
PWSTR Buffer;
|
||||
} UNICODE_STRING, *PUNICODE_STRING;
|
||||
|
||||
typedef enum _SECTION_INHERIT {
|
||||
ViewShare = 1,
|
||||
ViewUnmap = 2
|
||||
} SECTION_INHERIT;
|
||||
|
||||
typedef enum _NT_PRODUCT_TYPE
|
||||
{
|
||||
NtProductWinNt = 1,
|
||||
NtProductLanManNt,
|
||||
NtProductServer
|
||||
} NT_PRODUCT_TYPE, *PNT_PRODUCT_TYPE;
|
||||
|
||||
/* File information for IRP_MJ_QUERY_INFORMATION (and SET) */
|
||||
typedef enum _FILE_INFORMATION_CLASS
|
||||
{
|
||||
FileDirectoryInformation = 1,
|
||||
FileFullDirectoryInformation,
|
||||
FileBothDirectoryInformation,
|
||||
FileBasicInformation,
|
||||
FileStandardInformation,
|
||||
FileInternalInformation,
|
||||
FileEaInformation,
|
||||
FileAccessInformation,
|
||||
FileNameInformation,
|
||||
FileRenameInformation,
|
||||
FileLinkInformation,
|
||||
FileNamesInformation,
|
||||
FileDispositionInformation,
|
||||
FilePositionInformation,
|
||||
FileFullEaInformation,
|
||||
FileModeInformation,
|
||||
FileAlignmentInformation,
|
||||
FileAllInformation,
|
||||
FileAllocationInformation,
|
||||
FileEndOfFileInformation,
|
||||
FileAlternateNameInformation,
|
||||
FileStreamInformation,
|
||||
FilePipeInformation,
|
||||
FilePipeLocalInformation,
|
||||
FilePipeRemoteInformation,
|
||||
FileMailslotQueryInformation,
|
||||
FileMailslotSetInformation,
|
||||
FileCompressionInformation,
|
||||
FileCopyOnWriteInformation,
|
||||
FileCompletionInformation,
|
||||
FileMoveClusterInformation,
|
||||
FileOleClassIdInformation,
|
||||
FileOleStateBitsInformation,
|
||||
FileNetworkOpenInformation,
|
||||
FileObjectIdInformation,
|
||||
FileOleAllInformation,
|
||||
FileOleDirectoryInformation,
|
||||
FileContentIndexInformation,
|
||||
FileInheritContentIndexInformation,
|
||||
FileOleInformation,
|
||||
FileMaximumInformation,
|
||||
} FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
|
||||
|
||||
typedef ULONG WAIT_TYPE;
|
||||
typedef USHORT CSHORT;
|
||||
|
||||
|
||||
#if 0
|
||||
typedef struct _TIME {
|
||||
DWORD LowPart;
|
||||
LONG HighPart;
|
||||
} TIME, *PTIME;
|
||||
#endif
|
||||
|
||||
typedef ULARGE_INTEGER TIME, *PTIME;
|
||||
|
||||
#endif /* __INCLUDE_NAPI_TYPES_H */
|
||||
@@ -0,0 +1,24 @@
|
||||
#ifndef __INCLUDE_NAPI_WIN32_H
|
||||
#define __INCLUDE_NAPI_WIN32_H
|
||||
|
||||
typedef struct _W32THREAD
|
||||
{
|
||||
PVOID MessageQueue;
|
||||
FAST_MUTEX WindowListLock;
|
||||
LIST_ENTRY WindowListHead;
|
||||
struct _DESKTOP_OBJECT* Desktop;
|
||||
} __attribute__((packed)) W32THREAD, *PW32THREAD;
|
||||
|
||||
typedef struct _W32PROCESS
|
||||
{
|
||||
FAST_MUTEX ClassListLock;
|
||||
LIST_ENTRY ClassListHead;
|
||||
struct _WINSTATION_OBJECT* WindowStation;
|
||||
} W32PROCESS, *PW32PROCESS;
|
||||
|
||||
PW32THREAD STDCALL
|
||||
PsGetWin32Thread(VOID);
|
||||
PW32PROCESS STDCALL
|
||||
PsGetWin32Process(VOID);
|
||||
|
||||
#endif /* __INCLUDE_NAPI_WIN32_H */
|
||||
Reference in New Issue
Block a user