- 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
-Complete list of NDK Fixmes before 1.0 Release (Nov 27th 2005)\r
---------------------------------------------------------------\r
-______________________________________________________________________________________\r
-[CRITICAL] - Breaking compatibility with official structures.\r
-|obtypes.h - Object callbacks are ReactOS only definitions. IFDEF-OUT ADDREAL\r
-|haltypes.h - Loader Parameter Block is ReactOS Version, not NT. IFDEF-OUT ADDREAL\r
-|\r
-[MAJOR] - Using incorrect, missing, or invalid names or definitions.\r
-|extypes.h - Classes 13, 20, 30, 31, 49, 51, 52, 54+ are undefined. WONTFIX\r
-|_____________________________________________________________________________________\r
-\r
-\r
List of ReactOS Applications compiling with the NDK\r
(verify, fix, and optimize their usage)\r
--------------------------------------------------------------\r
//
// Display Functions
//
+NTHALAPI
BOOLEAN
NTAPI
HalQueryDisplayOwnership(
VOID
);
+NTHALAPI
VOID
NTAPI
HalDisplayString(
IN PCHAR String
);
+NTHALAPI
BOOLEAN
NTAPI
HalQueryDisplayOwnership(
VOID
);
+NTHALAPI
VOID
NTAPI
HalReleaseDisplayOwnership(
//
// Initialization Functions
//
+NTHALAPI
BOOLEAN
NTAPI
HalAllProcessorsStarted(
VOID
);
+NTHALAPI
VOID
NTAPI
HalInitializeProcessor(
PVOID ProcessorStack
);
+NTHALAPI
BOOLEAN
NTAPI
HalInitSystem(
PLOADER_PARAMETER_BLOCK LoaderBlock
);
+NTHALAPI
VOID
NTAPI
HalReturnToFirmware(
FIRMWARE_REENTRY Action
);
+NTHALAPI
BOOLEAN
NTAPI
HalStartNextProcessor(
//
// Interrupt Functions
//
+NTHALAPI
BOOLEAN
NTAPI
HalBeginSystemInterrupt(
PKIRQL OldIrql
);
+NTHALAPI
BOOLEAN
NTAPI
HalDisableSystemInterrupt(
KIRQL Irql
);
+NTHALAPI
BOOLEAN
NTAPI
HalEnableSystemInterrupt(
KINTERRUPT_MODE InterruptMode
);
+NTHALAPI
VOID
NTAPI
HalEndSystemInterrupt(
ULONG Vector
);
+NTHALAPI
BOOLEAN
NTAPI
HalGetEnvironmentVariable(
USHORT ValueLength
);
+NTHALAPI
VOID
NTAPI
HalReportResourceUsage(
VOID
);
+NTHALAPI
VOID
FASTCALL
HalRequestSoftwareInterrupt(
KIRQL SoftwareInterruptRequested
);
+NTHALAPI
VOID
NTAPI
HalRequestIpi(
//
// I/O Functions
//
+NTHALAPI
VOID
NTAPI
IoAssignDriveLetters(
//
// Environment Functions
//
+NTHALAPI
BOOLEAN
NTAPI
HalSetEnvironmentVariable(
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
{
ULONG String;
ULONG Reserved;
} LOADER_MODULE, *PLOADER_MODULE;
-
typedef struct _LOADER_PARAMETER_BLOCK
{
ULONG Flags;
ULONG PageDirectoryEnd;
ULONG KernelBase;
} LOADER_PARAMETER_BLOCK, *PLOADER_PARAMETER_BLOCK;
+#endif
//
// Kernel Exports
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)(
struct _OBJECT_ATTRIBUTES* ObjectAttributes
);
+#endif
+
#else
//