Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenmmfuncs.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
1.7.6.1
|