Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128/* * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS Kernel * FILE: ntoskrnl/cache/mdlsup.c * PURPOSE: Logging and configuration routines * PROGRAMMERS: Alex Ionescu (alex.ionescu@reactos.org) */
/* INCLUDES *******************************************************************/
#include <ntoskrnl.h>#include "newcc.h"#define NDEBUG#include <debug.h>
/* GLOBALS ********************************************************************/
/* FUNCTIONS ******************************************************************/
PMDLNTAPICcpBuildCacheMdl(PFILE_OBJECT FileObject, PLARGE_INTEGER FileOffset, ULONG Length, PIO_STATUS_BLOCK IOSB){ PMDL Mdl; PVOID Bcb, Buffer;
BOOLEAN Result = CcMapData(FileObject, FileOffset, Length, PIN_WAIT, &Bcb, &Buffer);
if (!Result) { IOSB->Information = 0; IOSB->Status = STATUS_UNSUCCESSFUL; return NULL; }
IOSB->Information = Length; IOSB->Status = STATUS_SUCCESS;
Mdl = IoAllocateMdl(Buffer, Length, FALSE, FALSE, NULL);
if (!Mdl) { IOSB->Information = 0; IOSB->Status = STATUS_NO_MEMORY; return NULL; }
IOSB->Information = Length; IOSB->Status = STATUS_SUCCESS;
return Mdl;}
VOIDNTAPICcMdlRead(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, OUT PMDL *MdlChain, OUT PIO_STATUS_BLOCK IoStatus){ *MdlChain = CcpBuildCacheMdl(FileObject, FileOffset, Length, IoStatus);}
VOIDNTAPICcMdlReadComplete(IN PFILE_OBJECT FileObject, IN PMDL MdlChain){ IoFreeMdl(MdlChain);}
VOIDNTAPICcMdlReadComplete2(IN PFILE_OBJECT FileObject, IN PMDL MdlChain){ UNIMPLEMENTED}
VOIDNTAPICcPrepareMdlWrite(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, OUT PMDL *MdlChain, OUT PIO_STATUS_BLOCK IoStatus){ *MdlChain = CcpBuildCacheMdl(FileObject, FileOffset, Length, IoStatus);}
VOIDNTAPICcMdlWriteComplete(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN PMDL MdlChain){ IoFreeMdl(MdlChain);}
VOIDNTAPICcMdlWriteComplete2(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN PMDL MdlChain){ UNIMPLEMENTED}
VOIDNTAPICcMdlWriteAbort(IN PFILE_OBJECT FileObject, IN PMDL MdlChain){ ASSERT(FALSE); IoFreeMdl(MdlChain);}
/* EOF */