3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS kernel
5 * FILE: ntoskrnl/io/page.c
6 * PURPOSE: No purpose listed.
8 * PROGRAMMERS: No programmer listed.
11 /* INCLUDES *****************************************************************/
15 #include <internal/debug.h>
17 /* FUNCTIONS *****************************************************************/
20 IoPageWrite(PFILE_OBJECT FileObject
,
22 PLARGE_INTEGER Offset
,
24 PIO_STATUS_BLOCK StatusBlock
)
27 PIO_STACK_LOCATION StackPtr
;
30 DPRINT("IoPageWrite(FileObject %x, Mdl %x)\n",
33 Irp
= IoBuildSynchronousFsdRequestWithMdl(IRP_MJ_WRITE
,
34 FileObject
->DeviceObject
,
42 return (STATUS_INSUFFICIENT_RESOURCES
);
44 Irp
->Flags
= IRP_NOCACHE
|IRP_PAGING_IO
;
45 StackPtr
= IoGetNextIrpStackLocation(Irp
);
46 StackPtr
->FileObject
= FileObject
;
47 StackPtr
->Parameters
.Write
.Length
= MmGetMdlByteCount(Mdl
);
48 DPRINT("Before IoCallDriver\n");
49 Status
= IofCallDriver(FileObject
->DeviceObject
,Irp
);
50 DPRINT("Status %d STATUS_PENDING %d\n",Status
,STATUS_PENDING
);
59 IoPageRead(PFILE_OBJECT FileObject
,
61 PLARGE_INTEGER Offset
,
63 PIO_STATUS_BLOCK StatusBlock
)
66 PIO_STACK_LOCATION StackPtr
;
69 DPRINT("IoPageRead(FileObject %x, Mdl %x)\n",
72 Irp
= IoBuildSynchronousFsdRequestWithMdl(IRP_MJ_READ
,
73 FileObject
->DeviceObject
,
81 return (STATUS_INSUFFICIENT_RESOURCES
);
83 Irp
->Flags
= IRP_NOCACHE
|IRP_PAGING_IO
;
84 StackPtr
= IoGetNextIrpStackLocation(Irp
);
85 StackPtr
->FileObject
= FileObject
;
86 StackPtr
->Parameters
.Read
.Length
= MmGetMdlByteCount(Mdl
);
87 DPRINT("Before IoCallDriver\n");
88 Status
= IofCallDriver(FileObject
->DeviceObject
, Irp
);
89 DPRINT("Status %d STATUS_PENDING %d\n",Status
,STATUS_PENDING
);
99 IoSynchronousPageWrite (PFILE_OBJECT FileObject
,
101 PLARGE_INTEGER Offset
,
103 PIO_STATUS_BLOCK StatusBlock
)
106 PIO_STACK_LOCATION StackPtr
;
109 DPRINT("IoSynchronousPageWrite(FileObject %x, Mdl %x)\n",
112 Irp
= IoBuildSynchronousFsdRequestWithMdl(IRP_MJ_WRITE
,
113 FileObject
->DeviceObject
,
121 return (STATUS_INSUFFICIENT_RESOURCES
);
123 Irp
->Flags
= IRP_NOCACHE
|IRP_PAGING_IO
|IRP_SYNCHRONOUS_PAGING_IO
;
124 StackPtr
= IoGetNextIrpStackLocation(Irp
);
125 StackPtr
->FileObject
= FileObject
;
126 StackPtr
->Parameters
.Write
.Length
= MmGetMdlByteCount(Mdl
);
127 DPRINT("Before IoCallDriver\n");
128 Status
= IofCallDriver(FileObject
->DeviceObject
,Irp
);
129 DPRINT("Status %d STATUS_PENDING %d\n",Status
,STATUS_PENDING
);