次の方法で共有


PSECURE_MEMORY_CACHE_CALLBACK コールバック関数 (winnt.h)

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

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

構文

PSECURE_MEMORY_CACHE_CALLBACK PsecureMemoryCacheCallback;

BOOLEAN PsecureMemoryCacheCallback(
  [in] PVOID Addr,
  [in] SIZE_T Range
)
{...}

パラメーター

[in] Addr

メモリ範囲の開始アドレス。

[in] Range

メモリ範囲のサイズ (バイト単位)。

戻り値

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

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

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

注釈

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

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

コールバック関数をトリガーする関数呼び出しの例には、 VirtualFreeVirtualFreeExVirtualProtectVirtualProtectExUnmapViewOfFile 関数の呼び出しがあります。

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

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

要件

要件
サポートされている最小のクライアント Windows Vista と SP1 [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー winnt.h (Windows.h を含む)

こちらもご覧ください

AddSecureMemoryCacheCallback

RemoveSecureMemoryCacheCallback