Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Se il flag UNW_FLAG_CHAININFO è impostato, una struttura UNWIND_INFO è una struttura secondaria e il campo indirizzo condiviso del gestore eccezioni o della struttura UNWIND_INFO concatenata contiene le informazioni di rimozione primarie. Il codice seguente recupera le informazioni UNWIND principali, presupponendo che unwindInfo sia la struttura con il flag UNW_FLAG_CHAININFO impostato.
PRUNTIME_FUNCTION primaryUwindInfo = (PRUNTIME_FUNCTION)&(unwindInfo->UnwindCode[( unwindInfo->CountOfCodes + 1 ) & ~1]);
La struttura UNWIND_INFO concatenata risulta utile in due situazioni. Innanzitutto può essere utilizzata per i segmenti di codice non contigui. L'utilizzo di questa struttura consente di ridurre la dimensione delle voci UNWIND_INFO richieste, poiché non è necessario duplicare la matrice dei codici di rimozione dalla struttura UNWIND_INFO principale.
È possibile utilizzare anche informazioni concatenate per raggruppare i salvataggi dei registri volatili. Il compilatore può ritardare il salvataggio di alcuni registri volatili finché non esce dal prologo della voce di funzione. È possibile registrare la voce UNWIND_INFO principale relativa alla parte della funzione prima del codice raggruppato e quindi impostare la struttura UNWIND_INFO concatenata con una dimensione del prologo diversa da zero, dove i codici di rimozione in tale struttura riflettono le operazioni di salvataggio dei registri non volatili. In tal caso, tutti i codici di rimozione sono istanze di UWOP_SAVE_NONVOL. Un raggruppamento che salva registri non volatili tramite un PUSH o modifica i file MSBuild .rsp tramite un'allocazione dello stack fissa aggiuntiva non è supportato.
Un elemento UNWIND_INFO che dispone di un set UNW_FLAG_CHAININFO può contenere una voce RUNTIME_FUNCTION il cui elemento UNW_FLAG_CHAININFO dispone anche di un set UNWIND_INFO (shrink-wrapping multiplo). I puntatori UNWIND_INFO concatenati arriveranno infine a un elemento UNWIND_INFO in cui il flag UNW_FLAG_CHAININFO non è impostato. Si tratta dell'elemento UNWIND_INFO principale che punta al punto di ingresso effettivo della routine.
Vedere anche
Riferimenti
Dati di rimozione per la gestione delle eccezioni, supporto del debugger