Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A invocação de plataforma é um serviço que permite que o código gerenciado chame funções não gerenciadas implementadas em DLLs (bibliotecas de link dinâmico), como as da API do Windows. Ele localiza e invoca uma função exportada e gerencia seus argumentos (inteiros, cadeias de caracteres, matrizes, estruturas e assim por diante) através da fronteira de interoperação conforme necessário.
Esta seção apresenta tarefas associadas ao consumo de funções de DLL não gerenciadas e fornece mais informações sobre a invocação da plataforma. Além das tarefas a seguir, há considerações gerais e um link que fornece informações e exemplos adicionais.
Para consumir funções de DLL exportadas
-
Minimamente, você deve especificar o nome da função e o nome da DLL que a contém.
Crie uma classe para manter funções DLL.
Você pode usar uma classe existente, criar uma classe individual para cada função não gerenciada ou criar uma classe que contenha um conjunto de funções não gerenciadas relacionadas.
Crie protótipos no código gerenciado.
[Visual Basic] Use a instrução Declare com as palavras-chave Function e Lib. Em alguns casos raros, você pode usar DllImportAttribute com as palavras-chave Shared Function. Esses casos são explicados posteriormente nesta seção.
[C#] Use o DllImportAttribute para identificar a DLL e a função. Marque o método com os modificadores estáticos e extern .
[C++] Use o DllImportAttribute para identificar a DLL e a função. Marque o método ou função wrapper com extern "C".
-
Chame o método em sua classe gerenciada como faria com qualquer outro método gerenciado. Passar estruturas e implementar funções de retorno de chamada são casos especiais.
Para exemplos que demonstram como construir declarações baseadas em .NET para serem usadas com a invocação de plataforma, consulte Marshalling Data with Platform Invoke.
Visão aprofundada da invocação de plataforma
A invocação de plataforma depende de metadados para localizar funções exportadas e organizar seus argumentos durante a execução. A ilustração a seguir mostra este processo.
Quando a plataforma invoca uma função não-gerenciada, ela executa a seguinte sequência de ações:
Localiza a DLL que contém a função.
Carrega a DLL na memória.
Localiza o endereço da função na memória e efetua push de seus argumentos para a pilha, realizando marshaling dos dados, conforme necessário.
Observação
Localizar e carregar a DLL e localizar o endereço da função na memória ocorrem apenas na primeira chamada para a função.
Transfere o controle para a função não gerenciada.
A invocação de plataforma gera exceções geradas pela função não gerenciada para o chamador gerenciado.