Win32 API 日本語リファレンス
ホーム › System.Memory › PSECURE_MEMORY_CACHE_CALLBACK

PSECURE_MEMORY_CACHE_CALLBACK

コールバック

シグネチャ

BOOLEAN PSECURE_MEMORY_CACHE_CALLBACK(
    void* Addr,
    UINT_PTR Range
);

パラメーター

フィールド型説明
Addrvoid*メモリ範囲の開始アドレスです。
RangeUINT_PTRメモリ範囲のサイズ (バイト単位) です。

公式ドキュメント

セキュリティ保護されたメモリ範囲が解放されたとき、またはその保護属性が変更されたときに呼び出される、 AddSecureMemoryCacheCallback 関数で あらかじめ登録されたアプリケーション定義の関数です。

PSECURE_MEMORY_CACHE_CALLBACK 型は、このコールバック関数へのポインターを定義します。SecureMemoryCacheCallback は アプリケーション定義の関数名のプレースホルダーです。

戻り値

戻り値は、この関数の成功または失敗を示します。

呼び出し元が指定されたメモリ範囲をセキュリティ保護している場合、この関数はそのメモリのセキュリティ保護を解除して TRUE を返す必要があります。

呼び出し元が指定されたメモリ範囲をセキュリティ保護していない場合、この関数は FALSE を返す必要があります。

解説(Remarks)

コールバック関数が登録されると、指定されたメモリ範囲を解放する操作やその保護属性を変更する操作が行われるたびに、その後で呼び出されます。アプリケーションが指定されたメモリ範囲の一部でもセキュリティ保護している場合、コールバック関数は、セキュリティ保護されたメモリ範囲に対するアプリケーションのキャッシュされたメモリマッピングをすべて無効化し、そのメモリ範囲のうちセキュリティ保護された部分の保護を解除したうえで、TRUE を返す必要があります。そうでない場合は FALSE を返す必要があります。

アプリケーションは、デバイスドライバーに要求を送ることでメモリ範囲のセキュリティ保護と解除を行います。デバイスドライバーは、MmSecureVirtualMemory 関数と MmUnsecureVirtualMemory 関数を使用して実際に範囲のセキュリティ保護と解除を行います。他の種類のセキュリティ保護されたメモリやロックされたメモリに対する操作では、このコールバックは呼び出されません。

コールバック関数を呼び出させる関数呼び出しの例としては、 VirtualFree、 VirtualFreeEx、 VirtualProtect、 VirtualProtectEx、 UnmapViewOfFile の各関数の呼び出しがあります。

コールバック関数は、ヒープ操作によって呼び出されることもあります。この場合、関数は、コールバックのきっかけとなったヒープに対してそれ以上の操作を行ってはなりません。これには、プライベートヒープやプロセスの既定のヒープに対する ヒープ関数 の呼び出しや、プロセスの既定のヒープを暗黙的に使用する malloc や free などの標準ライブラリ関数の呼び出しが含まれます。

コールバック関数の登録を解除するには、 RemoveSecureMemoryCacheCallback 関数を使用します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)