Vincoli delle DLL a caricamento ritardato
Per il caricamento ritardato delle importazioni esistono dei vincoli.
Le importazioni di dati non possono essere supportate. Una soluzione alternativa consiste nel gestire personalmente, in modo esplicito, l'importazione di dati mediante LoadLibrary (o GetModuleHandle quando si è certi che la DLL sia stata caricata dal supporto per il 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 usa TlsAlloc, TlsFree, TlsGetValue e TlsSetValue, può essere comunque usata per DLL statiche e 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 uso della funzione a puntatore verrà considerato come riferimento il thunk.
Non è attualmente possibile ritardare il caricamento da una DLL delle sole routine specifiche con l'uso del normale meccanismo di importazione.
Le convenzioni di chiamata personalizzate, come l'uso di flag su architetture x86, non sono supportate. I registri a virgola mobile, inoltre, non vengono salvati su nessuna piattaforma. Se nella routine di supporto o nelle routine di hook personalizzate vengono usati tipi a virgola mobile, è necessario salvare e ripristinare completamente lo stato della virgola mobile sui computer che usano 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