- Add the real NT Object Callbacks and #ifdef out the ReactOS ones.

- Add the real NT Loader Parameter Block structures & friends and #ifdef out the ReactOS ones (thanks to Filip Navara for some work on these).

svn path=/trunk/; revision=19697
This commit is contained in:
Alex Ionescu 2005-11-27 20:18:33 +00:00
parent f45815ea12
commit 85320084c1
4 changed files with 218 additions and 16 deletions

View file

@ -1,15 +1,3 @@
Complete list of NDK Fixmes before 1.0 Release (Nov 27th 2005)
--------------------------------------------------------------
______________________________________________________________________________________
[CRITICAL] - Breaking compatibility with official structures.
|obtypes.h - Object callbacks are ReactOS only definitions. IFDEF-OUT ADDREAL
|haltypes.h - Loader Parameter Block is ReactOS Version, not NT. IFDEF-OUT ADDREAL
|
[MAJOR] - Using incorrect, missing, or invalid names or definitions.
|extypes.h - Classes 13, 20, 30, 31, 49, 51, 52, 54+ are undefined. WONTFIX
|_____________________________________________________________________________________
List of ReactOS Applications compiling with the NDK
(verify, fix, and optimize their usage)
--------------------------------------------------------------

View file

@ -30,24 +30,28 @@ Author:
//
// Display Functions
//
NTHALAPI
BOOLEAN
NTAPI
HalQueryDisplayOwnership(
VOID
);
NTHALAPI
VOID
NTAPI
HalDisplayString(
IN PCHAR String
);
NTHALAPI
BOOLEAN
NTAPI
HalQueryDisplayOwnership(
VOID
);
NTHALAPI
VOID
NTAPI
HalReleaseDisplayOwnership(
@ -57,12 +61,14 @@ HalReleaseDisplayOwnership(
//
// Initialization Functions
//
NTHALAPI
BOOLEAN
NTAPI
HalAllProcessorsStarted(
VOID
);
NTHALAPI
VOID
NTAPI
HalInitializeProcessor(
@ -70,6 +76,7 @@ HalInitializeProcessor(
PVOID ProcessorStack
);
NTHALAPI
BOOLEAN
NTAPI
HalInitSystem(
@ -77,12 +84,14 @@ HalInitSystem(
PLOADER_PARAMETER_BLOCK LoaderBlock
);
NTHALAPI
VOID
NTAPI
HalReturnToFirmware(
FIRMWARE_REENTRY Action
);
NTHALAPI
BOOLEAN
NTAPI
HalStartNextProcessor(
@ -93,6 +102,7 @@ HalStartNextProcessor(
//
// Interrupt Functions
//
NTHALAPI
BOOLEAN
NTAPI
HalBeginSystemInterrupt(
@ -101,6 +111,7 @@ HalBeginSystemInterrupt(
PKIRQL OldIrql
);
NTHALAPI
BOOLEAN
NTAPI
HalDisableSystemInterrupt(
@ -108,6 +119,7 @@ HalDisableSystemInterrupt(
KIRQL Irql
);
NTHALAPI
BOOLEAN
NTAPI
HalEnableSystemInterrupt(
@ -116,6 +128,7 @@ HalEnableSystemInterrupt(
KINTERRUPT_MODE InterruptMode
);
NTHALAPI
VOID
NTAPI
HalEndSystemInterrupt(
@ -123,6 +136,7 @@ HalEndSystemInterrupt(
ULONG Vector
);
NTHALAPI
BOOLEAN
NTAPI
HalGetEnvironmentVariable(
@ -131,18 +145,21 @@ HalGetEnvironmentVariable(
USHORT ValueLength
);
NTHALAPI
VOID
NTAPI
HalReportResourceUsage(
VOID
);
NTHALAPI
VOID
FASTCALL
HalRequestSoftwareInterrupt(
KIRQL SoftwareInterruptRequested
);
NTHALAPI
VOID
NTAPI
HalRequestIpi(
@ -152,6 +169,7 @@ HalRequestIpi(
//
// I/O Functions
//
NTHALAPI
VOID
NTAPI
IoAssignDriveLetters(
@ -164,6 +182,7 @@ IoAssignDriveLetters(
//
// Environment Functions
//
NTHALAPI
BOOLEAN
NTAPI
HalSetEnvironmentVariable(

View file

@ -67,8 +67,124 @@ typedef struct _HAL_PRIVATE_DISPATCH
ULONG Version;
} HAL_PRIVATE_DISPATCH, *PHAL_PRIVATE_DISPATCH;
#ifndef _REACTOS_
//
// Loader Parameter Block Structures (FIXME)
// NLS Data Block
//
typedef struct _NLS_TABLE_DATA
{
PVOID AnsiCodePageData;
PVOID OemCodePageData;
PVOID UnicodeCodePageData;
} NLS_TABLE_DATA, *PNLS_TABLE_DATA;
//
// Subsystem Specific Loader Blocks
//
typedef struct _PROFILE_PARAMETER_BLOCK
{
USHORT DockData0;
USHORT DockData1;
USHORT DockData2;
USHORT DockData3;
ULONG DockData3;
ULONG DockData4;
} PROFILE_PARAMETER_BLOCK, *PPROFILE_PARAMETER_BLOCK;
typedef struct _HEADLESS_LOADER_BLOCK
{
UCHAR Unknown[0xC];
} HEADLESS_LOADER_BLOCK, *PHEADLESS_LOADER_BLOCK;
typedef struct _NETWORK_LOADER_BLOCK
{
UCHAR Unknown[0xC];
} NETWORK_LOADER_BLOCK, *PNETWORK_LOADER_BLOCK;
//
// Extended Loader Parameter Block
//
typedef struct _LOADER_PARAMETER_EXTENSION
{
ULONG Size;
PROFILE_PARAMETER_BLOCK ProfileParameterBlock;
ULONG MajorVersion;
ULONG MinorVersion;
PVOID SpecialConfigInfFile;
ULONG SpecialConfigInfSize;
PVOID TriageDumpData;
//
// NT 5.1
//
ULONG NumberOfPages;
PHEADLESS_LOADER_BLOCK HeadlessLoaderBlock;
PVOID Unknown1;
PVOID PrefetchDatabaseBase;
ULONG PrefetchDatabaseSize;
PNETWORK_LOADER_BLOCK NetworkLoaderBlock;
//
// NT 5.2+
//
PVOID Reserved[2];
LIST_ENTRY FirmwareListEntry;
PVOID AcpiTableBase;
ULONG AcpiTableSize;
} LOADER_PARAMETER_EXTENSION, *PLOADER_PARAMETER_EXTENSION;
//
// Architecture specific Loader Parameter Blocks
//
typedef struct _I386_LOADER_BLOCK
{
PVOID CommonDataArea;
ULONG MachineType;
ULONG Reserved;
} I386_LOADER_BLOCK, *PI386_LOADER_BLOCK;
//
// Setup Loader Parameter Block
//
typedef struct _SETUP_LOADER_BLOCK
{
ULONG Unknown[139];
ULONG Flags;
} SETUP_LOADER_BLOCK, *PSETUP_LOADER_BLOCK;
//
// Loader Parameter Block
//
typedef struct _LOADER_PARAMETER_BLOCK
{
LIST_ENTRY LoadOrderListHead;
LIST_ENTRY MemoryDescriptorListHead;
LIST_ENTRY DriverList;
PVOID KernelStack;
PVOID Prcb;
PVOID Process;
PVOID Thread;
ULONG RegistryLength;
PVOID RegistryBase;
PCONFIGURATION_COMPONENT_DATA ConfigurationRoot;
LPSTR ArcBootDeviceName;
LPSTR ArcHalDeviceName;
LPSTR SystemRoot;
LPSTR BootRoot;
LPSTR CommandLine;
PNLS_TABLE_DATA NlsTables;
PARC_DISK_INFORMATION ArcDevices;
PVOID OEMFont;
PSETUP_LOADER_BLOCK SetupLdrBlock;
PLOADER_PARAMETER_EXTENSION LpbExtension;
union
{
I386_LOADER_BLOCK I386;
} u;
} LOADER_PARAMETER_BLOCK, *PLOADER_PARAMETER_BLOCK;
#else
//
// FIXME: ReactOS ONLY
//
typedef struct _LOADER_MODULE
{
@ -77,7 +193,6 @@ typedef struct _LOADER_MODULE
ULONG String;
ULONG Reserved;
} LOADER_MODULE, *PLOADER_MODULE;
typedef struct _LOADER_PARAMETER_BLOCK
{
ULONG Flags;
@ -98,6 +213,7 @@ typedef struct _LOADER_PARAMETER_BLOCK
ULONG PageDirectoryEnd;
ULONG KernelBase;
} LOADER_PARAMETER_BLOCK, *PLOADER_PARAMETER_BLOCK;
#endif
//
// Kernel Exports

View file

@ -117,12 +117,89 @@ typedef enum _OBJECT_INFORMATION_CLASS
ObjectHandleInformation
} OBJECT_INFORMATION_CLASS;
/* FUNCTION TYPES ************************************************************/
//
// Dump Control Structure for Object Debugging
//
typedef struct _OBJECT_DUMP_CONTROL
{
PVOID Stream;
ULONG Detail;
} OBJECT_DUMP_CONTROL, *POBJECT_DUMP_CONTROL;
#ifndef NTOS_MODE_USER
#ifndef _REACTOS_
//
// FIXME: Object Callbacks
// Object Type Callbacks
//
typedef VOID
(NTAPI *OB_DUMP_METHOD)(
IN PVOID Object,
IN POB_DUMP_CONTROL Control OPTIONAL
);
typedef NTSTATUS
(NTAPI *OB_OPEN_METHOD)(
IN OB_OPEN_REASON Reason,
IN PEPROCESS Process OPTIONAL,
IN PVOID ObjectBody,
IN ACCESS_MASK GrantedAccess,
IN ULONG HandleCount
);
typedef VOID
(NTAPI *OB_CLOSE_METHOD)(
IN PEPROCESS Process OPTIONAL,
IN PVOID Object,
IN ACCESS_MASK GrantedAccess,
IN ULONG ProcessHandleCount,
IN ULONG SystemHandleCount
);
typedef VOID
(NTAPI *OB_DELETE_METHOD)(
IN PVOID Object
);
typedef NTSTATUS
(NTAPI *OB_PARSE_METHOD)(
IN PVOID ParseObject,
IN PVOID ObjectType,
IN OUT PACCESS_STATE AccessState,
IN KPROCESSOR_MODE AccessMode,
IN ULONG Attributes,
IN OUT PUNICODE_STRING CompleteName,
IN OUT PUNICODE_STRING RemainingName,
IN OUT PVOID Context OPTIONAL,
IN PSECURITY_QUALITY_OF_SERVICE SecurityQos OPTIONAL,
OUT PVOID *Object
);
typedef NTSTATUS
(NTAPI *OB_SECURITY_METHOD)(
IN PVOID Object,
IN SECURITY_OPERATION_CODE OperationType,
IN SECURITY_INFORMATION SecurityInformation,
IN PSECURITY_DESCRIPTOR SecurityDescriptor,
IN OUT PULONG CapturedLength,
IN OUT PSECURITY_DESCRIPTOR *ObjectSecurityDescriptor,
IN POOL_TYPE PoolType,
IN PGENERIC_MAPPING GenericMapping
);
typedef NTSTATUS
(NTAPI *OB_QUERYNAME_METHOD)(
IN PVOID Object,
IN BOOLEAN HasObjectName,
OUT POBJECT_NAME_INFORMATION ObjectNameInfo,
IN ULONG Length,
OUT PULONG ReturnLength
);
#else
//
// FIXME: ReactOS ONLY Object Callbacks
//
typedef NTSTATUS
(NTAPI *OB_OPEN_METHOD)(
@ -198,6 +275,8 @@ typedef NTSTATUS
struct _OBJECT_ATTRIBUTES* ObjectAttributes
);
#endif
#else
//