Função LoadEnclaveData (enclaveapi.h)
Carrega dados em um enclave não inicializado que você criou chamando CreateEnclave.
Sintaxe
BOOL LoadEnclaveData(
[in] HANDLE hProcess,
[in] LPVOID lpAddress,
[in] LPCVOID lpBuffer,
[in] SIZE_T nSize,
[in] DWORD flProtect,
[in] LPCVOID lpPageInformation,
[in] DWORD dwInfoLength,
[out] PSIZE_T lpNumberOfBytesWritten,
[out, optional] LPDWORD lpEnclaveError
);
Parâmetros
[in] hProcess
Um identificador para o processo para o qual o enclave foi criado.
[in] lpAddress
O endereço no enclave em que você deseja carregar os dados.
[in] lpBuffer
Um ponteiro para os dados que você deseja carregar no enclave.
[in] nSize
O tamanho dos dados que você deseja carregar no enclave, em bytes. Esse valor deve ser um número inteiro múltiplo do tamanho da página.
[in] flProtect
A proteção de memória a ser usada para as páginas que você deseja adicionar ao enclave. Para obter uma lista de valores de proteção de memória, consulte constantes de proteção de memória. Esse valor não deve incluir as seguintes constantes:
- PAGE_GUARD
- PAGE_NOCACHE
- PAGE_WRITECOMBINE
- PAGE_NOACCESS
Esse valor pode incluir as constantes específicas do enclave que a tabela a seguir descreve:
Constante | Descrição |
---|---|
PAGE_ENCLAVE_THREAD_CONTROL | A página contém uma estrutura de controle de thread (TCS). |
PAGE_ENCLAVE_UNVALIDATED | O conteúdo da página que você fornece é excluído da medição com a instrução EEXTEND do modelo de programação extensões do Intel Software Guard. |
[in] lpPageInformation
Um ponteiro para informações que descrevem as páginas que você deseja adicionar ao enclave. O parâmetro lpPageInformation não é usado.
[in] dwInfoLength
O comprimento da estrutura para a qual o parâmetro lpPageInformation aponta, em bytes. Esse valor precisa ser 0
.
[out] lpNumberOfBytesWritten
Um ponteiro para uma variável que recebe o número de bytes que LoadEnclaveData copiou para o enclave.
[out, optional] lpEnclaveError
Um ponteiro opcional para uma variável que recebe um código de erro de enclave específico da arquitetura. O parâmetro lpEnclaveError não é usado.
Retornar valor
Se todos os dados forem carregados no enclave com êxito, o valor retornado será diferente de zero. Caso contrário, o valor retornado será zero. Para obter informações de erro estendidas, chame GetLastError.
Para obter uma lista de códigos de erro comuns, consulte Códigos de erro do sistema. Os códigos de erro a seguir também se aplicam a essa função.
Código de retorno | Descrição |
---|---|
ERROR_BAD_LENGTH | O valor do parâmetro dwInfoLength não correspondeu ao valor esperado com base no valor especificado para o parâmetro lpPageInformation . |
Comentários
Para inicializar o enclave depois de carregar dados no enclave, chame InitializeEnclave.
LoadEnclaveData só tem suporte para enclaves que têm os tipos de enclave ENCLAVE_TYPE_SGX e ENCLAVE_TYPE_SGX2 .
Requisitos
Cliente mínimo com suporte | Windows 10 [aplicativos da área de trabalho | Aplicativos UWP] |
Servidor mínimo com suporte | Windows Server 2016 [aplicativos da área de trabalho | Aplicativos UWP] |
Plataforma de Destino | Windows |
Cabeçalho | enclaveapi.h (inclua Winbase.h) |
Biblioteca | onecore.lib |
DLL | Api-ms-win-core-enclave-l1-1-0.dll; kernel32.dll; KernelBase.dll |