2 * Various useful prototypes
5 #ifndef __INCLUDE_INTERNAL_NTOSKRNL_H
6 #define __INCLUDE_INTERNAL_NTOSKRNL_H
11 * Use these to place a function in a specific section of the executable
13 #define PLACE_IN_SECTION(s) __attribute__((section (s)))
14 #define INIT_FUNCTION PLACE_IN_SECTION("init")
15 #define PAGE_LOCKED_FUNCTION PLACE_IN_SECTION("pagelk")
16 #define PAGE_UNLOCKED_FUNCTION PLACE_IN_SECTION("pagepo")
20 * Defines a descriptor as it appears in the processor tables
22 typedef struct _DESCRIPTOR
26 } IDT_DESCRIPTOR
, GDT_DESCRIPTOR
;
30 extern IDT_DESCRIPTOR KiIdt
[256];
31 //extern GDT_DESCRIPTOR KiGdt[256];
34 VOID
ExpInitializeEventImplementation(VOID
);
35 VOID
ExpInitializeEventImplementation(VOID
);
36 VOID
ExpInitializeEventPairImplementation(VOID
);
37 VOID
ExpInitializeSemaphoreImplementation(VOID
);
38 VOID
ExpInitializeMutantImplementation(VOID
);
39 VOID
ExpInitializeTimerImplementation(VOID
);
40 VOID
ExpInitializeProfileImplementation(VOID
);
42 * Initalization functions (called once by main())
44 VOID
MmInitSystem(ULONG Phase
, PLOADER_PARAMETER_BLOCK LoaderBlock
, ULONG LastKernelAddress
);
46 VOID
IoInit2(BOOLEAN BootLog
);
47 VOID STDCALL
IoInit3(VOID
);
50 VOID
CmInitializeRegistry(VOID
);
51 VOID STDCALL
CmInitHives(BOOLEAN SetupBoot
);
52 VOID
CmInit2(PCHAR CommandLine
);
53 VOID
CmShutdownRegistry(VOID
);
54 BOOLEAN
CmImportSystemHive(PCHAR ChunkBase
, ULONG ChunkSize
);
55 BOOLEAN
CmImportHardwareHive(PCHAR ChunkBase
, ULONG ChunkSize
);
56 VOID
KdInitSystem(ULONG Reserved
, PLOADER_PARAMETER_BLOCK LoaderBlock
);
60 RtlpCreateUnicodeString(
61 IN OUT PUNICODE_STRING UniDest
,
63 IN POOL_TYPE PoolType
);
70 #define MM_STACK_SIZE (3*4096)
72 #endif /* INCLUDE_INTERNAL_NTOSKRNL_H */