ReactOS  0.4.14-dev-608-gd495a4f
mdl.c File Reference
#include <ntoskrnl.h>
#include <debug.h>
Include dependency graph for mdl.c:

Go to the source code of this file.

Macros

#define NDEBUG
 

Functions

VOID NTAPI CcMdlRead (IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, OUT PMDL *MdlChain, OUT PIO_STATUS_BLOCK IoStatus)
 
VOID NTAPI CcMdlReadComplete2 (IN PFILE_OBJECT FileObject, IN PMDL MemoryDescriptorList)
 
VOID NTAPI CcMdlReadComplete (IN PFILE_OBJECT FileObject, IN PMDL MdlChain)
 
VOID NTAPI CcMdlWriteComplete (IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN PMDL MdlChain)
 
VOID NTAPI CcMdlWriteComplete2 (IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN PMDL MdlChain)
 
VOID NTAPI CcMdlWriteAbort (IN PFILE_OBJECT FileObject, IN PMDL MdlChain)
 
VOID NTAPI CcPrepareMdlWrite (IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, OUT PMDL *MdlChain, OUT PIO_STATUS_BLOCK IoStatus)
 

Macro Definition Documentation

◆ NDEBUG

#define NDEBUG

Definition at line 13 of file mdl.c.

Function Documentation

◆ CcMdlRead()

VOID NTAPI CcMdlRead ( IN PFILE_OBJECT  FileObject,
IN PLARGE_INTEGER  FileOffset,
IN ULONG  Length,
OUT PMDL MdlChain,
OUT PIO_STATUS_BLOCK  IoStatus 
)

Definition at line 23 of file mdl.c.

30 {
31  CCTRACE(CC_API_DEBUG, "FileObject=%p FileOffset=%I64d Length=%lu\n",
32  FileObject, FileOffset->QuadPart, Length);
33 
35 }
_Inout_ PFILE_OBJECT FileObject
Definition: cdprocs.h:593
#define CC_API_DEBUG
Definition: cc.h:11
#define CCTRACE(x, fmt,...)
Definition: cc.h:36
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:101
_In_ PFCB _In_ LONGLONG FileOffset
Definition: cdprocs.h:151
#define UNIMPLEMENTED
Definition: debug.h:114

◆ CcMdlReadComplete()

VOID NTAPI CcMdlReadComplete ( IN PFILE_OBJECT  FileObject,
IN PMDL  MdlChain 
)

Definition at line 90 of file mdl.c.

93 {
95  PFAST_IO_DISPATCH FastDispatch;
96 
97  /* Get Fast Dispatch Data */
99  FastDispatch = DeviceObject->DriverObject->FastIoDispatch;
100 
101  /* Check if we support Fast Calls, and check this one */
102  if (FastDispatch && FastDispatch->MdlReadComplete)
103  {
104  /* Use the fast path */
105  FastDispatch->MdlReadComplete(FileObject,
106  MdlChain,
107  DeviceObject);
108  }
109 
110  /* Use slow path */
112 }
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _Outptr_ PMDL * MdlChain
Definition: fsrtlfuncs.h:46
PDEVICE_OBJECT NTAPI IoGetRelatedDeviceObject(IN PFILE_OBJECT FileObject)
Definition: device.c:1539
PFAST_IO_MDL_READ_COMPLETE MdlReadComplete
Definition: iotypes.h:1707
VOID NTAPI CcMdlReadComplete2(IN PFILE_OBJECT FileObject, IN PMDL MemoryDescriptorList)
Definition: mdl.c:56
smooth NULL
Definition: ftsmooth.c:416
_Inout_ PFILE_OBJECT FileObject
Definition: cdprocs.h:593
IN PDEVICE_OBJECT DeviceObject
Definition: fatprocs.h:1560

◆ CcMdlReadComplete2()

VOID NTAPI CcMdlReadComplete2 ( IN PFILE_OBJECT  FileObject,
IN PMDL  MemoryDescriptorList 
)

Definition at line 56 of file mdl.c.

60 {
61  PMDL Mdl;
62 
63  /* Free MDLs */
64  while ((Mdl = MemoryDescriptorList))
65  {
66  MemoryDescriptorList = Mdl->Next;
67  MmUnlockPages(Mdl);
68  IoFreeMdl(Mdl);
69  }
70 }
VOID NTAPI MmUnlockPages(IN PMDL Mdl)
Definition: mdlsup.c:1439
_Inout_ PMDL MemoryDescriptorList
Definition: mmfuncs.h:406
VOID NTAPI IoFreeMdl(PMDL Mdl)
Definition: iomdl.c:146

Referenced by CcMdlReadComplete().

◆ CcMdlWriteAbort()

VOID NTAPI CcMdlWriteAbort ( IN PFILE_OBJECT  FileObject,
IN PMDL  MdlChain 
)

Definition at line 160 of file mdl.c.

163 {
165 }
#define UNIMPLEMENTED
Definition: debug.h:114

◆ CcMdlWriteComplete()

VOID NTAPI CcMdlWriteComplete ( IN PFILE_OBJECT  FileObject,
IN PLARGE_INTEGER  FileOffset,
IN PMDL  MdlChain 
)

Definition at line 119 of file mdl.c.

123 {
125  PFAST_IO_DISPATCH FastDispatch;
126 
127  /* Get Fast Dispatch Data */
129  FastDispatch = DeviceObject->DriverObject->FastIoDispatch;
130 
131  /* Check if we support Fast Calls, and check this one */
132  if (FastDispatch && FastDispatch->MdlWriteComplete)
133  {
134  /* Use the fast path */
135  FastDispatch->MdlWriteComplete(FileObject,
136  FileOffset,
137  MdlChain,
138  DeviceObject);
139  }
140 
141  /* Use slow path */
143 }
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ ULONG _In_ ULONG _Outptr_ PMDL * MdlChain
Definition: fsrtlfuncs.h:46
PDEVICE_OBJECT NTAPI IoGetRelatedDeviceObject(IN PFILE_OBJECT FileObject)
Definition: device.c:1539
VOID NTAPI CcMdlWriteComplete2(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN PMDL MdlChain)
Definition: mdl.c:147
smooth NULL
Definition: ftsmooth.c:416
_Inout_ PFILE_OBJECT FileObject
Definition: cdprocs.h:593
IN PDEVICE_OBJECT DeviceObject
Definition: fatprocs.h:1560
_In_ PFCB _In_ LONGLONG FileOffset
Definition: cdprocs.h:151
PFAST_IO_MDL_WRITE_COMPLETE MdlWriteComplete
Definition: iotypes.h:1709

◆ CcMdlWriteComplete2()

VOID NTAPI CcMdlWriteComplete2 ( IN PFILE_OBJECT  FileObject,
IN PLARGE_INTEGER  FileOffset,
IN PMDL  MdlChain 
)

Definition at line 147 of file mdl.c.

151 {
153 }
#define UNIMPLEMENTED
Definition: debug.h:114

Referenced by CcMdlWriteComplete().

◆ CcPrepareMdlWrite()

VOID NTAPI CcPrepareMdlWrite ( IN PFILE_OBJECT  FileObject,
IN PLARGE_INTEGER  FileOffset,
IN ULONG  Length,
OUT PMDL MdlChain,
OUT PIO_STATUS_BLOCK  IoStatus 
)

Definition at line 172 of file mdl.c.

178 {
179  CCTRACE(CC_API_DEBUG, "FileObject=%p FileOffset=%I64d Length=%lu\n",
180  FileObject, FileOffset->QuadPart, Length);
181 
183 }
_Inout_ PFILE_OBJECT FileObject
Definition: cdprocs.h:593
#define CC_API_DEBUG
Definition: cc.h:11
#define CCTRACE(x, fmt,...)
Definition: cc.h:36
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:101
_In_ PFCB _In_ LONGLONG FileOffset
Definition: cdprocs.h:151
#define UNIMPLEMENTED
Definition: debug.h:114