MmGetSystemAddressForMdlSafe中safe的含義

MmGetSystemAddressForMdlSafe和MmGetSystemAddressForMdl其實都是宏,都直接或間接的調用了MmMapLockedPagesSpecifyCache內核函數。
MmMapLockedPagesSpecifyCache的聲明如下:

NTKERNELAPI PVOID
  MmMapLockedPagesSpecifyCache(
    IN PMDL  MemoryDescriptorList,
    IN KPROCESSOR_MODE  AccessMode,
    IN MEMORY_CACHING_TYPE  CacheType,
    IN PVOID  BaseAddress,
    IN ULONG  BugCheckOnFailure,
    IN MM_PAGE_PRIORITY  Priority
    );

注意到倒數第二個參數 BugCheckOnFailure了吧,如果是TRUE,在map發生錯誤的時候會引發bugcheck(就是藍屏)。如果是FALSE,則不會引發bugcheck,而是函數返回NULL。
MmGetSystemAddressForMdlSafe之所以安全,就是把這個參數設置爲FALSE,不會引發藍屏。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章