- 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
//