Reactos
at master 127 lines 2.8 kB view raw
1/* 2 * COPYRIGHT: See COPYING in the top level directory 3 * PROJECT: ReactOS Kernel 4 * FILE: ntoskrnl/cache/mdlsup.c 5 * PURPOSE: Logging and configuration routines 6 * PROGRAMMERS: Alex Ionescu (alex.ionescu@reactos.org) 7 */ 8 9/* INCLUDES *******************************************************************/ 10 11#include <ntoskrnl.h> 12#include "newcc.h" 13#define NDEBUG 14#include <debug.h> 15 16/* GLOBALS ********************************************************************/ 17 18/* FUNCTIONS ******************************************************************/ 19 20PMDL 21NTAPI 22CcpBuildCacheMdl(PFILE_OBJECT FileObject, 23 PLARGE_INTEGER FileOffset, 24 ULONG Length, 25 PIO_STATUS_BLOCK IOSB) 26{ 27 PMDL Mdl; 28 PVOID Bcb, Buffer; 29 30 BOOLEAN Result = CcMapData(FileObject, 31 FileOffset, 32 Length, 33 PIN_WAIT, 34 &Bcb, 35 &Buffer); 36 37 if (!Result) 38 { 39 IOSB->Information = 0; 40 IOSB->Status = STATUS_UNSUCCESSFUL; 41 return NULL; 42 } 43 44 IOSB->Information = Length; 45 IOSB->Status = STATUS_SUCCESS; 46 47 Mdl = IoAllocateMdl(Buffer, Length, FALSE, FALSE, NULL); 48 49 if (!Mdl) 50 { 51 IOSB->Information = 0; 52 IOSB->Status = STATUS_NO_MEMORY; 53 return NULL; 54 } 55 56 IOSB->Information = Length; 57 IOSB->Status = STATUS_SUCCESS; 58 59 return Mdl; 60} 61 62VOID 63NTAPI 64CcMdlRead(IN PFILE_OBJECT FileObject, 65 IN PLARGE_INTEGER FileOffset, 66 IN ULONG Length, 67 OUT PMDL *MdlChain, 68 OUT PIO_STATUS_BLOCK IoStatus) 69{ 70 *MdlChain = CcpBuildCacheMdl(FileObject, FileOffset, Length, IoStatus); 71} 72 73VOID 74NTAPI 75CcMdlReadComplete(IN PFILE_OBJECT FileObject, 76 IN PMDL MdlChain) 77{ 78 IoFreeMdl(MdlChain); 79} 80 81VOID 82NTAPI 83CcMdlReadComplete2(IN PFILE_OBJECT FileObject, 84 IN PMDL MdlChain) 85{ 86 UNIMPLEMENTED 87} 88 89VOID 90NTAPI 91CcPrepareMdlWrite(IN PFILE_OBJECT FileObject, 92 IN PLARGE_INTEGER FileOffset, 93 IN ULONG Length, 94 OUT PMDL *MdlChain, 95 OUT PIO_STATUS_BLOCK IoStatus) 96{ 97 *MdlChain = CcpBuildCacheMdl(FileObject, FileOffset, Length, IoStatus); 98} 99 100VOID 101NTAPI 102CcMdlWriteComplete(IN PFILE_OBJECT FileObject, 103 IN PLARGE_INTEGER FileOffset, 104 IN PMDL MdlChain) 105{ 106 IoFreeMdl(MdlChain); 107} 108 109VOID 110NTAPI 111CcMdlWriteComplete2(IN PFILE_OBJECT FileObject, 112 IN PLARGE_INTEGER FileOffset, 113 IN PMDL MdlChain) 114{ 115 UNIMPLEMENTED 116} 117 118VOID 119NTAPI 120CcMdlWriteAbort(IN PFILE_OBJECT FileObject, 121 IN PMDL MdlChain) 122{ 123 ASSERT(FALSE); 124 IoFreeMdl(MdlChain); 125} 126 127/* EOF */