RtlEncryptMemory 函数 (ntsecapi.h)

[RtlDecryptMemory 函数可用于“要求”部分中指定的操作系统。 在后续版本中可能会更改或不可用。 请改用 CryptProtectMemory 函数。]

RtlEncryptMemory 函数加密内存内容。 可以通过后续调用 RtlDecryptMemory 函数来解密加密的内容。

注意

 此函数没有关联的导入库。 此函数可用作 Advapi32.dll中名为 systemFunction040 的资源。 必须使用 LoadLibraryGetProcAddress 函数动态链接到 Advapi32.dll

语法

NTSTATUS RtlEncryptMemory(
  [in, out] PVOID Memory,
  [in]      ULONG MemorySize,
  [in]      ULONG OptionFlags
);

参数

[in, out] Memory

指向要加密的内存的指针。 内存的大小必须是 RTL_ENCRYPT_MEMORY_SIZE 常量的倍数。

[in] MemorySize

内存 点的字节数。 字节数必须是 RTL_ENCRYPT_MEMORY_SIZE 常量中的倍数。

[in] OptionFlags

指定加密如何通过进程边界和模拟工作的值。 此参数可以是下列值之一。 这些值是互斥的。 加密和解密内存时,必须指定相同的标志。

价值 意义
0 在同一进程中加密和解密内存。 在不同进程中运行的应用程序将无法解密数据。
RTL_ENCRYPT_OPTION_CROSS_PROCESS
0x01
在不同进程中加密和解密内存。 在不同的进程中运行的应用程序将能够解密数据。
RTL_ENCRYPT_OPTION_SAME_LOGON
0x02
使用相同的登录凭据加密和解密不同进程中的内存。 在不同的进程中运行的应用程序将能够解密数据。 但是,进程必须以加密数据和在同一登录会话中的同一用户身份运行。
RTL_ENCRYPT_OPTION_FOR_SYSTEM
0x04
允许调用方仅通过系统进程对信息进行解密。

返回值

如果函数成功,则返回值 STATUS_SUCCESS

如果函数失败,则返回值为指示错误的 NTSTATUS 代码。

要求

要求 价值
最低支持的客户端 Windows XP、Windows XP [仅限桌面应用]
支持的最低服务器 Windows Server 2003、Windows Server 2003 [仅限桌面应用]
目标平台 窗户
标头 ntsecapi.h
DLL Advapi32.dll