Funzione RtlVirtualUnwind (winnt.h)

Recupera il contesto di chiamata della funzione che precede il contesto di funzione specificato.

Nota

 Questa funzione non viene implementata in tutte le piattaforme del processore e l'implementazione è diversa in ogni piattaforma che la supporta. Il prototipo seguente elenca tutti i parametri potenziali e l'applicazione. Leggere altre informazioni per i prototipi di funzioni specifici del processore.

Sintassi

NTSYSAPI PEXCEPTION_ROUTINE RtlVirtualUnwind(
  [in]                DWORD                          HandlerType,
  [in]                DWORD64                        ImageBase,
  [in]                DWORD64                        ControlPc,
  [in]                PRUNTIME_FUNCTION              FunctionEntry,
  [in, out]           PCONTEXT                       ContextRecord,
  [out]               PVOID                          *HandlerData,
  [out]               PDWORD64                       EstablisherFrame,
  [in, out, optional] PKNONVOLATILE_CONTEXT_POINTERS ContextPointers
);

Parametri

[in] HandlerType

Tipo di gestore. Questo parametro può avere uno dei valori seguenti.

Questo parametro è presente solo in x64.

Valore Significato
UNW_FLAG_NHANDLER
0x0
La funzione non ha alcun gestore.
UNW_FLAG_EHANDLER
0x1
La funzione ha un gestore di eccezioni che deve essere chiamato.
UNW_FLAG_UHANDLER
0x2
La funzione ha un gestore di terminazione che deve essere chiamato quando si rimuove un'eccezione.
UNW_FLAG_CHAININFO
0x4
Il membro FunctionEntry è il contenuto di una voce di tabella delle funzioni precedente.

[in] ImageBase

Indirizzo di base del modulo a cui appartiene la funzione.

[in] ControlPc

Indirizzo virtuale in cui il controllo ha lasciato la funzione specificata.

[in] FunctionEntry

Indirizzo della voce della tabella della funzione per la funzione specificata. Per ottenere la voce della tabella delle funzioni, chiamare la funzione RtlLookupFunctionEntry .

[in, out] ContextRecord

Puntatore a una struttura CONTEXT che rappresenta il contesto del frame precedente.

[out] HandlerData

Posizione del PC. Se questo parametro è 0, il PC si trova nel prologo, nell'epilogo o in un'area del frame Null della funzione. Se questo parametro è 1, il PC si trova nel corpo della funzione.

Questo parametro non è presente in x64.

[out] EstablisherFrame

Puntatore a una struttura FRAME_POINTERS che riceve il valore del puntatore del frame di definizione. Il puntatore a fotogramma reale viene definito solo se InFunction è 1.

Questo parametro è di tipo PULONG64 in x64.

[in, out, optional] ContextPointers

Puntatore facoltativo a una struttura di puntatori di contesto.

Valore restituito

Questa funzione restituisce un puntatore a una funzione di callback EXCEPTION_ROUTINE .

Commenti

L'elenco completo dei marcatori epilogo per x64 è il seguente:

  • Ret
  • ret n
  • rep ret
  • jmp imm8 | imm32 in cui la destinazione non si trova all'esterno della funzione
  • jmp qword ptr imm32
  • rex.w jmp reg

Requisiti

   
Piattaforma di destinazione Windows
Intestazione winnt.h (includere Windows.h)
Libreria Kernel32.lib
DLL Kernel32.dll

Vedere anche

CONTESTO

EXCEPTION_RECORD

RtlLookupFunctionEntry

API Vertdll disponibili nelle enclave VBS