c++ - CreateEnclave VBS 尝试访问无效地址

标签 c++ enclave

我正在尝试使用去年推出的 Hyper-V 基于虚拟化的安全性创建一个简单的 Enclave,但是,我发现 MSDN 上缺乏文档。因此,我无法正确诊断我遇到的问题。

这里的代码对我来说失败了,enclave == null给我尝试访问无效地址。而且我不太确定它无法访问什么。

if (IsEnclaveTypeSupported(ENCLAVE_TYPE_VBS))
{
    DWORD lpError = 0;
    ENCLAVE_CREATE_INFO_VBS vci = { 0 };
    vci.Flags = 1;

    PVOID enclave = CreateEnclave(GetCurrentProcess(),
        NULL,
        4096 * 2,
        NULL,
        ENCLAVE_TYPE_VBS,
        &vci,
        sizeof(ENCLAVE_CREATE_INFO_VBS),
        &lpError);

    if (enclave != NULL)
    {
        printf("Enclave created\n");
    }
    else
    {
        printf(GetLastErrorAsString().c_str());
    }
}
else {
    printf("VBS not supported\n");
}

最佳答案

好的,我已经解决了,看起来 dwSize 有一个最小大小,而且它只适用于偶数 Mb。

例如1Mb、3Mb、5Mb等不起作用,返回“尝试访问无效地址”。而 2Mb、4Mb、6Mb 等则按预期工作。

关于c++ - CreateEnclave VBS 尝试访问无效地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50899790/

相关文章:

c++ - ZeroMQ C++ 客户端没有收到

sgx - 如何证明某些数据是在Enclave(Intel SGX)内部计算(或生成)的?

android - 本地 iOS/Android key 存储是否已备份并且可以转移?

windows - 将图像加载到 enclave 内存中

c++ - 永久更改光标

c++ - 谁能解释一下这个图像分辨率设置代码?这到底是怎么回事

c++ - 如何在 C++ 中正确验证整数?

ios - 即使应用程序卸载后,Secure Enclave key 仍然存在

c++ - 加载飞 map 像 "A device attached to the system is not functioning"

c++ - 将巨大的文本缓冲区加载到QPlainTextEdit中