Condividi tramite


Vincoli delle DLL a caricamento ritardato

Per il caricamento ritardato delle importazioni sono definiti alcuni vincoli.

  • Le importazioni di dati non possono essere supportate. Una soluzione alternativa consiste nel gestire personalmente e in modo esplicito l'importazione di dati mediante LoadLibrary, oppure GetModuleHandle in seguito al caricamento effettivo della DLL mediante il supporto del caricamento ritardato, e GetProcAddress.

  • Il caricamento ritardato di Kernel32.dll non è supportato. Questa DLL è necessaria alle routine di supporto del caricamento ritardato per l'esecuzione delle relative attività.

  • L'associazione di punti di ingresso inoltrati non è supportata.

  • Se si verificano inizializzazioni per processo nel punto di ingresso della DLL a caricamento ritardato, il comportamento del caricamento ritardato di una DLL può essere diverso. Altri casi comprendono la memoria locale di thread statica dichiarata con __declspec(thread), che non è gestita quando la DLL viene caricata mediante LoadLibrary. La memoria locale di thread dinamica, che utilizza TlsAlloc, TlsFree, TlsGetValue e TlsSetValue, può essere comunque utilizzata in DLL statiche e in DLL a caricamento ritardato.

  • I puntatori a funzione statici (globali) devono essere reinizializzati sulle funzioni importate dopo la prima chiamata alla funzione, in quanto durante il primo utilizzo della funzione a puntatore verrà considerato come riferimento il thunk.

  • Attualmente non è possibile ritardare il caricamento da una DLL delle sole routine specifiche con l'utilizzo del normale meccanismo di importazione.

  • Le convenzioni di chiamata personalizzate, come l'uso di flag su architetture x86, non sono supportate. Non è inoltre consentito l'uso di tipi di data a virgola mobile negli hook o nelle routine di supporto su computer RISC. I registri a virgola mobile non vengono salvati in alcuna piattaforma. Se nella routine di supporto o nelle routine di hook personalizzate vengono utilizzati tipi a virgola mobile, è necessario salvare e ripristinare completamente lo stato della virgola mobile sui computer mediante convenzioni di chiamata del registro con parametri a virgola mobile. Il caricamento ritardato della DLL CRT deve essere eseguito con particolare attenzione nel caso in cui vengano effettuate chiamate alle funzioni CRT che accettano parametri a virgola mobile su uno stack NDP (numeric data processor) nella funzione di supporto.

Vedere anche

Concetti

Supporto per le DLL a caricamento ritardato nel linker