ReactOS  0.4.15-dev-1070-ge1a01de
mmfuncs.h File Reference

Go to the source code of this file.

Macros

#define ALIGN_DOWN_BY(size, align)   ((ULONG_PTR)(size) & ~((ULONG_PTR)(align) - 1))
 
#define ALIGN_UP_BY(size, align)   (ALIGN_DOWN_BY(((ULONG_PTR)(size) + align - 1), align))
 
#define ALIGN_DOWN_POINTER_BY(ptr, align)   ((PVOID)ALIGN_DOWN_BY(ptr, align))
 
#define ALIGN_UP_POINTER_BY(ptr, align)   ((PVOID)ALIGN_UP_BY(ptr, align))
 
#define ALIGN_DOWN(size, type)   ALIGN_DOWN_BY(size, sizeof(type))
 
#define ALIGN_UP(size, type)   ALIGN_UP_BY(size, sizeof(type))
 
#define ALIGN_DOWN_POINTER(ptr, type)   ALIGN_DOWN_POINTER_BY(ptr, sizeof(type))
 
#define ALIGN_UP_POINTER(ptr, type)   ALIGN_UP_POINTER_BY(ptr, sizeof(type))
 
#define FIELD_OFFSET(type, field)   ((ULONG)&(((type *)0)->field))
 
#define FIELD_SIZE(type, field)   (sizeof(((type *)0)->field))
 
#define POOL_TAGGING   1
 
#define IF_DEBUG   if (FALSE)
 
#define BYTE_OFFSET(Va)   ((ULONG) ((ULONG_PTR) (Va) & (PAGE_SIZE - 1)))
 
#define BYTES_TO_PAGES(Size)   (((Size) >> PAGE_SHIFT) + (((Size) & (PAGE_SIZE - 1)) != 0))
 
#define PAGE_ALIGN(Va)   ((PVOID) ((ULONG_PTR)(Va) & ~(PAGE_SIZE - 1)))
 
#define ROUND_TO_PAGES(Size)   (((ULONG_PTR) (Size) + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1))
 
#define ADDRESS_AND_SIZE_TO_SPAN_PAGES(_Va, _Size)
 
#define COMPUTE_PAGES_SPANNED(Va, Size)   ADDRESS_AND_SIZE_TO_SPAN_PAGES(Va,Size)
 
#define MmGetMdlByteCount(_Mdl)   ((_Mdl)->ByteCount)
 
#define MmGetMdlByteOffset(_Mdl)   ((_Mdl)->ByteOffset)
 
#define MmGetMdlBaseVa(Mdl)   ((Mdl)->StartVa)
 
#define MmGetMdlPfnArray(_Mdl)   ((PPFN_NUMBER) ((_Mdl) + 1))
 
#define MmGetMdlVirtualAddress(_Mdl)   ((PVOID) ((PCHAR) ((_Mdl)->StartVa) + (_Mdl)->ByteOffset))
 
#define MmGetProcedureAddress(Address)   (Address)
 
#define MmLockPagableCodeSection(Address)   MmLockPagableDataSection(Address)
 
#define MmGetSystemAddressForMdl(Mdl)
 
#define MmGetSystemAddressForMdlSafe(_Mdl, _Priority)
 
#define MmInitializeMdl(_MemoryDescriptorList, _BaseVa, _Length)
 
#define MmPrepareMdlForReuse(_Mdl)
 

Functions

 $if (_WDMDDK_) $endif(_WDMDDK_) $if(_NTIFS_) FORCEINLINE ULONG HEAP_MAKE_TAG_FLAGS(_In_ ULONG TagBase
 
 $endif (_NTIFS_) $if(_WDMDDK_) _Must_inspect_result_ _IRQL_requires_max_(DISPATCH_LEVEL) _When_(return !
 
 _Post_writable_byte_size_ (NumberOfBytes)) NTKERNELAPI PVOID NTAPI MmAllocateContiguousMemory(_In_ SIZE_T NumberOfBytes
 
_Must_inspect_result_ _IRQL_requires_max_ (DISPATCH_LEVEL) _When_(return !
 
NTKERNELAPI PMDL NTAPI MmCreateMdl (_Out_writes_bytes_opt_(sizeof(MDL)+(sizeof(PFN_NUMBER) *ADDRESS_AND_SIZE_TO_SPAN_PAGES(Base, Length))) PMDL MemoryDescriptorList, _In_reads_bytes_opt_(Length) PVOID Base, _In_ SIZE_T Length)
 
 _IRQL_requires_max_ (PASSIVE_LEVEL) NTKERNELAPI PVOID NTAPI MmGetSystemRoutineAddress(_In_ PUNICODE_STRING SystemRoutineName)
 
NTKERNELAPI LOGICAL NTAPI MmIsDriverVerifying (_In_ struct _DRIVER_OBJECT *DriverObject)
 
_Must_inspect_result_ _IRQL_requires_max_ (APC_LEVEL) NTKERNELAPI PVOID NTAPI MmLockPagableDataSection(_In_ PVOID AddressWithinSection)
 
_Must_inspect_result_ _When_ (AccessMode==KernelMode, _IRQL_requires_max_(DISPATCH_LEVEL)) _When_(AccessMode
 
_Must_inspect_result_ _Maybe_raises_SEH_exception_ _In_ __drv_strictType (KPROCESSOR_MODE/enum _MODE, __drv_typeConst) KPROCESSOR_MODE AccessMode)
 
 _Post_writable_byte_size_ (MemoryDescriptorList->ByteCount) _When_(AccessMode
 
NTKERNELAPI MM_SYSTEMSIZE NTAPI MmQuerySystemSize (VOID)
 
NTKERNELAPI SIZE_T NTAPI MmSizeOfMdl (_In_reads_bytes_opt_(Length) PVOID Base, _In_ SIZE_T Length)
 
 $endif (_WDMDDK_) $if(_NTDDK_) _IRQL_requires_max_(PASSIVE_LEVEL) NTKERNELAPI PPHYSICAL_MEMORY_RANGE NTAPI MmGetPhysicalMemoryRanges(VOID)
 
NTKERNELAPI PHYSICAL_ADDRESS NTAPI MmGetPhysicalAddress (_In_ PVOID BaseAddress)
 
NTKERNELAPI BOOLEAN NTAPI MmIsNonPagedSystemAddressValid (_In_ PVOID VirtualAddress)
 
NTKERNELAPI PVOID NTAPI MmGetVirtualForPhysical (_In_ PHYSICAL_ADDRESS PhysicalAddress)
 
NTKERNELAPI BOOLEAN NTAPI MmIsThisAnNtAsSystem (VOID)
 
_Must_inspect_result_ _In_ __in_data_source (USER_MODE) SIZE_T Size
 
 $endif (_NTDDK_) $if(_NTIFS_) NTKERNELAPI BOOLEAN NTAPI MmIsRecursiveIoFault(VOID)
 
_Must_inspect_result_ _Out_writes_bytes_opt_ (NumberOfBytes)) NTKERNELAPI PVOID NTAPI MmAllocateMappingAddress(_In_ SIZE_T NumberOfBytes
 
 _In_reads_ (NumberOfLists) PREAD_LIST *ReadLists)
 
_Must_inspect_result_ _At_BaseAddress (Mem)) __kernel_entryNTSYSCALLAPINTSTATUSNTAPINtAllocateVirtualMemory(_In_ HANDLE ProcessHandle, _Inout_ _Outptr_result_buffer_(*RegionSize) PVOID *BaseAddress, _In_ ULONG_PTR ZeroBits, _Inout_ PSIZE_T RegionSize, _In_ ULONG AllocationType, _In_ ULONG Protect
 
__kernel_entry _Inout_ __drv_freesMem (Mem) PVOID *BaseAddress
 

Variables

_In_ ULONG Tag
 
_In_ PHYSICAL_ADDRESS HighestAcceptableAddress
 
_Must_inspect_result_ _In_ PHYSICAL_ADDRESS LowestAcceptableAddress
 
_Must_inspect_result_ _In_ PHYSICAL_ADDRESS _In_ PHYSICAL_ADDRESS _In_opt_ PHYSICAL_ADDRESS BoundaryAddressMultiple
 
_Must_inspect_result_ _In_ PHYSICAL_ADDRESS _In_ PHYSICAL_ADDRESS _In_opt_ PHYSICAL_ADDRESS _In_ MEMORY_CACHING_TYPE CacheType
 
_Must_inspect_result_ _In_ PHYSICAL_ADDRESS HighAddress
 
_Must_inspect_result_ _In_ PHYSICAL_ADDRESS _In_ PHYSICAL_ADDRESS SkipBytes
 
_Must_inspect_result_ _In_ PHYSICAL_ADDRESS _In_ PHYSICAL_ADDRESS _In_ SIZE_T TotalBytes
 
_In_ SIZE_T NumberOfBytes
 
_In_ PEPROCESS Process
 
_In_ PEPROCESS _In_ KPROCESSOR_MODE AccessMode
 
_In_ PEPROCESS _In_ KPROCESSOR_MODE _In_ LOCK_OPERATION Operation
 
_Inout_ PMDL MemoryDescriptorList
 
_Must_inspect_result_ _In_ PHYSICAL_ADDRESS _In_ PHYSICAL_ADDRESS _In_opt_ PHYSICAL_ADDRESS _In_ MEMORY_CACHING_TYPE _In_ NODE_REQUIREMENT PreferredNode
 
_Must_inspect_result_ _In_ SIZE_T _In_ PVOID PageAddress
 
_Must_inspect_result_ _Outptr_result_bytebuffer_ ViewSize PVOIDMappedBase
 
_Must_inspect_result_ _Outptr_result_bytebuffer_ ViewSize PVOID _Inout_ PSIZE_T ViewSize
 
_Must_inspect_result_ _In_ _In_ ULONG ProbeMode
 
_In_ BOOLEAN DelayClose
 
_In_ MMFLUSH_TYPE FlushType
 
_In_opt_ PLARGE_INTEGER NewFileSize
 
_In_ SIZE_T Length
 
_Must_inspect_result_ _In_ ULONG PoolTag
 
_Must_inspect_result_ _In_ ULONG NewProtect
 
_In_ ULONG ThunkBufferSize
 
_In_ PHYSICAL_ADDRESS _In_ PHYSICAL_ADDRESS _In_ SIZE_T _In_ MEMORY_CACHING_TYPE _In_ ULONG Flags
 
_Inout_ PSIZE_T _In_opt_ PMDLX NewMdl
 
_Inout_ PSIZE_T _In_opt_ PMDLX _In_ MM_ROTATE_DIRECTION Direction
 
_Inout_ PSIZE_T _In_opt_ PMDLX _In_ MM_ROTATE_DIRECTION _In_ PMM_ROTATE_COPY_CALLBACK_FUNCTION CopyFunction
 
_Inout_ PSIZE_T _In_opt_ PMDLX _In_ MM_ROTATE_DIRECTION _In_ PMM_ROTATE_COPY_CALLBACK_FUNCTION _In_opt_ PVOID Context
 
__kernel_entry _Inout_ _Inout_ PSIZE_T RegionSize
 
__kernel_entry _Inout_ _Inout_ PSIZE_T _In_ ULONG FreeType
 

Macro Definition Documentation

◆ ADDRESS_AND_SIZE_TO_SPAN_PAGES

#define ADDRESS_AND_SIZE_TO_SPAN_PAGES (   _Va,
  _Size 
)
Value:
((ULONG) ((((ULONG_PTR) (_Va) & (PAGE_SIZE - 1)) \
+ (_Size) + (PAGE_SIZE - 1)) >> PAGE_SHIFT))
#define PAGE_SHIFT
Definition: env_spec_w32.h:45
uint32_t ULONG_PTR
Definition: typedefs.h:65
#define PAGE_SIZE
Definition: env_spec_w32.h:49
_Check_return_ _Ret_maybenull_ _In_ size_t _In_ size_t _Size
Definition: malloc.h:112
unsigned int ULONG
Definition: retypes.h:1

◆ ALIGN_DOWN

#define ALIGN_DOWN (   size,
  type 
)    ALIGN_DOWN_BY(size, sizeof(type))

◆ ALIGN_DOWN_BY

#define ALIGN_DOWN_BY (   size,
  align 
)    ((ULONG_PTR)(size) & ~((ULONG_PTR)(align) - 1))

◆ ALIGN_DOWN_POINTER

#define ALIGN_DOWN_POINTER (   ptr,
  type 
)    ALIGN_DOWN_POINTER_BY(ptr, sizeof(type))

◆ ALIGN_DOWN_POINTER_BY

#define ALIGN_DOWN_POINTER_BY (   ptr,
  align 
)    ((PVOID)ALIGN_DOWN_BY(ptr, align))

◆ ALIGN_UP

#define ALIGN_UP (   size,
  type 
)    ALIGN_UP_BY(size, sizeof(type))

◆ ALIGN_UP_BY

#define ALIGN_UP_BY (   size,
  align 
)    (ALIGN_DOWN_BY(((ULONG_PTR)(size) + align - 1), align))

◆ ALIGN_UP_POINTER

#define ALIGN_UP_POINTER (   ptr,
  type 
)    ALIGN_UP_POINTER_BY(ptr, sizeof(type))

◆ ALIGN_UP_POINTER_BY

#define ALIGN_UP_POINTER_BY (   ptr,
  align 
)    ((PVOID)ALIGN_UP_BY(ptr, align))

◆ BYTE_OFFSET

#define BYTE_OFFSET (   Va)    ((ULONG) ((ULONG_PTR) (Va) & (PAGE_SIZE - 1)))

◆ BYTES_TO_PAGES

#define BYTES_TO_PAGES (   Size)    (((Size) >> PAGE_SHIFT) + (((Size) & (PAGE_SIZE - 1)) != 0))

◆ COMPUTE_PAGES_SPANNED

#define COMPUTE_PAGES_SPANNED (   Va,
  Size 
)    ADDRESS_AND_SIZE_TO_SPAN_PAGES(Va,Size)

◆ FIELD_OFFSET

#define FIELD_OFFSET (   type,
  field 
)    ((ULONG)&(((type *)0)->field))

◆ FIELD_SIZE

#define FIELD_SIZE (   type,
  field 
)    (sizeof(((type *)0)->field))

◆ IF_DEBUG

#define IF_DEBUG   if (FALSE)

◆ MmGetMdlBaseVa

#define MmGetMdlBaseVa (   Mdl)    ((Mdl)->StartVa)

◆ MmGetMdlByteCount

#define MmGetMdlByteCount (   _Mdl)    ((_Mdl)->ByteCount)

◆ MmGetMdlByteOffset

#define MmGetMdlByteOffset (   _Mdl)    ((_Mdl)->ByteOffset)

◆ MmGetMdlPfnArray

#define MmGetMdlPfnArray (   _Mdl)    ((PPFN_NUMBER) ((_Mdl) + 1))

◆ MmGetMdlVirtualAddress

#define MmGetMdlVirtualAddress (   _Mdl)    ((PVOID) ((PCHAR) ((_Mdl)->StartVa) + (_Mdl)->ByteOffset))

◆ MmGetProcedureAddress

#define MmGetProcedureAddress (   Address)    (Address)

◆ MmGetSystemAddressForMdl

#define MmGetSystemAddressForMdl (   Mdl)
Value:
(((Mdl)->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA | \
((Mdl)->MappedSystemVa) : \
#define MDL_MAPPED_TO_SYSTEM_VA
Definition: mmtypes.h:18
PVOID NTAPI MmMapLockedPages(IN PMDL Mdl, IN KPROCESSOR_MODE AccessMode)
Definition: mdlsup.c:822
#define MDL_SOURCE_IS_NONPAGED_POOL
Definition: mmtypes.h:20

◆ MmGetSystemAddressForMdlSafe

#define MmGetSystemAddressForMdlSafe (   _Mdl,
  _Priority 
)
Value:
(((_Mdl)->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA \
(_Mdl)->MappedSystemVa : \
KernelMode, MmCached, NULL, FALSE, (_Priority)))
#define MDL_MAPPED_TO_SYSTEM_VA
Definition: mmtypes.h:18
PVOID NTAPI MmMapLockedPagesSpecifyCache(IN PMDL Mdl, IN KPROCESSOR_MODE AccessMode, IN MEMORY_CACHING_TYPE CacheType, IN PVOID BaseAddress, IN ULONG BugCheckOnFailure, IN ULONG Priority)
Definition: mdlsup.c:664
#define FALSE
Definition: types.h:117
smooth NULL
Definition: ftsmooth.c:416
#define MDL_SOURCE_IS_NONPAGED_POOL
Definition: mmtypes.h:20
void * PVOID
Definition: retypes.h:9

◆ MmInitializeMdl

#define MmInitializeMdl (   _MemoryDescriptorList,
  _BaseVa,
  _Length 
)
Value:
{ \
(_MemoryDescriptorList)->Next = (PMDL) NULL; \
(_MemoryDescriptorList)->Size = (CSHORT) (sizeof(MDL) + \
(sizeof(PFN_NUMBER) * ADDRESS_AND_SIZE_TO_SPAN_PAGES(_BaseVa, _Length))); \
(_MemoryDescriptorList)->MdlFlags = 0; \
(_MemoryDescriptorList)->StartVa = (PVOID) PAGE_ALIGN(_BaseVa); \
(_MemoryDescriptorList)->ByteOffset = BYTE_OFFSET(_BaseVa); \
(_MemoryDescriptorList)->ByteCount = (ULONG) _Length; \
}
ULONG PFN_NUMBER
Definition: ke.h:8
smooth NULL
Definition: ftsmooth.c:416
#define ADDRESS_AND_SIZE_TO_SPAN_PAGES(_Va, _Size)
#define PAGE_ALIGN(Va)
MDL
Definition: mmtypes.h:117
IN PVOID IN PVOID IN USHORT IN USHORT Size
Definition: pci.h:361
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _In_ LARGE_INTEGER ByteCount
Definition: iotypes.h:1081
unsigned int ULONG
Definition: retypes.h:1
short CSHORT
Definition: umtypes.h:127
#define BYTE_OFFSET(Va)
IN PDCB IN PCCB IN VBO IN OUT PULONG OUT PDIRENT OUT PBCB OUT PVBO ByteOffset
Definition: fatprocs.h:725

◆ MmLockPagableCodeSection

#define MmLockPagableCodeSection (   Address)    MmLockPagableDataSection(Address)

◆ MmPrepareMdlForReuse

#define MmPrepareMdlForReuse (   _Mdl)
Value:
{ \
if (((_Mdl)->MdlFlags & MDL_PARTIAL_HAS_BEEN_MAPPED) != 0) { \
ASSERT(((_Mdl)->MdlFlags & MDL_PARTIAL) != 0); \
MmUnmapLockedPages((_Mdl)->MappedSystemVa, (_Mdl)); \
} else if (((_Mdl)->MdlFlags & MDL_PARTIAL) == 0) { \
ASSERT(((_Mdl)->MdlFlags & MDL_MAPPED_TO_SYSTEM_VA) == 0); \
} \
}
#define MDL_MAPPED_TO_SYSTEM_VA
Definition: mmtypes.h:18
#define MDL_PARTIAL_HAS_BEEN_MAPPED
Definition: mmtypes.h:23
#define MDL_PARTIAL
Definition: mmtypes.h:22

◆ PAGE_ALIGN

#define PAGE_ALIGN (   Va)    ((PVOID) ((ULONG_PTR)(Va) & ~(PAGE_SIZE - 1)))

◆ POOL_TAGGING

#define POOL_TAGGING   1

◆ ROUND_TO_PAGES

#define ROUND_TO_PAGES (   Size)    (((ULONG_PTR) (Size) + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1))

Function Documentation

◆ $endif() [1/3]

$endif ( _NTIFS_  )

Definition at line 2827 of file rtlfuncs.h.

2841 {
2843  ret.QuadPart = SignedInteger;
2844  return ret;
2845 }
return ret
Definition: rtlfuncs.h:3092

◆ $endif() [2/3]

$endif ( _WDMDDK_  )

Definition at line 202 of file ke.h.

226 {
227  ULONGLONG Low;
228  LONGLONG High;
229 } NEON128, *PNEON128;
Definition: strmini.h:380
int64_t LONGLONG
Definition: typedefs.h:68
uint64_t ULONGLONG
Definition: typedefs.h:67
Definition: strmini.h:378
NEON128
Definition: ke.h:229
* PNEON128
Definition: ke.h:229

◆ $endif() [3/3]

$endif ( _NTDDK_  )

Definition at line 2490 of file iofuncs.h.

2498 {
2499  PriorityInfo->Size = sizeof(IO_PRIORITY_INFO);
2500  PriorityInfo->ThreadPriority = 0xffff;
2501  PriorityInfo->IoPriority = IoPriorityNormal;
2502  PriorityInfo->PagePriority = 0;
2503 }
struct _IO_PRIORITY_INFO IO_PRIORITY_INFO
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD _Inout_ PIO_PRIORITY_INFO PriorityInfo
Definition: fltkernel.h:2653

◆ $if()

$if ( _WDMDDK_  )

Kernel definitions for AMD64

Kernel definitions for ARM

Definition at line 1 of file ke.h.

31 {
32  ULONG Dummy;
struct _KFLOATING_SAVE KFLOATING_SAVE
struct _KFLOATING_SAVE * PKFLOATING_SAVE
unsigned int ULONG
Definition: retypes.h:1

◆ __drv_freesMem()

__kernel_entry _Inout_ __drv_freesMem ( Mem  )

Definition at line 1523 of file exfuncs.h.

1524 {
1525  Lookaside->L.TotalFrees++;
1526 #ifdef NONAMELESSUNION
1527  if (ExQueryDepthSList(&Lookaside->L.u.ListHead) >= Lookaside->L.Depth) {
1528  Lookaside->L.u3.FreeMisses++;
1529  (Lookaside->L.u5.Free)(Entry);
1530  } else {
1531 #if defined(_WIN2K_COMPAT_SLIST_USAGE) && defined(_X86_)
1532  ExInterlockedPushEntrySList(&Lookaside->L.u.ListHead,
1534  &Lookaside->Lock__ObsoleteButDoNotDelete);
1535 #else
1537 #endif
1538  }
1539 #else /* NONAMELESSUNION */
1540  if (ExQueryDepthSList(&Lookaside->L.ListHead) >= Lookaside->L.Depth) {
1541  Lookaside->L.FreeMisses++;
1542  (Lookaside->L.Free)(Entry);
1543  } else {
1544 #if defined(_WIN2K_COMPAT_SLIST_USAGE) && defined(_X86_)
1547  &Lookaside->Lock__ObsoleteButDoNotDelete);
1548 #else
1550 #endif
1551  }
1552 #endif /* NONAMELESSUNION */
1553 }
#define ExInterlockedPushEntrySList(SListHead, SListEntry, Lock)
Definition: exfuncs.h:163
_Inout_ PVOID Lookaside
Definition: fltkernel.h:2532
#define PSLIST_ENTRY
Definition: rtltypes.h:134
FORCEINLINE USHORT ExQueryDepthSList(_In_ PSLIST_HEADER SListHead)
Definition: exfuncs.h:153
NTKERNELAPI PSLIST_ENTRY FASTCALL InterlockedPushEntrySList(IN PSLIST_HEADER ListHead, IN PSLIST_ENTRY ListEntry)
Definition: interlocked.c:82
base of all file and directory entries
Definition: entries.h:82

◆ __drv_strictType()

_Must_inspect_result_ _Maybe_raises_SEH_exception_ _In_ __drv_strictType ( KPROCESSOR_MODE/enum  _MODE,
__drv_typeConst   
)

◆ __in_data_source()

_Must_inspect_result_ _In_ __in_data_source ( USER_MODE  )

◆ _In_reads_()

_In_reads_ ( NumberOfLists  )

◆ _IRQL_requires_max_() [1/3]

_Must_inspect_result_ _IRQL_requires_max_ ( DISPATCH_LEVEL  )

Definition at line 188 of file autorun.c.

197 {
199  ULONG requiredSize;
201 
202  status = RtlULongAdd((sizeof(TARGET_DEVICE_CUSTOM_NOTIFICATION) - sizeof(UCHAR)),
204  &requiredSize);
205 
206  if (!(NT_SUCCESS(status)) || (requiredSize > 0x0000ffff)) {
207  // MAX_USHORT, max total size for these events!
208  TracePrint((TRACE_LEVEL_WARNING, TRACE_FLAG_MCN,
209  "Error sending event: size too large! (%x)\n",
210  requiredSize));
211  return;
212  }
213 
214  notification = ExAllocatePoolWithTag(NonPagedPoolNx,
215  requiredSize,
216  'oNcS');
217 
218  //
219  // if none allocated, exit
220  //
221 
222  if (notification == NULL) {
223  return;
224  }
225 
226  //
227  // Prepare and send the request!
228  //
229 
230  RtlZeroMemory(notification, requiredSize);
231  notification->Version = 1;
232  notification->Size = (USHORT)(requiredSize);
233  notification->FileObject = NULL;
234  notification->NameBufferOffset = -1;
235  notification->Event = *Guid;
236 
237  if (ExtraData != NULL && ExtraDataSize != 0) {
238  RtlCopyMemory(notification->CustomDataBuffer, ExtraData, ExtraDataSize);
239  }
240 
242  notification,
243  NULL, NULL);
244 
246  return;
247 }
NTSYSAPI VOID NTAPI RtlCopyMemory(VOID UNALIGNED *Destination, CONST VOID UNALIGNED *Source, ULONG Length)
_In_ const GUID _In_ ULONG ExtraDataSize
Definition: classpnp.h:1429
LONG NTSTATUS
Definition: precomp.h:26
static GUID * Guid
Definition: apphelp.c:93
smooth NULL
Definition: ftsmooth.c:416
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define ExAllocatePoolWithTag(hernya, size, tag)
Definition: env_spec_w32.h:350
unsigned char UCHAR
Definition: xmlstorage.h:181
#define FREE_POOL(_PoolPtr)
Definition: classpnp.h:63
#define TRACE_LEVEL_WARNING
Definition: storswtr.h:28
unsigned short USHORT
Definition: pedump.c:61
unsigned int ULONG
Definition: retypes.h:1
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:262
NTSTATUS NTAPI IoReportTargetDeviceChangeAsynchronous(IN PDEVICE_OBJECT PhysicalDeviceObject, IN PVOID NotificationStructure, IN PDEVICE_CHANGE_COMPLETE_CALLBACK Callback OPTIONAL, IN PVOID Context OPTIONAL)
Definition: pnpreport.c:515
static SERVICE_STATUS status
Definition: service.c:31
Definition: ps.c:97

◆ _IRQL_requires_max_() [2/3]

_IRQL_requires_max_ ( PASSIVE_LEVEL  )

Definition at line 64 of file Messaging.c.

75 {
76  PFLT_SERVER_PORT_OBJECT PortObject;
78 
79  /* The caller must allow at least one connection */
80  if (MaxConnections == 0)
81  {
83  }
84 
85  /* The request must be for a kernel handle */
86  if (!(ObjectAttributes->Attributes & OBJ_KERNEL_HANDLE))
87  {
89  }
90 
91  /*
92  * Get rundown protection on the target to stop the owner
93  * from unloading whilst this port object is open. It gets
94  * removed in the FltpServerPortClose callback
95  */
97  if (!NT_SUCCESS(Status))
98  {
99  return Status;
100  }
101 
102  /* Create the server port object for this filter */
106  KernelMode,
107  NULL,
108  sizeof(FLT_SERVER_PORT_OBJECT),
109  0,
110  0,
111  (PVOID *)&PortObject);
112  if (NT_SUCCESS(Status))
113  {
114  /* Zero out the struct */
115  RtlZeroMemory(PortObject, sizeof(FLT_SERVER_PORT_OBJECT));
116 
117  /* Increment the ref count on the target filter */
119 
120  /* Setup the filter port object */
121  PortObject->Filter = Filter;
122  PortObject->ConnectNotify = ConnectNotifyCallback;
124  PortObject->MessageNotify = MessageNotifyCallback;
125  PortObject->Cookie = ServerPortCookie;
126  PortObject->MaxConnections = MaxConnections;
127 
128  /* Insert the object */
129  Status = ObInsertObject(PortObject,
130  NULL,
132  0,
133  NULL,
135  if (NT_SUCCESS(Status))
136  {
137  /* Lock the connection list */
139 
140  /* Add the new port object to the connection list and increment the count */
143 
144  /* Unlock the connection list*/
146  }
147  }
148 
149  if (!NT_SUCCESS(Status))
150  {
151  /* Allow the filter to be cleaned up */
153  }
154 
155  return Status;
156 }
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
Definition: conport.c:35
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135
_Must_inspect_result_ _Outptr_ PFLT_PORT * ServerPort
Definition: fltkernel.h:1873
PFLT_CONNECT_NOTIFY ConnectNotify
Definition: fltmgrint.h:191
VOID FLTAPI FltObjectDereference(_Inout_ PVOID Object)
Definition: Object.c:53
LONG NTSTATUS
Definition: precomp.h:26
#define InsertTailList(ListHead, Entry)
#define OBJ_KERNEL_HANDLE
Definition: winternl.h:231
VOID FASTCALL ExReleaseFastMutex(IN PFAST_MUTEX FastMutex)
Definition: fmutex.c:31
ULONG FltpObjectPointerReference(_In_ PFLT_OBJECT Object)
Definition: Object.c:322
LIST_ENTRY mList
Definition: fltmgrint.h:56
_Must_inspect_result_ _In_opt_ PFLT_FILTER Filter
Definition: fltkernel.h:1802
#define FILE_READ_DATA
Definition: nt_native.h:628
smooth NULL
Definition: ftsmooth.c:416
NTSTATUS NTAPI ObCreateObject(IN KPROCESSOR_MODE ProbeMode OPTIONAL, IN POBJECT_TYPE Type, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN KPROCESSOR_MODE AccessMode, IN OUT PVOID ParseContext OPTIONAL, IN ULONG ObjectSize, IN ULONG PagedPoolCharge OPTIONAL, IN ULONG NonPagedPoolCharge OPTIONAL, OUT PVOID *Object)
Definition: oblife.c:952
POBJECT_TYPE ServerPortObjectType
Definition: Messaging.c:24
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID _In_ PFLT_CONNECT_NOTIFY _In_ PFLT_DISCONNECT_NOTIFY DisconnectNotifyCallback
Definition: fltkernel.h:1873
Status
Definition: gdiplustypes.h:24
PVOID *typedef PHANDLE
Definition: ntsecpkg.h:454
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID _In_ PFLT_CONNECT_NOTIFY ConnectNotifyCallback
Definition: fltkernel.h:1873
NTSTATUS NTAPI ObInsertObject(IN PVOID Object, IN PACCESS_STATE AccessState OPTIONAL, IN ACCESS_MASK DesiredAccess, IN ULONG ObjectPointerBias, OUT PVOID *NewObject OPTIONAL, OUT PHANDLE Handle)
Definition: obhandle.c:2932
#define STANDARD_RIGHTS_ALL
Definition: nt_native.h:69
VOID FASTCALL ExAcquireFastMutex(IN PFAST_MUTEX FastMutex)
Definition: fmutex.c:23
NTSTATUS FLTAPI FltObjectReference(_Inout_ PVOID Object)
Definition: Object.c:41
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID ServerPortCookie
Definition: fltkernel.h:1873
FAST_MUTEX mLock
Definition: fltmgrint.h:55
PFLT_MESSAGE_NOTIFY MessageNotify
Definition: fltmgrint.h:193
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:262
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID _In_ PFLT_CONNECT_NOTIFY _In_ PFLT_DISCONNECT_NOTIFY _In_opt_ PFLT_MESSAGE_NOTIFY _In_ LONG MaxConnections
Definition: fltkernel.h:1873
PFLT_DISCONNECT_NOTIFY DisconnectNotify
Definition: fltmgrint.h:192
_Must_inspect_result_ _Outptr_ PFLT_PORT _In_ POBJECT_ATTRIBUTES _In_opt_ PVOID _In_ PFLT_CONNECT_NOTIFY _In_ PFLT_DISCONNECT_NOTIFY _In_opt_ PFLT_MESSAGE_NOTIFY MessageNotifyCallback
Definition: fltkernel.h:1873
FLT_MUTEX_LIST_HEAD ConnectionList
Definition: fltmgrint.h:121

◆ _IRQL_requires_max_() [3/3]

_Must_inspect_result_ _IRQL_requires_max_ ( APC_LEVEL  )

Definition at line 197 of file cddata.c.

254 {
255  THREAD_CONTEXT ThreadContext = {0};
256  PIRP_CONTEXT IrpContext = NULL;
257  BOOLEAN Wait;
258 
259 #ifdef CD_SANITY
260  PVOID PreviousTopLevel;
261 #endif
262 
264 
265 #if DBG
266 
267  KIRQL SaveIrql = KeGetCurrentIrql();
268 
269 #endif
270 
272 
274 
276 
277 #ifdef CD_SANITY
278  PreviousTopLevel = IoGetTopLevelIrp();
279 #endif
280 
281  //
282  // Loop until this request has been completed or posted.
283  //
284 
285  do {
286 
287  //
288  // Use a try-except to handle the exception cases.
289  //
290 
291  _SEH2_TRY {
292 
293  //
294  // If the IrpContext is NULL then this is the first pass through
295  // this loop.
296  //
297 
298  if (IrpContext == NULL) {
299 
300  //
301  // Decide if this request is waitable an allocate the IrpContext.
302  // If the file object in the stack location is NULL then this
303  // is a mount which is always waitable. Otherwise we look at
304  // the file object flags.
305  //
306 
308 
309  Wait = TRUE;
310 
311  } else {
312 
313  Wait = CanFsdWait( Irp );
314  }
315 
316  IrpContext = CdCreateIrpContext( Irp, Wait );
317 
318  //
319  // Update the thread context information.
320  //
321 
322  CdSetThreadContext( IrpContext, &ThreadContext );
323 
324 #ifdef CD_SANITY
325  NT_ASSERT( !CdTestTopLevel ||
326  SafeNodeType( IrpContext->TopLevel ) == CDFS_NTC_IRP_CONTEXT );
327 #endif
328 
329  //
330  // Otherwise cleanup the IrpContext for the retry.
331  //
332 
333  } else {
334 
335  //
336  // Set the MORE_PROCESSING flag to make sure the IrpContext
337  // isn't inadvertently deleted here. Then cleanup the
338  // IrpContext to perform the retry.
339  //
340 
341  SetFlag( IrpContext->Flags, IRP_CONTEXT_FLAG_MORE_PROCESSING );
342  CdCleanupIrpContext( IrpContext, FALSE );
343  }
344 
345  //
346  // Case on the major irp code.
347  //
348 
349  switch (IrpContext->MajorFunction) {
350 
351  case IRP_MJ_CREATE :
352 
353  Status = CdCommonCreate( IrpContext, Irp );
354  break;
355 
356  case IRP_MJ_CLOSE :
357 
358  Status = CdCommonClose( IrpContext, Irp );
359  break;
360 
361  case IRP_MJ_READ :
362 
363  //
364  // If this is an Mdl complete request, don't go through
365  // common read.
366  //
367 
368  if (FlagOn( IrpContext->MinorFunction, IRP_MN_COMPLETE )) {
369 
370  Status = CdCompleteMdl( IrpContext, Irp );
371 
372  } else {
373 
374  Status = CdCommonRead( IrpContext, Irp );
375  }
376 
377  break;
378 
379  case IRP_MJ_WRITE :
380 
381  Status = CdCommonWrite( IrpContext, Irp );
382  break;
383 
385 
386  Status = CdCommonQueryInfo( IrpContext, Irp );
387  break;
388 
390 
391  Status = CdCommonSetInfo( IrpContext, Irp );
392  break;
393 
395 
396  Status = CdCommonQueryVolInfo( IrpContext, Irp );
397  break;
398 
400 
401  Status = CdCommonDirControl( IrpContext, Irp );
402  break;
403 
405 
406  Status = CdCommonFsControl( IrpContext, Irp );
407  break;
408 
409  case IRP_MJ_DEVICE_CONTROL :
410 
411  Status = CdCommonDevControl( IrpContext, Irp );
412  break;
413 
414  case IRP_MJ_LOCK_CONTROL :
415 
416  Status = CdCommonLockControl( IrpContext, Irp );
417  break;
418 
419  case IRP_MJ_CLEANUP :
420 
421  Status = CdCommonCleanup( IrpContext, Irp );
422  break;
423 
424  case IRP_MJ_PNP :
425 
426  Status = CdCommonPnp( IrpContext, Irp );
427  break;
428 
429  case IRP_MJ_SHUTDOWN :
430 
431  Status = CdCommonShutdown( IrpContext, Irp );
432  break;
433 
434  default :
435 
437  CdCompleteRequest( IrpContext, Irp, Status );
438  }
439 
441 
442  Status = CdProcessException( IrpContext, Irp, _SEH2_GetExceptionCode() );
443  } _SEH2_END;
444 
445  } while (Status == STATUS_CANT_WAIT);
446 
447 #ifdef CD_SANITY
448  NT_ASSERT( !CdTestTopLevel ||
449  (PreviousTopLevel == IoGetTopLevelIrp()) );
450 #endif
451 
453 
454  NT_ASSERT( SaveIrql == KeGetCurrentIrql( ));
455 
456  return Status;
457 }
#define KeGetCurrentIrql()
Definition: env_spec_w32.h:706
VOID CdSetThreadContext(_Inout_ PIRP_CONTEXT IrpContext, _In_ PTHREAD_CONTEXT ThreadContext)
Definition: cddata.c:981
#define IRP_MJ_CREATE
Definition: rdpdr.c:44
#define FsRtlEnterFileSystem
#define FsRtlExitFileSystem
#define IRP_MJ_SHUTDOWN
_In_ PIRP Irp
Definition: csq.h:116
#define TRUE
Definition: types.h:120
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:317
#define IRP_CONTEXT_FLAG_MORE_PROCESSING
Definition: cdstruc.h:1220
#define SafeNodeType(Ptr)
Definition: nodetype.h:54
#define IRP_MJ_PNP
Definition: cdrw_usr.h:52
LONG NTSTATUS
Definition: precomp.h:26
#define STATUS_INVALID_DEVICE_REQUEST
Definition: udferr_usr.h:138
_SEH2_TRY
Definition: create.c:4226
#define IRP_MN_COMPLETE
Definition: iotypes.h:4399
UCHAR KIRQL
Definition: env_spec_w32.h:591
#define FALSE
Definition: types.h:117
VOID CdCompleteRequest(_Inout_opt_ PIRP_CONTEXT IrpContext, _Inout_opt_ PIRP Irp, _In_ NTSTATUS Status)
Definition: cddata.c:914
#define _SEH2_GetExceptionInformation()
Definition: pseh2_64.h:11
unsigned char BOOLEAN
smooth NULL
Definition: ftsmooth.c:416
#define IRP_MJ_QUERY_VOLUME_INFORMATION
Definition: rdpdr.c:50
#define IRP_MJ_DIRECTORY_CONTROL
Definition: rdpdr.c:51
_Inout_ PFILE_OBJECT FileObject
Definition: cdprocs.h:588
#define IRP_MJ_FILE_SYSTEM_CONTROL
PIRP NTAPI IoGetTopLevelIrp(VOID)
Definition: irp.c:1843
#define CanFsdWait(I)
Definition: cdprocs.h:2001
NTSTATUS CdCompleteMdl(_In_ PIRP_CONTEXT IrpContext, _Inout_ PIRP Irp)
Definition: cachesup.c:411
#define IRP_MJ_CLOSE
Definition: rdpdr.c:45
Status
Definition: gdiplustypes.h:24
NTSTATUS CdCommonDevControl(_Inout_ PIRP_CONTEXT IrpContext, _Inout_ PIRP Irp)
Definition: devctrl.c:46
#define FlagOn(_F, _SF)
Definition: ext2fs.h:179
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
Definition: iofuncs.h:2789
#define SetFlag(_F, _SF)
Definition: ext2fs.h:187
_SEH2_END
Definition: create.c:4400
LONG CdExceptionFilter(_Inout_ PIRP_CONTEXT IrpContext, _In_ PEXCEPTION_POINTERS ExceptionPointer)
Definition: cddata.c:525
#define ASSERT_OPTIONAL_IRP(I)
Definition: cddata.h:252
_In_ PDEVICE_OBJECT DeviceObject
Definition: iotypes.h:2464
VOID CdCleanupIrpContext(_In_ PIRP_CONTEXT IrpContext, _In_ BOOLEAN Post)
Definition: strucsup.c:1733
NTSTATUS CdCommonLockControl(_Inout_ PIRP_CONTEXT IrpContext, _Inout_ PIRP Irp)
Definition: lockctrl.c:35
#define CDFS_NTC_IRP_CONTEXT
Definition: nodetype.h:34
#define IRP_MJ_LOCK_CONTROL
Definition: rdpdr.c:53
#define IRP_MJ_READ
Definition: rdpdr.c:46
#define IRP_MJ_CLEANUP
#define IRP_MJ_SET_INFORMATION
Definition: rdpdr.c:49
#define IRP_MJ_WRITE
Definition: rdpdr.c:47
#define IRP_MJ_QUERY_INFORMATION
Definition: rdpdr.c:48
#define _SEH2_EXCEPT(...)
Definition: pseh2_64.h:6
#define _SEH2_GetExceptionCode()
Definition: pseh2_64.h:12
_Ret_valid_ PIRP_CONTEXT CdCreateIrpContext(_In_ PIRP Irp, _In_ BOOLEAN Wait)
Definition: strucsup.c:1573
#define IRP_MJ_DEVICE_CONTROL
Definition: rdpdr.c:52
#define STATUS_CANT_WAIT
Definition: ntstatus.h:452
IN BOOLEAN Wait
Definition: fatprocs.h:1538
#define NT_ASSERT
Definition: rtlfuncs.h:3312

◆ _Out_writes_bytes_opt_()

_Must_inspect_result_ _Out_writes_bytes_opt_ ( NumberOfBytes  )

◆ _Post_writable_byte_size_() [1/2]

_Must_inspect_result_ _Post_writable_byte_size_ ( NumberOfBytes  )

◆ _Post_writable_byte_size_() [2/2]

_Post_writable_byte_size_ ( MemoryDescriptorList->  ByteCount)

◆ _When_()

◆ BaseAddress()

_Must_inspect_result_ _At_* BaseAddress ( Mem  )

◆ MmCreateMdl()

◆ MmGetPhysicalAddress()

NTKERNELAPI PHYSICAL_ADDRESS NTAPI MmGetPhysicalAddress ( _In_ PVOID  BaseAddress)

◆ MmGetVirtualForPhysical()

NTKERNELAPI PVOID NTAPI MmGetVirtualForPhysical ( _In_ PHYSICAL_ADDRESS  PhysicalAddress)

◆ MmIsDriverVerifying()

NTKERNELAPI LOGICAL NTAPI MmIsDriverVerifying ( _In_ struct _DRIVER_OBJECT DriverObject)

◆ MmIsNonPagedSystemAddressValid()

NTKERNELAPI BOOLEAN NTAPI MmIsNonPagedSystemAddressValid ( _In_ PVOID  VirtualAddress)

◆ MmIsThisAnNtAsSystem()

NTKERNELAPI BOOLEAN NTAPI MmIsThisAnNtAsSystem ( VOID  )

Definition at line 246 of file mmsup.c.

247 {
248  /* Return if this is a server system */
249  return MmProductType & 0xFF;
250 }
ULONG MmProductType
Definition: mminit.c:325

Referenced by FsRtlInitializeTunnels(), PsChangeQuantumTable(), and UDFInitializeZones().

◆ MmQuerySystemSize()

NTKERNELAPI MM_SYSTEMSIZE NTAPI MmQuerySystemSize ( VOID  )

Definition at line 257 of file mmsup.c.

258 {
259  /* Return the low, medium or high memory system type */
260  return MmSystemSize;
261 }
MM_SYSTEMSIZE MmSystemSize
Definition: mminit.c:326

Referenced by CcInitializeCacheManager(), CdInitializeGlobalData(), DriverEntry(), PspInitPhase0(), RxInitializeWorkQueueDispatcher(), and UDFInitializeZones().

◆ MmSizeOfMdl()

NTKERNELAPI SIZE_T NTAPI MmSizeOfMdl ( _In_reads_bytes_opt_(Length) PVOID  Base,
_In_ SIZE_T  Length 
)

Variable Documentation

◆ AccessMode

Definition at line 395 of file mmfuncs.h.

Referenced by BuildExplicitAccessWithNameA(), BuildExplicitAccessWithNameW(), BuildImpersonateExplicitAccessWithNameA(), BuildImpersonateExplicitAccessWithNameW(), CmpConvertHandleToKernelHandle(), CmpCreateLinkNode(), CmpDoCreate(), CmpDoCreateChild(), CmpDoOpen(), CmpParseKey(), DosCreateFileEx(), DosOpenFile(), ExLockUserBuffer(), ExpDesktopOkToClose(), ExpWindowStationOkToClose(), ExpWinStaObjectParse(), IntCreateDesktop(), IntCreateWindowStation(), IntValidateDesktopHandle(), IntValidateWindowStationHandle(), IopCreateFile(), IopParseDevice(), IopParseFile(), IopQueryAttributesFile(), MmMapLockedPages(), MmMapLockedPagesSpecifyCache(), MmProbeAndLockPages(), MockMmProbeAndLockPages(), MockObReferenceObjectByHandle(), NtDeleteFile(), ObCheckCreateObjectAccess(), ObCheckObjectAccess(), ObCloseHandle(), ObCreateObject(), ObOpenObjectByName(), ObOpenObjectByPointer(), ObpCaptureObjectCreateInformation(), ObpCaptureObjectName(), ObpCheckObjectReference(), ObpCheckTraverseAccess(), ObpCloseHandle(), ObpCloseHandleTableEntry(), ObpCreateHandle(), ObpCreateUnnamedHandle(), ObpIncrementHandleCount(), ObpLookupObjectName(), ObpParseSymbolicLink(), ObpReferenceProcessObjectByHandle(), ObReferenceFileObjectForWrite(), ObReferenceObjectByHandle(), ObReferenceObjectByName(), ObReferenceObjectByPointer(), OkayToCloseProc(), ProbeAndCaptureObjectAttributes(), QueryNameProc(), ReleaseCapturedObjectAttributes(), SeAccessCheck(), SeFastTraverseCheck(), SeOpenObjectAuditAlarm(), SepCaptureAcl(), SepCaptureSecurityQualityOfService(), SepCaptureSid(), SepReleaseAcl(), SepReleaseSecurityQualityOfService(), SepReleaseSid(), SeReleaseSidAndAttributesArray(), WmipCaptureGuidObjectAttributes(), WmipOpenGuidObject(), and WmipOpenGuidObjectByName().

◆ BoundaryAddressMultiple

◆ CacheType

◆ Context

◆ CopyFunction

◆ DelayClose

_In_ BOOLEAN DelayClose

Definition at line 592 of file mmfuncs.h.

◆ Direction

◆ Flags

◆ FlushType

_In_ MMFLUSH_TYPE FlushType

Definition at line 600 of file mmfuncs.h.

◆ FreeType

Definition at line 809 of file mmfuncs.h.

◆ HighAddress

◆ HighestAcceptableAddress

Definition at line 204 of file mmfuncs.h.

◆ Length

Definition at line 616 of file mmfuncs.h.

◆ LowestAcceptableAddress

◆ MappedBase

◆ MemoryDescriptorList

_In_ ULONG _Inout_ PMDL MemoryDescriptorList

Definition at line 405 of file mmfuncs.h.

Referenced by CcMdlReadComplete2(), DECLARE_INTERFACE_(), and FsRtlMdlReadCompleteDev().

◆ NewFileSize

_In_opt_ PLARGE_INTEGER NewFileSize

Definition at line 608 of file mmfuncs.h.

Referenced by MmCanFileBeTruncated(), NtfsSetEndOfFile(), and UDFCommonCleanup().

◆ NewMdl

Definition at line 772 of file mmfuncs.h.

◆ NewProtect

◆ NumberOfBytes

_Inout_ PSIZE_T NumberOfBytes

Definition at line 260 of file mmfuncs.h.

◆ Operation

Definition at line 395 of file mmfuncs.h.

◆ PageAddress

Definition at line 471 of file mmfuncs.h.

Referenced by _MiFlushMappedSection(), and MmAreMemoryPagesAvailable().

◆ PoolTag

_In_ ULONG PoolTag

Definition at line 642 of file mmfuncs.h.

◆ PreferredNode

◆ ProbeMode

◆ Process

_In_ PEPROCESS Process

Definition at line 395 of file mmfuncs.h.

◆ RegionSize

Definition at line 809 of file mmfuncs.h.

◆ SkipBytes

◆ Tag

Initial value:
{
return ((ULONG)((TagBase) + ((Tag) << HEAP_TAG_SHIFT)))
#define HEAP_TAG_SHIFT
Definition: nt_native.h:1724
IN ULONG IN ULONG Tag
Definition: evtlib.h:159
unsigned int ULONG
Definition: retypes.h:1

Definition at line 188 of file mmfuncs.h.

◆ ThunkBufferSize

_In_ ULONG ThunkBufferSize

Definition at line 699 of file mmfuncs.h.

Referenced by MmAddVerifierThunks().

◆ TotalBytes

◆ ViewSize

Definition at line 492 of file mmfuncs.h.