C30029
警告: 実行可能メモリを要求するメモリ割り当て関数の呼び出し
この警告は、禁止になっている関数が使用されており、より堅牢または安全な代替関数があることを示します。 この特定のエラーは、実行可能な非ページ プールのみを割り当てる API の使用を示します。
解説
これは、実行可能メモリが必要な場合にのみ使用してください。 詳細については、「No-Execute (NX) Nonpaged Pool」を参照してください。 この動作を変更するパラメーターを指定することはできません。 この問題を解決する唯一の方法は、実行可能でない非ページ プール メモリを割り当て可能な代替関数を使用することです。 このエラーの対象となるすべての禁止されている関数の一覧および推奨される代替は、次の例の後にあります。
コード分析名: BANNED_MEM_ALLOCATION_NOTYPE
例
この警告が発生するコード例を次に示します。 この問題は、MmMapIoSpace
の使用に起因します。
MmMapIoSpace(PhysicalAddress, numberOfBytes, MmNonCached);
次のコードは、MmMapIoSpace
を MmMapIoSpace
に置き換えることでこの警告を回避します。
MmMapIoSpaceEx(PhysicalAddress, numberOfBytes, PAGE_NOCACHE | PAGE_READWRITE);
禁止されている関数
禁止されている API | 置換 | 根拠/注意事項 |
---|---|---|
MmMapIoSpace() |
MmMapIoSpaceEx() |
|
MmAllocateContiguousMemorySpecifyCache() |
MmAllocateContiguousNodeMemory() |
キャッシュの種類によっては、実行可能でないメモリに制限する方法で SpecifyCache を使用できます。 ただし、NodeMemory を使用すると、これが保証されます。 詳細については、C30030 のサブセクション「キャッシュの種類に関連する欠陥の場合」を参照してください。 |
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示