mirror of
https://github.com/reactos/reactos.git
synced 2025-04-29 01:48:42 +00:00
- Sync NDK changes.
svn path=/trunk/; revision=31835
This commit is contained in:
parent
0402021d21
commit
7b3487eb9a
13 changed files with 233 additions and 76 deletions
|
@ -22,7 +22,7 @@ Author:
|
|||
//
|
||||
// Include the right file for this architecture.
|
||||
//
|
||||
#ifdef _M_IX86
|
||||
#if defined(_M_IX86) || defined(_M_AMD64)
|
||||
#include <i386/mmtypes.h>
|
||||
#elif defined(_M_PPC)
|
||||
#include <powerpc/mmtypes.h>
|
||||
|
|
|
@ -108,7 +108,7 @@ Author:
|
|||
#define KTHREAD_PENDING_USER_APC 0x28 + 0x16
|
||||
#define KTHREAD_PENDING_KERNEL_APC 0x28 + 0x15
|
||||
#define KTHREAD_CONTEXT_SWITCHES 0x48
|
||||
#define KTHREAD_STATE 0x4C
|
||||
#define KTHREAD_STATE_ 0x4C
|
||||
#define KTHREAD_NPX_STATE 0x4D
|
||||
#define KTHREAD_WAIT_IRQL 0x4E
|
||||
#define KTHREAD_NEXT_PROCESSOR 0x40
|
||||
|
@ -615,3 +615,4 @@ Author:
|
|||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -227,6 +227,12 @@ typedef struct _KEY_FULL_INFORMATION
|
|||
WCHAR Class[1];
|
||||
} KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION;
|
||||
|
||||
typedef struct _KEY_NAME_INFORMATION
|
||||
{
|
||||
WCHAR Name[1];
|
||||
} KEY_NAME_INFORMATION, *PKEY_NAME_INFORMATION;
|
||||
|
||||
|
||||
typedef struct _KEY_NODE_INFORMATION
|
||||
{
|
||||
LARGE_INTEGER LastWriteTime;
|
||||
|
@ -519,3 +525,4 @@ typedef struct _CM_DISK_GEOMETRY_DEVICE_DATA
|
|||
#endif // _CMTYPES_H
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -737,9 +737,9 @@ typedef struct _SYSTEM_BASIC_INFORMATION
|
|||
ULONG LowestPhysicalPageNumber;
|
||||
ULONG HighestPhysicalPageNumber;
|
||||
ULONG AllocationGranularity;
|
||||
ULONG MinimumUserModeAddress;
|
||||
ULONG MaximumUserModeAddress;
|
||||
KAFFINITY ActiveProcessorsAffinityMask;
|
||||
ULONG_PTR MinimumUserModeAddress;
|
||||
ULONG_PTR MaximumUserModeAddress;
|
||||
ULONG_PTR ActiveProcessorsAffinityMask;
|
||||
CCHAR NumberOfProcessors;
|
||||
} SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION;
|
||||
|
||||
|
@ -1454,5 +1454,20 @@ typedef struct _SYSTEM_FIRMWARE_TABLE_INFORMATION
|
|||
ULONG TableBufferLength;
|
||||
UCHAR TableBuffer[1];
|
||||
} SYSTEM_FIRMWARE_TABLE_INFORMATION, *PSYSTEM_FIRMWARE_TABLE_INFORMATION;
|
||||
|
||||
//
|
||||
// Class 81
|
||||
//
|
||||
typedef struct _SYSTEM_MEMORY_LIST_INFORMATION
|
||||
{
|
||||
SIZE_T ZeroPageCount;
|
||||
SIZE_T FreePageCount;
|
||||
SIZE_T ModifiedPageCount;
|
||||
SIZE_T ModifiedNoWritePageCount;
|
||||
SIZE_T BadPageCount;
|
||||
SIZE_T PageCountByPriority[8];
|
||||
SIZE_T RepurposedPagesByPriority[8];
|
||||
} SYSTEM_MEMORY_LIST_INFORMATION, *PSYSTEM_MEMORY_LIST_INFORMATION;
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -15,7 +15,6 @@ Author:
|
|||
Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006
|
||||
|
||||
--*/
|
||||
|
||||
#ifndef _IOTYPES_H
|
||||
#define _IOTYPES_H
|
||||
|
||||
|
@ -353,6 +352,19 @@ typedef enum _PNP_DEVNODE_STATE
|
|||
|
||||
#ifdef NTOS_MODE_USER
|
||||
|
||||
//
|
||||
// I/O Status Block
|
||||
//
|
||||
typedef struct _IO_STATUS_BLOCK
|
||||
{
|
||||
union
|
||||
{
|
||||
NTSTATUS Status;
|
||||
PVOID Pointer;
|
||||
};
|
||||
ULONG_PTR Information;
|
||||
} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
|
||||
|
||||
//
|
||||
// File Information structures for NtQueryInformationFile
|
||||
//
|
||||
|
@ -560,6 +572,13 @@ typedef struct _FILE_DIRECTORY_INFORMATION
|
|||
WCHAR FileName[1];
|
||||
} FILE_DIRECTORY_INFORMATION, *PFILE_DIRECTORY_INFORMATION;
|
||||
|
||||
typedef struct _FILE_IO_COMPLETION_INFORMATION
|
||||
{
|
||||
PVOID KeyContext;
|
||||
PVOID ApcContext;
|
||||
IO_STATUS_BLOCK IoStatusBlock;
|
||||
} FILE_IO_COMPLETION_INFORMATION, *PFILE_IO_COMPLETION_INFORMATION;
|
||||
|
||||
//
|
||||
// File System Information structures for NtQueryInformationFile
|
||||
//
|
||||
|
@ -629,19 +648,6 @@ typedef struct _FILE_PIPE_PEEK_BUFFER
|
|||
CHAR Data[1];
|
||||
} FILE_PIPE_PEEK_BUFFER, *PFILE_PIPE_PEEK_BUFFER;
|
||||
|
||||
//
|
||||
// I/O Status Block
|
||||
//
|
||||
typedef struct _IO_STATUS_BLOCK
|
||||
{
|
||||
union
|
||||
{
|
||||
NTSTATUS Status;
|
||||
PVOID Pointer;
|
||||
};
|
||||
ULONG_PTR Information;
|
||||
} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
|
||||
|
||||
//
|
||||
// I/O Error Log Structures
|
||||
//
|
||||
|
|
|
@ -289,10 +289,43 @@ typedef enum _KTHREAD_STATE
|
|||
Transition,
|
||||
DeferredReady,
|
||||
#if (NTDDI_VERSION >= NTDDI_WS03)
|
||||
GateWait,
|
||||
GateWait
|
||||
#endif
|
||||
} KTHREAD_STATE, *PKTHREAD_STATE;
|
||||
|
||||
//
|
||||
// Kernel Object Types
|
||||
//
|
||||
typedef enum _KOBJECTS
|
||||
{
|
||||
EventNotificationObject = 0,
|
||||
EventSynchronizationObject = 1,
|
||||
MutantObject = 2,
|
||||
ProcessObject = 3,
|
||||
QueueObject = 4,
|
||||
SemaphoreObject = 5,
|
||||
ThreadObject = 6,
|
||||
GateObject = 7,
|
||||
TimerNotificationObject = 8,
|
||||
TimerSynchronizationObject = 9,
|
||||
Spare2Object = 10,
|
||||
Spare3Object = 11,
|
||||
Spare4Object = 12,
|
||||
Spare5Object = 13,
|
||||
Spare6Object = 14,
|
||||
Spare7Object = 15,
|
||||
Spare8Object = 16,
|
||||
Spare9Object = 17,
|
||||
ApcObject = 18,
|
||||
DpcObject = 19,
|
||||
DeviceQueueObject = 20,
|
||||
EventPairObject = 21,
|
||||
InterruptObject = 22,
|
||||
ProfileObject = 23,
|
||||
ThreadedDpcObject = 24,
|
||||
MaximumKernelObject = 25
|
||||
} KOBJECTS;
|
||||
|
||||
//
|
||||
// Adjust reasons
|
||||
//
|
||||
|
@ -667,39 +700,6 @@ typedef struct _KEXECUTE_OPTIONS
|
|||
UCHAR Spare:2;
|
||||
} KEXECUTE_OPTIONS, *PKEXECUTE_OPTIONS;
|
||||
|
||||
//
|
||||
// Kernel Object Types
|
||||
//
|
||||
typedef enum _KOBJECTS
|
||||
{
|
||||
EventNotificationObject = 0,
|
||||
EventSynchronizationObject = 1,
|
||||
MutantObject = 2,
|
||||
ProcessObject = 3,
|
||||
QueueObject = 4,
|
||||
SemaphoreObject = 5,
|
||||
ThreadObject = 6,
|
||||
GateObject = 7,
|
||||
TimerNotificationObject = 8,
|
||||
TimerSynchronizationObject = 9,
|
||||
Spare2Object = 10,
|
||||
Spare3Object = 11,
|
||||
Spare4Object = 12,
|
||||
Spare5Object = 13,
|
||||
Spare6Object = 14,
|
||||
Spare7Object = 15,
|
||||
Spare8Object = 16,
|
||||
Spare9Object = 17,
|
||||
ApcObject = 18,
|
||||
DpcObject = 19,
|
||||
DeviceQueueObject = 20,
|
||||
EventPairObject = 21,
|
||||
InterruptObject = 22,
|
||||
ProfileObject = 23,
|
||||
ThreadedDpcObject = 24,
|
||||
MaximumKernelObject = 25
|
||||
} KOBJECTS;
|
||||
|
||||
//
|
||||
// Kernel Thread (KTHREAD)
|
||||
//
|
||||
|
@ -709,6 +709,7 @@ typedef struct _KTHREAD
|
|||
#if (NTDDI_VERSION >= NTDDI_LONGHORN)
|
||||
ULONGLONG CycleTime;
|
||||
ULONG HighCycleTime;
|
||||
ULONGLONG QuantumTarget;
|
||||
#else
|
||||
LIST_ENTRY MutantListHead;
|
||||
#endif
|
||||
|
@ -741,8 +742,26 @@ typedef struct _KTHREAD
|
|||
PKWAIT_BLOCK WaitBlockList;
|
||||
PKGATE GateObject;
|
||||
};
|
||||
#if (NTDDI_VERSION >= NTDDI_LONGHORN)
|
||||
union
|
||||
{
|
||||
struct
|
||||
{
|
||||
ULONG KernelStackResident:1;
|
||||
ULONG ReadyTransition:1;
|
||||
ULONG ProcessReadyQueue:1;
|
||||
ULONG WaitNext:1;
|
||||
ULONG SystemAffinityActive:1;
|
||||
ULONG Alertable:1;
|
||||
ULONG GdiFlushActive:1;
|
||||
ULONG Reserved:25;
|
||||
};
|
||||
LONG MiscFlags;
|
||||
};
|
||||
#else
|
||||
BOOLEAN Alertable;
|
||||
BOOLEAN WaitNext;
|
||||
#endif
|
||||
UCHAR WaitReason;
|
||||
SCHAR Priority;
|
||||
BOOLEAN EnableStackSwap;
|
||||
|
@ -796,7 +815,11 @@ typedef struct _KTHREAD
|
|||
struct
|
||||
{
|
||||
UCHAR WaitBlockFill0[23];
|
||||
#if (NTDDI_VERSION >= NTDDI_LONGHORN)
|
||||
UCHAR IdealProcessor;
|
||||
#else
|
||||
BOOLEAN SystemAffinityActive;
|
||||
#endif
|
||||
};
|
||||
struct
|
||||
{
|
||||
|
@ -822,31 +845,22 @@ typedef struct _KTHREAD
|
|||
PVOID CallbackStack;
|
||||
PVOID ServiceTable;
|
||||
UCHAR ApcStateIndex;
|
||||
#if (NTDDI_VERSION < NTDDI_LONGHORN)
|
||||
UCHAR IdealProcessor;
|
||||
#endif
|
||||
BOOLEAN Preempted;
|
||||
#if (NTDDI_VERSION >= NTDDI_LONGHORN)
|
||||
BOOLEAN CalloutActive;
|
||||
#else
|
||||
BOOLEAN ProcessReadyQueue;
|
||||
#endif
|
||||
BOOLEAN KernelStackResident;
|
||||
#endif
|
||||
SCHAR BasePriority;
|
||||
SCHAR PriorityDecrement;
|
||||
CHAR Saturation;
|
||||
#if (NTDDI_VERSION >= NTDDI_LONGHORN)
|
||||
ULONG SystemCallNumber;
|
||||
union
|
||||
{
|
||||
struct
|
||||
{
|
||||
ULONG Reserved0:1;
|
||||
ULONG ReadyTransition:1;
|
||||
ULONG ProcessReadyQueue:1;
|
||||
ULONG Reserved2:1;
|
||||
ULONG Reserved3:28;
|
||||
};
|
||||
LONG MiscFlags;
|
||||
};
|
||||
ULONG Spare2;
|
||||
#endif
|
||||
KAFFINITY UserAffinity;
|
||||
struct _KPROCESS *Process;
|
||||
|
|
|
@ -47,6 +47,22 @@ Author:
|
|||
#define TAG(A, B, C, D) \
|
||||
(ULONG)(((A)<<0) + ((B)<<8) + ((C)<<16) + ((D)<<24))
|
||||
|
||||
//
|
||||
// PFN Identity Uses
|
||||
//
|
||||
#define MMPFNUSE_PROCESSPRIVATE 0
|
||||
#define MMPFNUSE_FILE 1
|
||||
#define MMPFNUSE_PAGEFILEMAPPED 2
|
||||
#define MMPFNUSE_PAGETABLE 3
|
||||
#define MMPFNUSE_PAGEDPOOL 4
|
||||
#define MMPFNUSE_NONPAGEDPOOL 5
|
||||
#define MMPFNUSE_SYSTEMPTE 6
|
||||
#define MMPFNUSE_SESSIONPRIVATE 7
|
||||
#define MMPFNUSE_METAFILE 8
|
||||
#define MMPFNUSE_AWEPAGE 9
|
||||
#define MMPFNUSE_DRIVERLOCKPAGE 10
|
||||
#define MMPFNUSE_KERNELSTACK 11
|
||||
|
||||
#ifndef NTOS_MODE_USER
|
||||
|
||||
//
|
||||
|
@ -105,6 +121,21 @@ typedef enum _POOL_TYPE
|
|||
} POOL_TYPE;
|
||||
#endif
|
||||
|
||||
//
|
||||
// Memory Manager Page Lists
|
||||
//
|
||||
typedef enum _MMLISTS
|
||||
{
|
||||
ZeroedPageList = 0,
|
||||
FreePageList = 1,
|
||||
StandbyPageList = 2,
|
||||
ModifiedPageList = 3,
|
||||
ModifiedNoWritePageList = 4,
|
||||
BadPageList = 5,
|
||||
ActiveAndValid = 6,
|
||||
TransitionPage = 7
|
||||
} MMLISTS;
|
||||
|
||||
//
|
||||
// Per Processor Non Paged Lookaside List IDs
|
||||
//
|
||||
|
@ -177,6 +208,68 @@ typedef struct _VM_COUNTERS_EX
|
|||
} VM_COUNTERS_EX, *PVM_COUNTERS_EX;
|
||||
#endif
|
||||
|
||||
//
|
||||
// Sub-Information Types for PFN Identity
|
||||
//
|
||||
typedef struct _MEMORY_FRAME_INFORMATION
|
||||
{
|
||||
ULONGLONG UseDescription:4;
|
||||
ULONGLONG ListDescription:3;
|
||||
ULONGLONG Reserved0:1;
|
||||
ULONGLONG Pinned:1;
|
||||
ULONGLONG DontUse:48;
|
||||
ULONGLONG Priority:3;
|
||||
ULONGLONG Reserved:4;
|
||||
} MEMORY_FRAME_INFORMATION, *PMEMORY_FRAME_INFORMATION;
|
||||
|
||||
typedef struct _FILEOFFSET_INFORMATION
|
||||
{
|
||||
ULONGLONG DontUse:9;
|
||||
ULONGLONG Offset:48;
|
||||
ULONGLONG Reserved:7;
|
||||
} FILEOFFSET_INFORMATION, *PFILEOFFSET_INFORMATION;
|
||||
|
||||
typedef struct _PAGEDIR_INFORMATION
|
||||
{
|
||||
ULONGLONG DontUse:9;
|
||||
ULONGLONG PageDirectoryBase:48;
|
||||
ULONGLONG Reserved:7;
|
||||
} PAGEDIR_INFORMATION, *PPAGEDIR_INFORMATION;
|
||||
|
||||
typedef struct _UNIQUE_PROCESS_INFORMATION
|
||||
{
|
||||
ULONGLONG DontUse:9;
|
||||
ULONGLONG UniqueProcessKey:48;
|
||||
ULONGLONG Reserved:7;
|
||||
} UNIQUE_PROCESS_INFORMATION, *PUNIQUE_PROCESS_INFORMATION;
|
||||
|
||||
//
|
||||
// PFN Identity Data Structure
|
||||
//
|
||||
typedef struct _MMPFN_IDENTITY
|
||||
{
|
||||
union
|
||||
{
|
||||
MEMORY_FRAME_INFORMATION e1;
|
||||
FILEOFFSET_INFORMATION e2;
|
||||
PAGEDIR_INFORMATION e3;
|
||||
UNIQUE_PROCESS_INFORMATION e4;
|
||||
} u1;
|
||||
SIZE_T PageFrameIndex;
|
||||
union
|
||||
{
|
||||
struct
|
||||
{
|
||||
ULONG Image:1;
|
||||
ULONG Mismatch:1;
|
||||
} e1;
|
||||
PVOID FileObject;
|
||||
PVOID UniqueFileObjectKey;
|
||||
PVOID ProtoPteAddress;
|
||||
PVOID VirtualAddress;
|
||||
} u2;
|
||||
} MMPFN_IDENTITY, *PMMPFN_IDENTITY;
|
||||
|
||||
//
|
||||
// List of Working Sets
|
||||
//
|
||||
|
|
|
@ -2416,6 +2416,21 @@ RtlSetBits(
|
|||
IN ULONG NumberToSet
|
||||
);
|
||||
|
||||
NTSYSAPI
|
||||
VOID
|
||||
NTAPI
|
||||
RtlSetAllBits(
|
||||
PRTL_BITMAP BitMapHeader
|
||||
);
|
||||
|
||||
NTSYSAPI
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
RtlTestBit(
|
||||
PRTL_BITMAP BitMapHeader,
|
||||
ULONG BitNumber
|
||||
);
|
||||
|
||||
//
|
||||
// Timer Functions
|
||||
//
|
||||
|
|
|
@ -225,6 +225,11 @@ C_ASSERT(HEAP_CREATE_VALID_MASK == 0x0007F0FF);
|
|||
#define RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE 1
|
||||
#define RTL_DUPLICATE_UNICODE_STRING_ALLOCATE_NULL_STRING 2
|
||||
|
||||
//
|
||||
// RtlFindCharInUnicodeString Flags
|
||||
//
|
||||
#define RTL_FIND_CHAR_IN_UNICODE_STRING_CASE_INSENSITIVE 4
|
||||
|
||||
//
|
||||
// Codepages
|
||||
//
|
||||
|
|
|
@ -249,13 +249,6 @@ LdrLoadDll(
|
|||
OUT PVOID *BaseAddress OPTIONAL
|
||||
);
|
||||
|
||||
PVOID
|
||||
NTAPI
|
||||
RtlPcToFileHeader(
|
||||
IN PVOID PcValue,
|
||||
PVOID* BaseOfImage
|
||||
);
|
||||
|
||||
PIMAGE_BASE_RELOCATION
|
||||
NTAPI
|
||||
LdrProcessRelocationBlock(
|
||||
|
|
|
@ -2900,6 +2900,14 @@ typedef struct _RTL_CRITICAL_SECTION {
|
|||
} RTL_CRITICAL_SECTION,*PRTL_CRITICAL_SECTION;
|
||||
#endif
|
||||
|
||||
NTSYSAPI
|
||||
PVOID
|
||||
NTAPI
|
||||
RtlPcToFileHeader(
|
||||
IN PVOID PcValue,
|
||||
PVOID* BaseOfImage
|
||||
);
|
||||
|
||||
NTSYSAPI
|
||||
VOID
|
||||
NTAPI
|
||||
|
|
|
@ -727,7 +727,7 @@ CheckNext:
|
|||
mov [ebx+KPCR_CURRENT_THREAD], esi
|
||||
|
||||
/* Set the thread as running */
|
||||
mov byte ptr [esi+KTHREAD_STATE], Running
|
||||
mov byte ptr [esi+KTHREAD_STATE_], Running
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
/* Disable the idle scheduler and release the PRCB lock */
|
||||
|
@ -752,7 +752,7 @@ SameThread:
|
|||
/* Clear the next thread, and put the thready as ready after lock release */
|
||||
and dword ptr [ebx+KPCR_PRCB_NEXT_THREAD], 0
|
||||
and dword ptr [ebx+KPCR_PRCB_PRCB_LOCK], 0
|
||||
and byte ptr [edi+KTHREAD_STATE], Ready
|
||||
and byte ptr [edi+KTHREAD_STATE_], Ready
|
||||
jmp MainLoop
|
||||
|
||||
NoNextThread:
|
||||
|
|
|
@ -2387,7 +2387,7 @@ CheckQuantum:
|
|||
|
||||
/* Set us as the current running thread */
|
||||
mov [ebx+KPCR_CURRENT_THREAD], esi
|
||||
mov byte ptr [esi+KTHREAD_STATE], Running
|
||||
mov byte ptr [esi+KTHREAD_STATE_], Running
|
||||
mov byte ptr [edi+KTHREAD_WAIT_REASON], WrDispatchInt
|
||||
|
||||
/* Put thread in ECX and get the PRCB in EDX */
|
||||
|
|
Loading…
Reference in a new issue