1 /* $Id: page.c,v 1.8 2000/04/07 02:23:59 dwelch Exp $
3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS kernel
5 * FILE: ntoskrnl/ke/bug.c
6 * PURPOSE: Graceful system shutdown if a bug is detected
7 * PROGRAMMER: David Welch (welch@mcmail.com)
12 /* INCLUDES *****************************************************************/
14 #include <ddk/ntddk.h>
15 #include <internal/io.h>
18 #include <internal/debug.h>
20 /* FUNCTIONS *****************************************************************/
22 NTSTATUS STDCALL
IoPageRead(PFILE_OBJECT FileObject
,
24 PLARGE_INTEGER Offset
,
25 PIO_STATUS_BLOCK StatusBlock
)
29 PIO_STACK_LOCATION StackPtr
;
32 DPRINT("IoPageRead(FileObject %x, Mdl %x)\n",
35 ObReferenceObjectByPointer(FileObject
,
36 STANDARD_RIGHTS_REQUIRED
,
40 KeInitializeEvent(&Event
,NotificationEvent
,FALSE
);
41 Irp
= IoBuildSynchronousFsdRequestWithMdl(IRP_MJ_READ
,
42 FileObject
->DeviceObject
,
47 StackPtr
= IoGetNextIrpStackLocation(Irp
);
48 StackPtr
->FileObject
= FileObject
;
49 DPRINT("Before IoCallDriver\n");
50 Status
= IoCallDriver(FileObject
->DeviceObject
,Irp
);
51 DPRINT("Status %d STATUS_PENDING %d\n",Status
,STATUS_PENDING
);
52 if (Status
==STATUS_PENDING
&& (FileObject
->Flags
& FO_SYNCHRONOUS_IO
))
54 DPRINT("Waiting for io operation\n");
55 if (FileObject
->Flags
& FO_ALERTABLE_IO
)
57 KeWaitForSingleObject(&Event
,Executive
,KernelMode
,TRUE
,NULL
);
61 DPRINT("Non-alertable wait\n");
62 KeWaitForSingleObject(&Event
,Executive
,KernelMode
,FALSE
,NULL
);
64 Status
= StatusBlock
->Status
;
70 NTSTATUS STDCALL
IoSynchronousPageWrite (DWORD Unknown0
,
77 return (STATUS_NOT_IMPLEMENTED
);