Compartilhar 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 solução 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 com atraso.

  • Ligação de entrada não há pontos que são encaminhados.

  • 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 carregado com atraso.

  • Ponteiros de função (global) estático devem ser reinicializados para 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 intermediária.

  • Não é possível no momento para atrasar o carregamento de apenas os procedimentos específicos de uma DLL enquanto estiver usando o mecanismo de importação normal.

  • Não há suporte para convenções de chamada personalizadas (como usar códigos de condição na x 86 arquiteturas).Além disso, você não pode usar tipos de dados de ponto flutuante em qualquer um dos ganchos em máquinas RISC ou rotinas auxiliares.Os registradores de ponto flutuante não são salvos em qualquer plataforma.Se sua rotina auxiliar personalizado ou rotinas de gancho usarem tipos de ponto flutuante, eles precisarão 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 do CRT, se você chamar funções de CRT que 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 carregado com atraso