Compartilhar via


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

Confira também

Funções de enclave

CreateEnclave

InitializeEnclave

Constantes de proteção de memória