Partilhar via


Restrições de carregamento de DLLs com atraso

Há restrições sobre o carregamento de atraso de importações.

  • Importações de dados não podem ser aceitos. Uma alternativa é explicitamente manipular os dados de importação por conta própria usando LoadLibrary (ou GetModuleHandle depois que você sabe que o auxiliar de carregamento de atraso carregou a DLL) e GetProcAddress.

  • Não há suporte para carregamento Kernel32. dll com atraso. Essa DLL é necessária para as rotinas do auxiliar de carregamento de atraso executar o carregamento de atraso.

  • Ligação de entrada de pontos que são encaminhados não é suportado.

  • Atrasar o carregamento de uma DLL pode não resultar no mesmo comportamento do processo, se houver inicializações por processo que ocorrem no ponto de entrada da DLL atrasada-carregada. Outros casos incluem estático TLS (armazenamento local de segmento), declarado usando __declspec(thread), que não é tratado quando a DLL é carregada por meio de LoadLibrary. TLS dinâmico, usando TlsAlloc, TlsFree, TlsGetValue, e TlsSetValue, ainda está disponível para uso em DLLs estáticas ou atrasada-carregada.

  • Ponteiros de função de estática (global) devem ser reinicializados funções importadas após a primeira chamada para a função. Isso ocorre porque o primeiro uso do ponteiro de função irá apontar para a conversão.

  • Não há nenhuma forma atualmente atrasar o carregamento de apenas os procedimentos específicos de uma DLL enquanto estiver usando o mecanismo de importação normal.

  • Convenções de chamada personalizadas (como usar códigos de condição no x 86 arquiteturas) não são suportadas. Além disso, é possível usar tipos de dados de ponto flutuante em qualquer uma das rotinas auxiliares ou ganchos em máquinas RISC. Os registradores de ponto flutuante não são salvos em qualquer plataforma. Se sua rotina auxiliar personalizado ou as rotinas de gancho usarem tipos de ponto flutuante, eles precisam completamente salvar e restaurar o estado de ponto flutuante em máquinas com ident convenções com parâmetros de ponto flutuante de chamada. Tenha cuidado ao carregar a DLL de CRT, se você chamar funções de CRT usam parâmetros de ponto flutuante em uma pilha de processador de dados numéricos (NDP) na função de ajuda de atraso.

Consulte também

Conceitos

Suporte de vinculador para DLLs carregadas de atraso