Condividi tramite


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