ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

mmfuncs.h
Go to the documentation of this file.
00001 /******************************************************************************
00002  *                       Memory manager Functions                             *
00003  ******************************************************************************/
00004 $if (_WDMDDK_)
00005 /* Alignment Macros */
00006 #define ALIGN_DOWN_BY(size, align) \
00007     ((ULONG_PTR)(size) & ~((ULONG_PTR)(align) - 1))
00008 
00009 #define ALIGN_UP_BY(size, align) \
00010     (ALIGN_DOWN_BY(((ULONG_PTR)(size) + align - 1), align))
00011 
00012 #define ALIGN_DOWN_POINTER_BY(ptr, align) \
00013     ((PVOID)ALIGN_DOWN_BY(ptr, align))
00014 
00015 #define ALIGN_UP_POINTER_BY(ptr, align) \
00016     ((PVOID)ALIGN_UP_BY(ptr, align))
00017 
00018 #define ALIGN_DOWN(size, type) \
00019     ALIGN_DOWN_BY(size, sizeof(type))
00020 
00021 #define ALIGN_UP(size, type) \
00022     ALIGN_UP_BY(size, sizeof(type))
00023 
00024 #define ALIGN_DOWN_POINTER(ptr, type) \
00025     ALIGN_DOWN_POINTER_BY(ptr, sizeof(type))
00026 
00027 #define ALIGN_UP_POINTER(ptr, type) \
00028     ALIGN_UP_POINTER_BY(ptr, sizeof(type))
00029 
00030 #ifndef FIELD_OFFSET
00031 #define FIELD_OFFSET(type, field) ((ULONG)&(((type *)0)->field))
00032 #endif
00033 
00034 #ifndef FIELD_SIZE
00035 #define FIELD_SIZE(type, field) (sizeof(((type *)0)->field))
00036 #endif
00037 
00038 #define POOL_TAGGING                             1
00039 
00040 #if DBG
00041 #define IF_DEBUG if (TRUE)
00042 #else
00043 #define IF_DEBUG if (FALSE)
00044 #endif /* DBG */
00045 
00046 /* ULONG
00047  * BYTE_OFFSET(
00048  *   IN PVOID Va)
00049  */
00050 #define BYTE_OFFSET(Va) \
00051   ((ULONG) ((ULONG_PTR) (Va) & (PAGE_SIZE - 1)))
00052 
00053 /* ULONG
00054  * BYTES_TO_PAGES(
00055  *   IN ULONG Size)
00056  */
00057 #define BYTES_TO_PAGES(Size) \
00058   (((Size) + PAGE_SIZE - 1) >> PAGE_SHIFT)
00059 
00060 /* PVOID
00061  * PAGE_ALIGN(
00062  *   IN PVOID Va)
00063  */
00064 #define PAGE_ALIGN(Va) \
00065   ((PVOID) ((ULONG_PTR)(Va) & ~(PAGE_SIZE - 1)))
00066 
00067 /* ULONG_PTR
00068  * ROUND_TO_PAGES(
00069  *   IN ULONG_PTR Size)
00070  */
00071 #define ROUND_TO_PAGES(Size) \
00072   (((ULONG_PTR) (Size) + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1))
00073 
00074 /* ULONG
00075  * ADDRESS_AND_SIZE_TO_SPAN_PAGES(
00076  *   IN PVOID Va,
00077  *   IN ULONG Size)
00078  */
00079 #define ADDRESS_AND_SIZE_TO_SPAN_PAGES(_Va, _Size) \
00080   ((ULONG) ((((ULONG_PTR) (_Va) & (PAGE_SIZE - 1)) \
00081     + (_Size) + (PAGE_SIZE - 1)) >> PAGE_SHIFT))
00082 
00083 #define COMPUTE_PAGES_SPANNED(Va, Size) \
00084     ADDRESS_AND_SIZE_TO_SPAN_PAGES(Va,Size)
00085 
00086 /*
00087  * ULONG
00088  * MmGetMdlByteCount(
00089  *   IN PMDL  Mdl)
00090  */
00091 #define MmGetMdlByteCount(_Mdl) \
00092   ((_Mdl)->ByteCount)
00093 
00094 /*
00095  * ULONG
00096  * MmGetMdlByteOffset(
00097  *   IN PMDL  Mdl)
00098  */
00099 #define MmGetMdlByteOffset(_Mdl) \
00100   ((_Mdl)->ByteOffset)
00101 
00102 #define MmGetMdlBaseVa(Mdl) ((Mdl)->StartVa)
00103 
00104 /*
00105  * PPFN_NUMBER
00106  * MmGetMdlPfnArray(
00107  *   IN PMDL  Mdl)
00108  */
00109 #define MmGetMdlPfnArray(_Mdl) \
00110   ((PPFN_NUMBER) ((_Mdl) + 1))
00111 
00112 /*
00113  * PVOID
00114  * MmGetMdlVirtualAddress(
00115  *   IN PMDL  Mdl)
00116  */
00117 #define MmGetMdlVirtualAddress(_Mdl) \
00118   ((PVOID) ((PCHAR) ((_Mdl)->StartVa) + (_Mdl)->ByteOffset))
00119 
00120 #define MmGetProcedureAddress(Address) (Address)
00121 #define MmLockPagableCodeSection(Address) MmLockPagableDataSection(Address)
00122 
00123 /* PVOID MmGetSystemAddressForMdl(
00124  *     IN PMDL Mdl);
00125  */
00126 #define MmGetSystemAddressForMdl(Mdl) \
00127   (((Mdl)->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA | \
00128     MDL_SOURCE_IS_NONPAGED_POOL)) ? \
00129       ((Mdl)->MappedSystemVa) : \
00130       (MmMapLockedPages((Mdl), KernelMode)))
00131 
00132 /* PVOID
00133  * MmGetSystemAddressForMdlSafe(
00134  *     IN PMDL Mdl,
00135  *     IN MM_PAGE_PRIORITY Priority)
00136  */
00137 #define MmGetSystemAddressForMdlSafe(_Mdl, _Priority) \
00138   (((_Mdl)->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA \
00139     | MDL_SOURCE_IS_NONPAGED_POOL)) ? \
00140     (_Mdl)->MappedSystemVa : \
00141     (PVOID) MmMapLockedPagesSpecifyCache((_Mdl), \
00142       KernelMode, MmCached, NULL, FALSE, (_Priority)))
00143 
00144 /*
00145  * VOID
00146  * MmInitializeMdl(
00147  *   IN PMDL  MemoryDescriptorList,
00148  *   IN PVOID  BaseVa,
00149  *   IN SIZE_T  Length)
00150  */
00151 #define MmInitializeMdl(_MemoryDescriptorList, \
00152                         _BaseVa, \
00153                         _Length) \
00154 { \
00155   (_MemoryDescriptorList)->Next = (PMDL) NULL; \
00156   (_MemoryDescriptorList)->Size = (CSHORT) (sizeof(MDL) + \
00157     (sizeof(PFN_NUMBER) * ADDRESS_AND_SIZE_TO_SPAN_PAGES(_BaseVa, _Length))); \
00158   (_MemoryDescriptorList)->MdlFlags = 0; \
00159   (_MemoryDescriptorList)->StartVa = (PVOID) PAGE_ALIGN(_BaseVa); \
00160   (_MemoryDescriptorList)->ByteOffset = BYTE_OFFSET(_BaseVa); \
00161   (_MemoryDescriptorList)->ByteCount = (ULONG) _Length; \
00162 }
00163 
00164 /*
00165  * VOID
00166  * MmPrepareMdlForReuse(
00167  *   IN PMDL  Mdl)
00168  */
00169 #define MmPrepareMdlForReuse(_Mdl) \
00170 { \
00171   if (((_Mdl)->MdlFlags & MDL_PARTIAL_HAS_BEEN_MAPPED) != 0) { \
00172     ASSERT(((_Mdl)->MdlFlags & MDL_PARTIAL) != 0); \
00173     MmUnmapLockedPages((_Mdl)->MappedSystemVa, (_Mdl)); \
00174   } else if (((_Mdl)->MdlFlags & MDL_PARTIAL) == 0) { \
00175     ASSERT(((_Mdl)->MdlFlags & MDL_MAPPED_TO_SYSTEM_VA) == 0); \
00176   } \
00177 }
00178 $endif (_WDMDDK_)
00179 $if (_NTIFS_)
00180 
00181 FORCEINLINE
00182 ULONG
00183 HEAP_MAKE_TAG_FLAGS(
00184   _In_ ULONG TagBase,
00185   _In_ ULONG Tag)
00186 {
00187   //__assume_bound(TagBase); // FIXME
00188   return ((ULONG)((TagBase) + ((Tag) << HEAP_TAG_SHIFT)));
00189 }
00190 $endif (_NTIFS_)
00191 
00192 #if (NTDDI_VERSION >= NTDDI_WIN2K)
00193 $if (_WDMDDK_)
00194 _Must_inspect_result_
00195 _IRQL_requires_max_(DISPATCH_LEVEL)
00196 _When_ (return != NULL, _Post_writable_byte_size_ (NumberOfBytes))
00197 NTKERNELAPI
00198 PVOID
00199 NTAPI
00200 MmAllocateContiguousMemory(
00201   _In_ SIZE_T NumberOfBytes,
00202   _In_ PHYSICAL_ADDRESS HighestAcceptableAddress);
00203 
00204 _Must_inspect_result_
00205 _IRQL_requires_max_(DISPATCH_LEVEL)
00206 _When_ (return != NULL, _Post_writable_byte_size_ (NumberOfBytes))
00207 NTKERNELAPI
00208 PVOID
00209 NTAPI
00210 MmAllocateContiguousMemorySpecifyCache(
00211   _In_ SIZE_T NumberOfBytes,
00212   _In_ PHYSICAL_ADDRESS LowestAcceptableAddress,
00213   _In_ PHYSICAL_ADDRESS HighestAcceptableAddress,
00214   _In_opt_ PHYSICAL_ADDRESS BoundaryAddressMultiple,
00215   _In_ MEMORY_CACHING_TYPE CacheType);
00216 
00217 _Must_inspect_result_
00218 _IRQL_requires_max_(DISPATCH_LEVEL)
00219 NTKERNELAPI
00220 PMDL
00221 NTAPI
00222 MmAllocatePagesForMdl(
00223   _In_ PHYSICAL_ADDRESS LowAddress,
00224   _In_ PHYSICAL_ADDRESS HighAddress,
00225   _In_ PHYSICAL_ADDRESS SkipBytes,
00226   _In_ SIZE_T TotalBytes);
00227 
00228 _IRQL_requires_max_(DISPATCH_LEVEL)
00229 NTKERNELAPI
00230 VOID
00231 NTAPI
00232 MmBuildMdlForNonPagedPool(
00233   _Inout_ PMDLX MemoryDescriptorList);
00234 
00235 //DECLSPEC_DEPRECATED_DDK
00236 NTKERNELAPI
00237 PMDL
00238 NTAPI
00239 MmCreateMdl(
00240   _Out_writes_bytes_opt_ (sizeof (MDL) + (sizeof (PFN_NUMBER) * ADDRESS_AND_SIZE_TO_SPAN_PAGES (Base, Length)))
00241     PMDL MemoryDescriptorList,
00242   _In_reads_bytes_opt_ (Length) PVOID Base,
00243   _In_ SIZE_T Length);
00244 
00245 _IRQL_requires_max_(DISPATCH_LEVEL)
00246 NTKERNELAPI
00247 VOID
00248 NTAPI
00249 MmFreeContiguousMemory(
00250   _In_ PVOID BaseAddress);
00251 
00252 _IRQL_requires_max_ (DISPATCH_LEVEL)
00253 NTKERNELAPI
00254 VOID
00255 NTAPI
00256 MmFreeContiguousMemorySpecifyCache(
00257   _In_reads_bytes_ (NumberOfBytes) PVOID BaseAddress,
00258   _In_ SIZE_T NumberOfBytes,
00259   _In_ MEMORY_CACHING_TYPE CacheType);
00260 
00261 _IRQL_requires_max_(DISPATCH_LEVEL)
00262 NTKERNELAPI
00263 VOID
00264 NTAPI
00265 MmFreePagesFromMdl(
00266   _Inout_ PMDLX MemoryDescriptorList);
00267 
00268 _IRQL_requires_max_(PASSIVE_LEVEL)
00269 NTKERNELAPI
00270 PVOID
00271 NTAPI
00272 MmGetSystemRoutineAddress(
00273   _In_ PUNICODE_STRING SystemRoutineName);
00274 
00275 NTKERNELAPI
00276 LOGICAL
00277 NTAPI
00278 MmIsDriverVerifying(
00279   _In_ struct _DRIVER_OBJECT *DriverObject);
00280 
00281 _Must_inspect_result_
00282 _IRQL_requires_max_(APC_LEVEL)
00283 NTKERNELAPI
00284 PVOID
00285 NTAPI
00286 MmLockPagableDataSection(
00287   _In_ PVOID AddressWithinSection);
00288 
00289 _Must_inspect_result_
00290 _IRQL_requires_max_(DISPATCH_LEVEL)
00291 _Out_writes_bytes_opt_ (NumberOfBytes)
00292 NTKERNELAPI
00293 PVOID
00294 NTAPI
00295 MmMapIoSpace(
00296   _In_ PHYSICAL_ADDRESS PhysicalAddress,
00297   _In_ SIZE_T NumberOfBytes,
00298   _In_ MEMORY_CACHING_TYPE CacheType);
00299 
00300 _Must_inspect_result_
00301 _When_(AccessMode==0, _IRQL_requires_max_(DISPATCH_LEVEL))
00302 _When_(AccessMode==1, _Maybe_raises_SEH_exception_ _IRQL_requires_max_(APC_LEVEL))
00303 NTKERNELAPI
00304 PVOID
00305 NTAPI
00306 MmMapLockedPages(
00307   _Inout_ PMDL MemoryDescriptorList,
00308   _In_ __drv_strictType(KPROCESSOR_MODE/enum _MODE,__drv_typeConst)
00309     KPROCESSOR_MODE AccessMode);
00310 
00311 _Post_writable_byte_size_(MemoryDescriptorList->ByteCount)
00312 _When_(AccessMode==KernelMode, _IRQL_requires_max_(DISPATCH_LEVEL))
00313 _When_(AccessMode==UserMode, _Maybe_raises_SEH_exception_ _IRQL_requires_max_(APC_LEVEL) _Post_notnull_)
00314 _At_(MemoryDescriptorList->MappedSystemVa, _Post_writable_byte_size_(MemoryDescriptorList->ByteCount))
00315 _Must_inspect_result_
00316 _Success_(return != NULL)
00317 NTKERNELAPI
00318 PVOID
00319 NTAPI
00320 MmMapLockedPagesSpecifyCache(
00321   _Inout_ PMDLX MemoryDescriptorList,
00322   _In_ __drv_strictType(KPROCESSOR_MODE/enum _MODE,__drv_typeConst)
00323     KPROCESSOR_MODE AccessMode,
00324   _In_ __drv_strictTypeMatch(__drv_typeCond) MEMORY_CACHING_TYPE CacheType,
00325   _In_opt_ PVOID BaseAddress,
00326   _In_ ULONG BugCheckOnFailure,
00327   _In_ MM_PAGE_PRIORITY Priority);
00328 
00329 _IRQL_requires_max_(APC_LEVEL)
00330 NTKERNELAPI
00331 PVOID
00332 NTAPI
00333 MmPageEntireDriver(
00334   _In_ PVOID AddressWithinSection);
00335 
00336 _IRQL_requires_max_(DISPATCH_LEVEL)
00337 _At_(MemoryDescriptorList->StartVa + MemoryDescriptorList->ByteOffset,
00338   _Field_size_bytes_opt_(MemoryDescriptorList->ByteCount))
00339 NTKERNELAPI
00340 VOID
00341 NTAPI
00342 MmProbeAndLockPages(
00343   _Inout_ PMDLX MemoryDescriptorList,
00344   _In_ KPROCESSOR_MODE AccessMode,
00345   _In_ LOCK_OPERATION Operation);
00346 
00347 NTKERNELAPI
00348 MM_SYSTEMSIZE
00349 NTAPI
00350 MmQuerySystemSize(VOID);
00351 
00352 _IRQL_requires_max_(APC_LEVEL)
00353 NTKERNELAPI
00354 VOID
00355 NTAPI
00356 MmResetDriverPaging(
00357   _In_ PVOID AddressWithinSection);
00358 
00359 NTKERNELAPI
00360 SIZE_T
00361 NTAPI
00362 MmSizeOfMdl(
00363   _In_reads_bytes_opt_ (Length) PVOID Base,
00364   _In_ SIZE_T Length);
00365 
00366 _IRQL_requires_max_(DISPATCH_LEVEL)
00367 NTKERNELAPI
00368 VOID
00369 NTAPI
00370 MmUnlockPagableImageSection(
00371   _In_ PVOID ImageSectionHandle);
00372 
00373 _IRQL_requires_max_(DISPATCH_LEVEL)
00374 NTKERNELAPI
00375 VOID
00376 NTAPI
00377 MmUnlockPages(
00378   _Inout_ PMDLX MemoryDescriptorList);
00379 
00380 _IRQL_requires_max_(DISPATCH_LEVEL)
00381 NTKERNELAPI
00382 VOID
00383 NTAPI
00384 MmUnmapIoSpace(
00385   _In_reads_bytes_ (NumberOfBytes) PVOID BaseAddress,
00386   _In_ SIZE_T NumberOfBytes);
00387 
00388 _IRQL_requires_max_ (APC_LEVEL)
00389 NTKERNELAPI
00390 VOID
00391 NTAPI
00392 MmProbeAndLockProcessPages(
00393   _Inout_ PMDL MemoryDescriptorList,
00394   _In_ PEPROCESS Process,
00395   _In_ KPROCESSOR_MODE AccessMode,
00396   _In_ LOCK_OPERATION Operation);
00397 
00398 _IRQL_requires_max_(DISPATCH_LEVEL)
00399 NTKERNELAPI
00400 VOID
00401 NTAPI
00402 MmUnmapLockedPages(
00403   _In_ PVOID BaseAddress,
00404   _Inout_ PMDL MemoryDescriptorList);
00405 
00406 _Must_inspect_result_
00407 _IRQL_requires_max_(DISPATCH_LEVEL)
00408 _When_ (return != NULL, _Post_writable_byte_size_ (NumberOfBytes))
00409 NTKERNELAPI
00410 PVOID
00411 NTAPI
00412 MmAllocateContiguousMemorySpecifyCacheNode(
00413   _In_ SIZE_T NumberOfBytes,
00414   _In_ PHYSICAL_ADDRESS LowestAcceptableAddress,
00415   _In_ PHYSICAL_ADDRESS HighestAcceptableAddress,
00416   _In_opt_ PHYSICAL_ADDRESS BoundaryAddressMultiple,
00417   _In_ MEMORY_CACHING_TYPE CacheType,
00418   _In_ NODE_REQUIREMENT PreferredNode);
00419 $endif (_WDMDDK_)
00420 $if (_NTDDK_)
00421 
00422 _IRQL_requires_max_ (PASSIVE_LEVEL)
00423 NTKERNELAPI
00424 PPHYSICAL_MEMORY_RANGE
00425 NTAPI
00426 MmGetPhysicalMemoryRanges(VOID);
00427 
00428 NTKERNELAPI
00429 PHYSICAL_ADDRESS
00430 NTAPI
00431 MmGetPhysicalAddress(
00432   _In_ PVOID BaseAddress);
00433 
00434 NTKERNELAPI
00435 BOOLEAN
00436 NTAPI
00437 MmIsNonPagedSystemAddressValid(
00438   _In_ PVOID VirtualAddress);
00439 
00440 _Must_inspect_result_
00441 _IRQL_requires_max_(APC_LEVEL)
00442 _Out_writes_bytes_opt_(NumberOfBytes)
00443 NTKERNELAPI
00444 PVOID
00445 NTAPI
00446 MmAllocateNonCachedMemory(
00447   _In_ SIZE_T NumberOfBytes);
00448 
00449 _IRQL_requires_max_(APC_LEVEL)
00450 NTKERNELAPI
00451 VOID
00452 NTAPI
00453 MmFreeNonCachedMemory(
00454   _In_reads_bytes_(NumberOfBytes) PVOID BaseAddress,
00455   _In_ SIZE_T NumberOfBytes);
00456 
00457 NTKERNELAPI
00458 PVOID
00459 NTAPI
00460 MmGetVirtualForPhysical(
00461   _In_ PHYSICAL_ADDRESS PhysicalAddress);
00462 
00463 _Must_inspect_result_
00464 _IRQL_requires_max_(APC_LEVEL)
00465 NTKERNELAPI
00466 NTSTATUS
00467 NTAPI
00468 MmMapUserAddressesToPage(
00469   _In_reads_bytes_(NumberOfBytes) PVOID BaseAddress,
00470   _In_ SIZE_T NumberOfBytes,
00471   _In_ PVOID PageAddress);
00472 
00473 _Must_inspect_result_
00474 _IRQL_requires_max_(APC_LEVEL)
00475 _Out_writes_bytes_opt_(NumberOfBytes)
00476 NTKERNELAPI
00477 PVOID
00478 NTAPI
00479 MmMapVideoDisplay(
00480   _In_ PHYSICAL_ADDRESS PhysicalAddress,
00481   _In_ SIZE_T NumberOfBytes,
00482   _In_ MEMORY_CACHING_TYPE CacheType);
00483 
00484 _Must_inspect_result_
00485 _IRQL_requires_max_(APC_LEVEL)
00486 NTKERNELAPI
00487 NTSTATUS
00488 NTAPI
00489 MmMapViewInSessionSpace(
00490   _In_ PVOID Section,
00491   _Outptr_result_bytebuffer_(*ViewSize) PVOID *MappedBase,
00492   _Inout_ PSIZE_T ViewSize);
00493 
00494 _Must_inspect_result_
00495 _IRQL_requires_max_(APC_LEVEL)
00496 NTKERNELAPI
00497 NTSTATUS
00498 NTAPI
00499 MmMapViewInSystemSpace(
00500   _In_ PVOID Section,
00501   _Outptr_result_bytebuffer_(*ViewSize) PVOID *MappedBase,
00502   _Inout_ PSIZE_T ViewSize);
00503 
00504 _IRQL_requires_max_(DISPATCH_LEVEL)
00505 NTKERNELAPI
00506 BOOLEAN
00507 NTAPI
00508 MmIsAddressValid(
00509   _In_ PVOID VirtualAddress);
00510 
00511 NTKERNELAPI
00512 BOOLEAN
00513 NTAPI
00514 MmIsThisAnNtAsSystem(VOID);
00515 
00516 _IRQL_requires_max_(APC_LEVEL)
00517 NTKERNELAPI
00518 VOID
00519 NTAPI
00520 MmLockPagableSectionByHandle(
00521   _In_ PVOID ImageSectionHandle);
00522 
00523 _IRQL_requires_max_(APC_LEVEL)
00524 NTKERNELAPI
00525 NTSTATUS
00526 NTAPI
00527 MmUnmapViewInSessionSpace(
00528   _In_ PVOID MappedBase);
00529 
00530 _IRQL_requires_max_(APC_LEVEL)
00531 NTKERNELAPI
00532 NTSTATUS
00533 NTAPI
00534 MmUnmapViewInSystemSpace(
00535   _In_ PVOID MappedBase);
00536 
00537 _IRQL_requires_max_(APC_LEVEL)
00538 NTKERNELAPI
00539 VOID
00540 NTAPI
00541 MmUnsecureVirtualMemory(
00542   _In_ HANDLE SecureHandle);
00543 
00544 _IRQL_requires_max_ (PASSIVE_LEVEL)
00545 NTKERNELAPI
00546 NTSTATUS
00547 NTAPI
00548 MmRemovePhysicalMemory(
00549   _In_ PPHYSICAL_ADDRESS StartAddress,
00550   _Inout_ PLARGE_INTEGER NumberOfBytes);
00551 
00552 _Must_inspect_result_
00553 _IRQL_requires_max_(APC_LEVEL)
00554 NTKERNELAPI
00555 HANDLE
00556 NTAPI
00557 MmSecureVirtualMemory(
00558   __in_data_source(USER_MODE) _In_reads_bytes_ (Size) PVOID Address,
00559   _In_ __in_data_source(USER_MODE) SIZE_T Size,
00560   _In_ ULONG ProbeMode);
00561 
00562 _IRQL_requires_max_(APC_LEVEL)
00563 NTKERNELAPI
00564 VOID
00565 NTAPI
00566 MmUnmapVideoDisplay(
00567   _In_reads_bytes_(NumberOfBytes) PVOID BaseAddress,
00568   _In_ SIZE_T NumberOfBytes);
00569 
00570 _IRQL_requires_max_ (PASSIVE_LEVEL)
00571 NTKERNELAPI
00572 NTSTATUS
00573 NTAPI
00574 MmAddPhysicalMemory(
00575   _In_ PPHYSICAL_ADDRESS StartAddress,
00576   _Inout_ PLARGE_INTEGER NumberOfBytes);
00577 
00578 _Must_inspect_result_
00579 _IRQL_requires_max_(DISPATCH_LEVEL)
00580 _When_(return != NULL, _Post_writable_byte_size_(NumberOfBytes))
00581 NTKERNELAPI
00582 PVOID
00583 NTAPI
00584 MmAllocateContiguousMemory(
00585   _In_ SIZE_T NumberOfBytes,
00586   _In_ PHYSICAL_ADDRESS HighestAcceptableAddress);
00587 
00588 _Must_inspect_result_
00589 _IRQL_requires_max_(DISPATCH_LEVEL)
00590 _When_(return != NULL, _Post_writable_byte_size_(NumberOfBytes))
00591 NTKERNELAPI
00592 PVOID
00593 NTAPI
00594 MmAllocateContiguousMemorySpecifyCache(
00595   _In_ SIZE_T NumberOfBytes,
00596   _In_ PHYSICAL_ADDRESS LowestAcceptableAddress,
00597   _In_ PHYSICAL_ADDRESS HighestAcceptableAddress,
00598   _In_opt_ PHYSICAL_ADDRESS BoundaryAddressMultiple,
00599   _In_ MEMORY_CACHING_TYPE CacheType);
00600 
00601 _Must_inspect_result_
00602 _IRQL_requires_max_(DISPATCH_LEVEL)
00603 _When_(return != NULL, _Post_writable_byte_size_(NumberOfBytes))
00604 NTKERNELAPI
00605 PVOID
00606 NTAPI
00607 MmAllocateContiguousMemorySpecifyCacheNode(
00608   _In_ SIZE_T NumberOfBytes,
00609   _In_ PHYSICAL_ADDRESS LowestAcceptableAddress,
00610   _In_ PHYSICAL_ADDRESS HighestAcceptableAddress,
00611   _In_opt_ PHYSICAL_ADDRESS BoundaryAddressMultiple,
00612   _In_ MEMORY_CACHING_TYPE CacheType,
00613   _In_ NODE_REQUIREMENT PreferredNode);
00614 
00615 _IRQL_requires_max_(DISPATCH_LEVEL)
00616 NTKERNELAPI
00617 VOID
00618 NTAPI
00619 MmFreeContiguousMemory(
00620   _In_ PVOID BaseAddress);
00621 
00622 _IRQL_requires_max_(DISPATCH_LEVEL)
00623 NTKERNELAPI
00624 VOID
00625 NTAPI
00626 MmFreeContiguousMemorySpecifyCache(
00627   _In_reads_bytes_(NumberOfBytes) PVOID BaseAddress,
00628   _In_ SIZE_T NumberOfBytes,
00629   _In_ MEMORY_CACHING_TYPE CacheType);
00630 $endif (_NTDDK_)
00631 $if (_NTIFS_)
00632 
00633 NTKERNELAPI
00634 BOOLEAN
00635 NTAPI
00636 MmIsRecursiveIoFault(VOID);
00637 
00638 _IRQL_requires_max_ (APC_LEVEL)
00639 NTKERNELAPI
00640 BOOLEAN
00641 NTAPI
00642 MmForceSectionClosed(
00643   _In_ PSECTION_OBJECT_POINTERS SectionObjectPointer,
00644   _In_ BOOLEAN DelayClose);
00645 
00646 _IRQL_requires_max_ (APC_LEVEL)
00647 NTKERNELAPI
00648 BOOLEAN
00649 NTAPI
00650 MmFlushImageSection(
00651   _In_ PSECTION_OBJECT_POINTERS SectionObjectPointer,
00652   _In_ MMFLUSH_TYPE FlushType);
00653 
00654 _IRQL_requires_max_ (APC_LEVEL)
00655 NTKERNELAPI
00656 BOOLEAN
00657 NTAPI
00658 MmCanFileBeTruncated(
00659   _In_ PSECTION_OBJECT_POINTERS SectionObjectPointer,
00660   _In_opt_ PLARGE_INTEGER NewFileSize);
00661 
00662 _IRQL_requires_max_ (APC_LEVEL)
00663 NTKERNELAPI
00664 BOOLEAN
00665 NTAPI
00666 MmSetAddressRangeModified(
00667   _In_reads_bytes_ (Length) PVOID Address,
00668   _In_ SIZE_T Length);
00669 $endif (_NTIFS_)
00670 
00671 #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
00672 
00673 $if (_WDMDDK_ || _NTIFS_)
00674 #if (NTDDI_VERSION >= NTDDI_WINXP)
00675 $endif (_WDMDDK_ || _NTIFS_)
00676 
00677 $if (_WDMDDK_)
00678 _IRQL_requires_max_(DISPATCH_LEVEL)
00679 NTKERNELAPI
00680 NTSTATUS
00681 NTAPI
00682 MmAdvanceMdl(
00683   _Inout_ PMDLX Mdl,
00684   _In_ ULONG NumberOfBytes);
00685 
00686 _Must_inspect_result_
00687 _IRQL_requires_max_(APC_LEVEL)
00688 _When_ (return != NULL, _Out_writes_bytes_opt_ (NumberOfBytes))
00689 NTKERNELAPI
00690 PVOID
00691 NTAPI
00692 MmAllocateMappingAddress(
00693   _In_ SIZE_T NumberOfBytes,
00694   _In_ ULONG PoolTag);
00695 
00696 _IRQL_requires_max_(APC_LEVEL)
00697 NTKERNELAPI
00698 VOID
00699 NTAPI
00700 MmFreeMappingAddress(
00701   _In_ PVOID BaseAddress,
00702   _In_ ULONG PoolTag);
00703 
00704 _IRQL_requires_max_ (APC_LEVEL)
00705 NTKERNELAPI
00706 NTSTATUS
00707 NTAPI
00708 MmIsVerifierEnabled(
00709   _Out_ PULONG VerifierFlags);
00710 
00711 _Post_writable_byte_size_(MemoryDescriptorList->ByteCount)
00712 _IRQL_requires_max_(DISPATCH_LEVEL)
00713 _At_(MemoryDescriptorList->MappedSystemVa + MemoryDescriptorList->ByteOffset,
00714   _Post_writable_byte_size_(MemoryDescriptorList->ByteCount))
00715 _Must_inspect_result_
00716 _Success_(return != NULL)
00717 NTKERNELAPI
00718 PVOID
00719 NTAPI
00720 MmMapLockedPagesWithReservedMapping(
00721   _In_ PVOID MappingAddress,
00722   _In_ ULONG PoolTag,
00723   _Inout_ PMDLX MemoryDescriptorList,
00724   _In_ __drv_strictTypeMatch(__drv_typeCond)
00725     MEMORY_CACHING_TYPE CacheType);
00726 
00727 _Must_inspect_result_
00728 _IRQL_requires_max_(DISPATCH_LEVEL)
00729 NTKERNELAPI
00730 NTSTATUS
00731 NTAPI
00732 MmProtectMdlSystemAddress(
00733   _In_ PMDLX MemoryDescriptorList,
00734   _In_ ULONG NewProtect);
00735 
00736 _IRQL_requires_max_(DISPATCH_LEVEL)
00737 NTKERNELAPI
00738 VOID
00739 NTAPI
00740 MmUnmapReservedMapping(
00741   _In_ PVOID BaseAddress,
00742   _In_ ULONG PoolTag,
00743   _Inout_ PMDLX MemoryDescriptorList);
00744 
00745 _IRQL_requires_max_ (APC_LEVEL)
00746 NTKERNELAPI
00747 NTSTATUS
00748 NTAPI
00749 MmAddVerifierThunks(
00750   _In_reads_bytes_ (ThunkBufferSize) PVOID ThunkBuffer,
00751   _In_ ULONG ThunkBufferSize);
00752 $endif (_WDMDDK_)
00753 $if (_NTIFS_)
00754 
00755 _IRQL_requires_max_ (PASSIVE_LEVEL)
00756 NTKERNELAPI
00757 NTSTATUS
00758 NTAPI
00759 MmPrefetchPages(
00760   _In_ ULONG NumberOfLists,
00761   _In_reads_ (NumberOfLists) PREAD_LIST *ReadLists);
00762 $endif (_NTIFS_)
00763 
00764 $if (_WDMDDK_ || _NTIFS_)
00765 #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
00766 $endif (_WDMDDK_ || _NTIFS_)
00767 $if (_WDMDDK_ || _NTDDK_)
00768 #if (NTDDI_VERSION >= NTDDI_WS03)
00769 $endif (_WDMDDK_ || _NTDDK_)
00770 $if (_WDMDDK_)
00771 _IRQL_requires_max_ (DISPATCH_LEVEL)
00772 NTKERNELAPI
00773 LOGICAL
00774 NTAPI
00775 MmIsIoSpaceActive(
00776   _In_ PHYSICAL_ADDRESS StartAddress,
00777   _In_ SIZE_T NumberOfBytes);
00778 $endif (_WDMDDK_)
00779 
00780 $if (_NTDDK_)
00781 _Must_inspect_result_
00782 _IRQL_requires_max_(PASSIVE_LEVEL)
00783 NTKERNELAPI
00784 NTSTATUS
00785 NTAPI
00786 MmCreateMirror(VOID);
00787 $endif (_NTDDK_)
00788 $if (_WDMDDK_ || _NTDDK_)
00789 #endif /* (NTDDI_VERSION >= NTDDI_WS03) */
00790 $endif (_WDMDDK_ || _NTDDK_)
00791 $if (_WDMDDK_)
00792 #if (NTDDI_VERSION >= NTDDI_WS03SP1)
00793 _Must_inspect_result_
00794 _IRQL_requires_max_ (DISPATCH_LEVEL)
00795 NTKERNELAPI
00796 PMDL
00797 NTAPI
00798 MmAllocatePagesForMdlEx(
00799   _In_ PHYSICAL_ADDRESS LowAddress,
00800   _In_ PHYSICAL_ADDRESS HighAddress,
00801   _In_ PHYSICAL_ADDRESS SkipBytes,
00802   _In_ SIZE_T TotalBytes,
00803   _In_ MEMORY_CACHING_TYPE CacheType,
00804   _In_ ULONG Flags);
00805 #endif
00806 $endif (_WDMDDK_)
00807 
00808 #if (NTDDI_VERSION >= NTDDI_VISTA)
00809 $if (_WDMDDK_)
00810 _IRQL_requires_max_ (APC_LEVEL)
00811 NTKERNELAPI
00812 LOGICAL
00813 NTAPI
00814 MmIsDriverVerifyingByAddress(
00815   _In_ PVOID AddressWithinSection);
00816 $endif (_WDMDDK_)
00817 $if (_NTDDK_)
00818 _Must_inspect_result_
00819 _IRQL_requires_max_(APC_LEVEL)
00820 NTSTATUS
00821 NTAPI
00822 MmRotatePhysicalView(
00823   _In_ PVOID VirtualAddress,
00824   _Inout_ PSIZE_T NumberOfBytes,
00825   _In_opt_ PMDLX NewMdl,
00826   _In_ MM_ROTATE_DIRECTION Direction,
00827   _In_ PMM_ROTATE_COPY_CALLBACK_FUNCTION CopyFunction,
00828   _In_opt_ PVOID Context);
00829 $endif (_NTDDK_)
00830 $if (_NTIFS_)
00831 
00832 _IRQL_requires_max_ (APC_LEVEL)
00833 NTKERNELAPI
00834 ULONG
00835 NTAPI
00836 MmDoesFileHaveUserWritableReferences(
00837   _In_ PSECTION_OBJECT_POINTERS SectionPointer);
00838 $endif (_NTIFS_)
00839 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
00840 

Generated on Sun May 27 2012 04:30:57 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.