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