reffered to in a message, feel free to delete it from the file.
Rex ***
-----
+Subject: [ros-kernel] Inside the Boot Process
+Date: Mon, 22 Mar 1999 22:05:47 +0100
+From: Emanuele Aliberti <ea@iol.it>
+
+For those working on the boot loader: in WinNt Magazine november 1998
+issue (http://www.winntmag.com/) there is a detailed description, by
+Mark Russinovich, of the rĂ´le the MBR, NTLDR, boot.ini, ntdetect.com...
+play in the boot process ("Inside the Boot Process, Part 1").
+-----
Yes with DPCs, KeDrainDpcQueue should go to HIGH_LEVEL because
it needs to synchronize with KeInsertDpcQueue. Also the idle thread
should run at DISPATCH_LEVEL and regularly drain the dpc queue, that
#include <internal/mmhal.h>
#include <internal/halio.h>
+#include <internal/hal/page.h>
#include <ddk/ntddk.h>
#include <string.h>
#include <internal/string.h>
#define INDEXTOSTATEIMAGEMASK(i) ((i) << 12)
#ifdef UNICODE
+#define _T(quote) L##quote
#define TEXT(quote) L##quote
#else
+#define _T(quote) L##quote
#define TEXT(quote) quote
#endif
* Lowlevel memory managment definitions
*/
-#ifndef __INTERNAL_HAL_PAGE_H
-#define __INTERNAL_HAL_PAGE_H
+#ifndef __INTERNAL_HAL_I386_MMHAL_H
+#define __INTERNAL_HAL_I386_MMHAL_H
#include <ddk/ntddk.h>
ULONG flProtect);
BOOLEAN MmIsPagePresent(PEPROCESS Process, PVOID Address);
-#endif /* __INTERNAL_HAL_PAGE_H */
+#endif /* __INTERNAL_HAL_I386_MMHAL_H */
* Some useful things
*/
-//#define NULL ((void*)0)
+#ifndef _INTERNAL_STDDEF_H
+#define _INTERNAL_STDDEF_H
+
#ifndef NULL
#define NULL (0)
#endif
+#endif
#include <internal/types.h>
#endif
+#ifndef _INTERNAL_STDDEF_H
+#include <internal/stddef.h>
+#endif
+
/*
* On a 486 or Pentium, we are better off not using the
* byte string operations. But on a 386 or a PPro the
+
+#ifndef _LINUX_TYPES_H
+#define _LINUX_TYPES_H
+
+typedef unsigned int size_t;
+
+#endif
bFsIoControlCode = TRUE;
else
bFsIoControlCode = FALSE;
-CHECKPOINT
+// CHECKPOINT
if(lpOverlapped != NULL) {
hEvent = lpOverlapped->hEvent;
lpOverlapped->Internal = STATUS_PENDING;
IoStatusBlock = &IIosb;
}
-CHECKPOINT
+// CHECKPOINT
if(bFsIoControlCode == TRUE) {
errCode = NtFsControlFile(hDevice,hEvent,NULL,NULL,IoStatusBlock,dwIoControlCode,lpInBuffer, nInBufferSize, lpOutBuffer, nOutBufferSize );
} else {
errCode = NtDeviceIoControlFile(hDevice,hEvent,NULL,NULL,IoStatusBlock,dwIoControlCode, lpInBuffer, nInBufferSize, lpOutBuffer, nOutBufferSize);
}
-CHECKPOINT
+// CHECKPOINT
if(errCode == STATUS_PENDING ) {
if(NtWaitForSingleObject(hDevice,FALSE,NULL) < 0) {
SetLastError(RtlNtStatusToDosError(errCode));
return FALSE;
}
-CHECKPOINT
+// CHECKPOINT
if (lpOverlapped)
*lpBytesReturned = lpOverlapped->InternalHigh;
else
*lpBytesReturned = IoStatusBlock->Information;
-CHECKPOINT
+// CHECKPOINT
return TRUE;
}
#
# Required to run the system
#
-COMPONENTS = iface_native ntoskrnl kernel32 ntdll
+COMPONENTS = iface_native ntoskrnl ntdll kernel32
# crtdll mingw32
#
#include <ddk/ntddk.h>
#include <internal/ke.h>
-#include <string.h>
#include <internal/string.h>
#define NDEBUG
#WITH_DEBUGGING = yes
WIN32_LEAN_AND_MEAN = yes
-WARNINGS_ARE_ERRORS = yes
+#WARNINGS_ARE_ERRORS = yes
include ../rules.mak