More NDK Fixes

svn path=/trunk/; revision=16075
This commit is contained in:
Alex Ionescu 2005-06-19 07:03:18 +00:00
parent a6c04adbb2
commit 9d04f9a976
7 changed files with 263 additions and 25 deletions

View file

@ -14,6 +14,8 @@
/* EXPORTED DATA *************************************************************/ /* EXPORTED DATA *************************************************************/
extern POBJECT_TYPE NTOSAPI ExIoCompletionType; extern POBJECT_TYPE NTOSAPI ExIoCompletionType;
extern NTOSAPI POBJECT_TYPE ExMutantObjectType;
extern NTOSAPI POBJECT_TYPE ExTimerType;
/* CONSTANTS *****************************************************************/ /* CONSTANTS *****************************************************************/
@ -45,5 +47,59 @@ typedef enum _HARDERROR_RESPONSE
/* TYPES *********************************************************************/ /* TYPES *********************************************************************/
typedef struct _EX_QUEUE_WORKER_INFO
{
UCHAR QueueDisabled:1;
UCHAR MakeThreadsAsNecessary:1;
UCHAR WaitMode:1;
ULONG WorkerCount:29;
} EX_QUEUE_WORKER_INFO, *PEX_QUEUE_WORKER_INFO;
typedef struct _EX_WORK_QUEUE
{
KQUEUE WorkerQueue;
ULONG DynamicThreadCount;
ULONG WorkItemsProcessed;
ULONG WorkItemsProcessedLastPass;
ULONG QueueDepthLastPass;
EX_QUEUE_WORKER_INFO Info;
} EX_WORK_QUEUE, *PEX_WORK_QUEUE;
typedef struct _HANDLE_TABLE_ENTRY_INFO
{
ULONG AuditMask;
} HANDLE_TABLE_ENTRY_INFO, *PHANDLE_TABLE_ENTRY_INFO;
typedef struct _HANDLE_TABLE_ENTRY
{
union
{
PVOID Object;
ULONG_PTR ObAttributes;
PHANDLE_TABLE_ENTRY_INFO InfoTable;
ULONG_PTR Value;
} u1;
union
{
ULONG GrantedAccess;
USHORT GrantedAccessIndex;
LONG NextFreeTableEntry;
} u2;
} HANDLE_TABLE_ENTRY, *PHANDLE_TABLE_ENTRY;
typedef struct _HANDLE_TABLE
{
ULONG Flags;
LONG HandleCount;
PHANDLE_TABLE_ENTRY **Table;
PEPROCESS QuotaProcess;
HANDLE UniqueProcessId;
LONG FirstFreeTableEntry;
LONG NextIndexNeedingPool;
ERESOURCE HandleTableLock;
LIST_ENTRY HandleTableList;
KEVENT HandleContentionEvent;
} HANDLE_TABLE;
#endif #endif

View file

@ -10,7 +10,7 @@
#define _HALTYPES_H #define _HALTYPES_H
/* DEPENDENCIES **************************************************************/ /* DEPENDENCIES **************************************************************/
#include <ddk/ntdddisk.h> //#include <ddk/ntdddisk.h>
/* EXPORTED DATA *************************************************************/ /* EXPORTED DATA *************************************************************/
extern ULONG NTOSAPI KdComPortInUse; extern ULONG NTOSAPI KdComPortInUse;
@ -48,7 +48,7 @@ typedef struct _LOADER_MODULE
ULONG Reserved; ULONG Reserved;
} LOADER_MODULE, *PLOADER_MODULE; } LOADER_MODULE, *PLOADER_MODULE;
typedef struct _LOADER_PARAMETER_BLOCK typedef struct _LOADER_PARAMETER_BLOCK
{ {
ULONG Flags; ULONG Flags;
ULONG MemLower; ULONG MemLower;
@ -64,6 +64,9 @@ typedef struct _LOADER_PARAMETER_BLOCK
ULONG DrivesAddr; ULONG DrivesAddr;
ULONG ConfigTable; ULONG ConfigTable;
ULONG BootLoaderName; ULONG BootLoaderName;
ULONG PageDirectoryStart;
ULONG PageDirectoryEnd;
ULONG KernelBase;
} LOADER_PARAMETER_BLOCK, *PLOADER_PARAMETER_BLOCK; } LOADER_PARAMETER_BLOCK, *PLOADER_PARAMETER_BLOCK;
#endif #endif

View file

@ -123,23 +123,23 @@ KeSetEventBoostPriority(
IN PKTHREAD *Thread OPTIONAL IN PKTHREAD *Thread OPTIONAL
); );
PVOID PCONFIGURATION_COMPONENT_DATA
STDCALL
KeFindConfigurationEntry(
IN PVOID Unknown,
IN ULONG Class,
IN CONFIGURATION_TYPE Type,
IN PULONG RegKey
);
PVOID
STDCALL STDCALL
KeFindConfigurationNextEntry( KeFindConfigurationNextEntry(
IN PVOID Unknown, IN PCONFIGURATION_COMPONENT_DATA Child,
IN ULONG Class, IN CONFIGURATION_CLASS Class,
IN CONFIGURATION_TYPE Type, IN CONFIGURATION_TYPE Type,
IN PULONG RegKey, IN PULONG ComponentKey OPTIONAL,
IN PVOID *NextLink IN PCONFIGURATION_COMPONENT_DATA *NextLink
);
PCONFIGURATION_COMPONENT_DATA
STDCALL
KeFindConfigurationEntry(
IN PCONFIGURATION_COMPONENT_DATA Child,
IN CONFIGURATION_CLASS Class,
IN CONFIGURATION_TYPE Type,
IN PULONG ComponentKey OPTIONAL
); );
VOID VOID

View file

@ -11,11 +11,22 @@
/* DEPENDENCIES **************************************************************/ /* DEPENDENCIES **************************************************************/
#include "haltypes.h" #include "haltypes.h"
#include <arc/arc.h>
/* CONSTANTS *****************************************************************/ /* CONSTANTS *****************************************************************/
#define SSDT_MAX_ENTRIES 4 #define SSDT_MAX_ENTRIES 4
#define PROCESSOR_FEATURE_MAX 64 #define PROCESSOR_FEATURE_MAX 64
#define CONTEXT_DEBUGGER (CONTEXT_FULL | CONTEXT_FLOATING_POINT)
#define THREAD_WAIT_OBJECTS 4
/* FIXME: Create an ASM Offset File */
#define KTSS_ESP0 (0x4)
#define KTSS_CR3 (0x1C)
#define KTSS_EFLAGS (0x24)
#define KTSS_IOMAPBASE (0x66)
/* EXPORTED DATA *************************************************************/ /* EXPORTED DATA *************************************************************/
extern CHAR NTOSAPI KeNumberProcessors; extern CHAR NTOSAPI KeNumberProcessors;
extern LOADER_PARAMETER_BLOCK NTOSAPI KeLoaderBlock; extern LOADER_PARAMETER_BLOCK NTOSAPI KeLoaderBlock;
@ -32,6 +43,15 @@ extern SSDT_ENTRY NTOSAPI KeServiceDescriptorTableShadow[SSDT_MAX_ENTRIES];
/* TYPES *********************************************************************/ /* TYPES *********************************************************************/
typedef struct _CONFIGURATION_COMPONENT_DATA
{
struct _CONFIGURATION_COMPONENT_DATA *Parent;
struct _CONFIGURATION_COMPONENT_DATA *Child;
struct _CONFIGURATION_COMPONENT_DATA *Sibling;
CONFIGURATION_COMPONENT Component;
} CONFIGURATION_COMPONENT_DATA, *PCONFIGURATION_COMPONENT_DATA;
typedef enum _KAPC_ENVIRONMENT typedef enum _KAPC_ENVIRONMENT
{ {
OriginalApcEnvironment, OriginalApcEnvironment,
@ -120,6 +140,99 @@ typedef struct _LDT_ENTRY {
} HighWord; } HighWord;
} LDT_ENTRY, *PLDT_ENTRY, *LPLDT_ENTRY; } LDT_ENTRY, *PLDT_ENTRY, *LPLDT_ENTRY;
#include <pshpack1.h>
typedef struct _KTSSNOIOPM
{
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;
/* no interrupt redirection map */
UCHAR IoBitmap[1];
} KTSSNOIOPM;
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;
/* no interrupt redirection map */
UCHAR IoBitmap[8193];
} KTSS;
#include <poppack.h>
/* i386 Doesn't have Exception Frames */ /* i386 Doesn't have Exception Frames */
typedef struct _KEXCEPTION_FRAME { typedef struct _KEXCEPTION_FRAME {
@ -157,6 +270,43 @@ typedef struct _KEVENT_PAIR
KEVENT HighEvent; KEVENT HighEvent;
} KEVENT_PAIR, *PKEVENT_PAIR; } KEVENT_PAIR, *PKEVENT_PAIR;
/* FIXME: Add KOBJECTS Here */ 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;
typedef enum _KTHREAD_STATE {
Initialized,
Ready,
Running,
Standby,
Terminated,
Waiting,
Transition,
DeferredReady,
} KTHREAD_STATE, *PKTHREAD_STATE;
#endif #endif

View file

@ -21,6 +21,9 @@
#define PEB_BASE (0x7FFDF000) #define PEB_BASE (0x7FFDF000)
#define EXCEPTION_CONTINUE_SEARCH 0
#define EXCEPTION_EXECUTE_HANDLER 1
#define EXCEPTION_UNWINDING 0x02 #define EXCEPTION_UNWINDING 0x02
#define EXCEPTION_EXIT_UNWIND 0x04 #define EXCEPTION_EXIT_UNWIND 0x04
#define EXCEPTION_STACK_INVALID 0x8 #define EXCEPTION_STACK_INVALID 0x8
@ -93,7 +96,7 @@ typedef struct _RTL_MESSAGE_RESOURCE_ENTRY
{ {
USHORT Length; USHORT Length;
USHORT Flags; USHORT Flags;
UCHAR Text[1]; CHAR Text[1];
} RTL_MESSAGE_RESOURCE_ENTRY, *PRTL_MESSAGE_RESOURCE_ENTRY; } RTL_MESSAGE_RESOURCE_ENTRY, *PRTL_MESSAGE_RESOURCE_ENTRY;
typedef struct _RTL_MESSAGE_RESOURCE_BLOCK typedef struct _RTL_MESSAGE_RESOURCE_BLOCK

View file

@ -2492,6 +2492,18 @@ ZwResumeThread(
OUT PULONG SuspendCount OUT PULONG SuspendCount
); );
NTSTATUS
STDCALL
NtResumeProcess(
IN HANDLE ProcessHandle
);
NTSTATUS
STDCALL
ZwResumeProcess(
IN HANDLE ProcessHandle
);
NTSTATUS NTSTATUS
STDCALL STDCALL
NtSaveKey( NtSaveKey(
@ -3246,6 +3258,18 @@ ZwSuspendThread(
IN PULONG PreviousSuspendCount IN PULONG PreviousSuspendCount
); );
NTSTATUS
STDCALL
NtSuspendProcess(
IN HANDLE ProcessHandle
);
NTSTATUS
STDCALL
ZwSuspendProcess(
IN HANDLE ProcessHandle
);
NTSTATUS NTSTATUS
STDCALL STDCALL
NtTerminateThread( NtTerminateThread(
@ -3482,7 +3506,7 @@ NtCreateThread(
NTSTATUS NTSTATUS
STDCALL STDCALL
NtDelayExecution( NtDelayExecution(
IN ULONG Alertable, IN BOOLEAN Alertable,
IN LARGE_INTEGER *Interval IN LARGE_INTEGER *Interval
); );
@ -3603,12 +3627,12 @@ NtQueryVirtualMemory(
NTSTATUS NTSTATUS
STDCALL STDCALL
NtRaiseHardError( NtRaiseHardError(
IN NTSTATUS Status, IN NTSTATUS ErrorStatus,
ULONG Unknown2, IN ULONG NumberOfParameters,
ULONG Unknown3, IN PUNICODE_STRING UnicodeStringParameterMask OPTIONAL,
ULONG Unknown4, IN PVOID *Parameters,
ULONG Unknown5, IN HARDERROR_RESPONSE_OPTION ResponseOption,
ULONG Unknown6 OUT PHARDERROR_RESPONSE Response
); );
NTSTATUS NTSTATUS

View file

@ -17,6 +17,8 @@
/* CONSTANTS *****************************************************************/ /* CONSTANTS *****************************************************************/
#define MAX_BUS_NAME 24 #define MAX_BUS_NAME 24
#define EVENT_PAIR_ALL_ACCESS (0x1F0000L)
/* ENUMERATIONS **************************************************************/ /* ENUMERATIONS **************************************************************/
typedef enum _PLUGPLAY_BUS_CLASS typedef enum _PLUGPLAY_BUS_CLASS