C30029
警告:呼叫要求可執行記憶體的記憶體配置函式
此警告表示正在使用已禁止且具有更強固或更安全的取代函式。 這個特定錯誤表示使用只配置可執行檔非分頁集區的 API。
備註
只有當需要可執行記憶體時,才應該使用這個選項。 如需詳細資訊,請參閱 No-Execute (NX) 非分頁集 區。 您無法提供任何參數來變更此行為。 修正此問題的唯一方法是使用允許配置非可執行的非分頁集區內存的替代函式。 此錯誤涵蓋的所有禁用函式清單,並在下列範例之後找到建議的取代專案。
程式代碼分析名稱:BANNED_MEM_ALLOCATION_NOTYPE
範例
下列程式代碼會產生此警告。 此問題源於 使用 MmMapIoSpace
:
MmMapIoSpace(PhysicalAddress, numberOfBytes, MmNonCached);
下列程式代碼會將 取代 MmMapIoSpace
為 MmMapIoSpace
來避免此警告:
MmMapIoSpaceEx(PhysicalAddress, numberOfBytes, PAGE_NOCACHE | PAGE_READWRITE);
禁用函式
禁用 API | Replacement(s) | 理由/附注 |
---|---|---|
MmMapIoSpace() |
MmMapIoSpaceEx() |
|
MmAllocateContiguousMemorySpecifyCache() |
MmAllocateContiguousNodeMemory() |
根據快取類型,SpecifyCache 可以透過將它限制為非可執行記憶體的方式使用。 不過,使用 NodeMemory 可確保這一點。 如需詳細資訊,請參閱 C30030,小節 。 |