3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS kernel
5 * FILE: ntoskrnl/io/page.c
12 /* INCLUDES *****************************************************************/
16 #include <internal/debug.h>
18 /* FUNCTIONS *****************************************************************/
21 IoPageWrite(PFILE_OBJECT FileObject
,
23 PLARGE_INTEGER Offset
,
25 PIO_STATUS_BLOCK StatusBlock
)
28 PIO_STACK_LOCATION StackPtr
;
31 DPRINT("IoPageWrite(FileObject %x, Mdl %x)\n",
34 Irp
= IoBuildSynchronousFsdRequestWithMdl(IRP_MJ_WRITE
,
35 FileObject
->DeviceObject
,
43 return (STATUS_INSUFFICIENT_RESOURCES
);
45 Irp
->Flags
= IRP_NOCACHE
|IRP_PAGING_IO
;
46 StackPtr
= IoGetNextIrpStackLocation(Irp
);
47 StackPtr
->FileObject
= FileObject
;
48 StackPtr
->Parameters
.Write
.Length
= MmGetMdlByteCount(Mdl
);
49 DPRINT("Before IoCallDriver\n");
50 Status
= IofCallDriver(FileObject
->DeviceObject
,Irp
);
51 DPRINT("Status %d STATUS_PENDING %d\n",Status
,STATUS_PENDING
);
60 IoPageRead(PFILE_OBJECT FileObject
,
62 PLARGE_INTEGER Offset
,
64 PIO_STATUS_BLOCK StatusBlock
)
67 PIO_STACK_LOCATION StackPtr
;
70 DPRINT("IoPageRead(FileObject %x, Mdl %x)\n",
73 Irp
= IoBuildSynchronousFsdRequestWithMdl(IRP_MJ_READ
,
74 FileObject
->DeviceObject
,
82 return (STATUS_INSUFFICIENT_RESOURCES
);
84 Irp
->Flags
= IRP_NOCACHE
|IRP_PAGING_IO
;
85 StackPtr
= IoGetNextIrpStackLocation(Irp
);
86 StackPtr
->FileObject
= FileObject
;
87 StackPtr
->Parameters
.Read
.Length
= MmGetMdlByteCount(Mdl
);
88 DPRINT("Before IoCallDriver\n");
89 Status
= IofCallDriver(FileObject
->DeviceObject
, Irp
);
90 DPRINT("Status %d STATUS_PENDING %d\n",Status
,STATUS_PENDING
);
100 IoSynchronousPageWrite (PFILE_OBJECT FileObject
,
102 PLARGE_INTEGER Offset
,
104 PIO_STATUS_BLOCK StatusBlock
)
107 PIO_STACK_LOCATION StackPtr
;
110 DPRINT("IoSynchronousPageWrite(FileObject %x, Mdl %x)\n",
113 Irp
= IoBuildSynchronousFsdRequestWithMdl(IRP_MJ_WRITE
,
114 FileObject
->DeviceObject
,
122 return (STATUS_INSUFFICIENT_RESOURCES
);
124 Irp
->Flags
= IRP_NOCACHE
|IRP_PAGING_IO
|IRP_SYNCHRONOUS_PAGING_IO
;
125 StackPtr
= IoGetNextIrpStackLocation(Irp
);
126 StackPtr
->FileObject
= FileObject
;
127 StackPtr
->Parameters
.Write
.Length
= MmGetMdlByteCount(Mdl
);
128 DPRINT("Before IoCallDriver\n");
129 Status
= IofCallDriver(FileObject
->DeviceObject
,Irp
);
130 DPRINT("Status %d STATUS_PENDING %d\n",Status
,STATUS_PENDING
);