- 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).
Modified: trunk/reactos/include/ndk/fixmes.txt
Modified: trunk/reactos/include/ndk/halfuncs.h
Modified: trunk/reactos/include/ndk/haltypes.h
Modified: trunk/reactos/include/ndk/obtypes.h

Modified: trunk/reactos/include/ndk/fixmes.txt
--- trunk/reactos/include/ndk/fixmes.txt	2005-11-27 20:01:57 UTC (rev 19696)
+++ trunk/reactos/include/ndk/fixmes.txt	2005-11-27 20:18:33 UTC (rev 19697)
@@ -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)
 --------------------------------------------------------------

Modified: trunk/reactos/include/ndk/halfuncs.h
--- trunk/reactos/include/ndk/halfuncs.h	2005-11-27 20:01:57 UTC (rev 19696)
+++ trunk/reactos/include/ndk/halfuncs.h	2005-11-27 20:18:33 UTC (rev 19697)
@@ -30,24 +30,28 @@
 //
 // 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 @@
 //
 // Initialization Functions
 //
+NTHALAPI
 BOOLEAN
 NTAPI
 HalAllProcessorsStarted(
     VOID
 );
 
+NTHALAPI
 VOID
 NTAPI
 HalInitializeProcessor(
@@ -70,6 +76,7 @@
     PVOID ProcessorStack
 );
 
+NTHALAPI
 BOOLEAN
 NTAPI
 HalInitSystem(
@@ -77,12 +84,14 @@
     PLOADER_PARAMETER_BLOCK LoaderBlock
 );
 
+NTHALAPI
 VOID
 NTAPI
 HalReturnToFirmware(
     FIRMWARE_REENTRY Action
 );
 
+NTHALAPI
 BOOLEAN
 NTAPI
 HalStartNextProcessor(
@@ -93,6 +102,7 @@
 //
 // Interrupt Functions
 //
+NTHALAPI
 BOOLEAN
 NTAPI
 HalBeginSystemInterrupt(
@@ -101,6 +111,7 @@
     PKIRQL OldIrql
 );
 
+NTHALAPI
 BOOLEAN
 NTAPI
 HalDisableSystemInterrupt(
@@ -108,6 +119,7 @@
     KIRQL Irql
 );
 
+NTHALAPI
 BOOLEAN
 NTAPI
 HalEnableSystemInterrupt(
@@ -116,6 +128,7 @@
     KINTERRUPT_MODE InterruptMode
 );
 
+NTHALAPI
 VOID
 NTAPI
 HalEndSystemInterrupt(
@@ -123,6 +136,7 @@
     ULONG Vector
 );
 
+NTHALAPI
 BOOLEAN
 NTAPI
 HalGetEnvironmentVariable(
@@ -131,18 +145,21 @@
     USHORT ValueLength
 );
 
+NTHALAPI
 VOID
 NTAPI
 HalReportResourceUsage(
     VOID
 );
 
+NTHALAPI
 VOID
 FASTCALL
 HalRequestSoftwareInterrupt(
     KIRQL SoftwareInterruptRequested
 );
 
+NTHALAPI
 VOID
 NTAPI
 HalRequestIpi(
@@ -152,6 +169,7 @@
 //
 // I/O Functions
 //
+NTHALAPI
 VOID
 NTAPI
 IoAssignDriveLetters(
@@ -164,6 +182,7 @@
 //
 // Environment Functions
 //
+NTHALAPI
 BOOLEAN
 NTAPI
 HalSetEnvironmentVariable(

Modified: trunk/reactos/include/ndk/haltypes.h
--- trunk/reactos/include/ndk/haltypes.h	2005-11-27 20:01:57 UTC (rev 19696)
+++ trunk/reactos/include/ndk/haltypes.h	2005-11-27 20:18:33 UTC (rev 19697)
@@ -67,9 +67,125 @@
     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 ModStart;
@@ -77,7 +193,6 @@
     ULONG String;
     ULONG Reserved;
 } LOADER_MODULE, *PLOADER_MODULE;
-
 typedef struct _LOADER_PARAMETER_BLOCK
 {
     ULONG Flags;
@@ -98,6 +213,7 @@
     ULONG PageDirectoryEnd;
     ULONG KernelBase;
 } LOADER_PARAMETER_BLOCK, *PLOADER_PARAMETER_BLOCK;
+#endif
 
 //
 // Kernel Exports

Modified: trunk/reactos/include/ndk/obtypes.h
--- trunk/reactos/include/ndk/obtypes.h	2005-11-27 20:01:57 UTC (rev 19696)
+++ trunk/reactos/include/ndk/obtypes.h	2005-11-27 20:18:33 UTC (rev 19697)
@@ -117,15 +117,92 @@
     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)(
     OB_OPEN_REASON Reason,
     PVOID ObjectBody,
     PEPROCESS Process,
@@ -198,6 +275,8 @@
     struct _OBJECT_ATTRIBUTES* ObjectAttributes
 );
 
+#endif
+
 #else
 
 //