Fonction RtlVirtualUnwind (winnt.h)
Récupère le contexte d’appel de la fonction qui précède le contexte de fonction spécifié.
Notes
Cette fonction n’est pas implémentée sur toutes les plateformes de processeur et l’implémentation est différente sur chaque plateforme qui la prend en charge. Le prototype suivant répertorie tous les paramètres potentiels et leur application. Pour plus d’informations, consultez les prototypes de fonction spécifiques au processeur.
Syntaxe
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
);
Paramètres
[in] HandlerType
Type de gestionnaire. Ce paramètre peut prendre les valeurs suivantes.
Ce paramètre est uniquement présent sur x64.
[in] ImageBase
Adresse de base du module auquel la fonction appartient.
[in] ControlPc
Adresse virtuelle où le contrôle a quitté la fonction spécifiée.
[in] FunctionEntry
Adresse de l’entrée de la table de fonction pour la fonction spécifiée. Pour obtenir l’entrée de la table de fonction, appelez la fonction RtlLookupFunctionEntry .
[in, out] ContextRecord
Pointeur vers une structure CONTEXT qui représente le contexte de l’image précédente.
[out] HandlerData
Emplacement du PC. Si ce paramètre est 0, le PC se trouve dans le prologue, l’épilogue ou une zone de trame null de la fonction. Si ce paramètre a la valeur 1, le PC se trouve dans le corps de la fonction.
Ce paramètre n’est pas présent sur x64.
[out] EstablisherFrame
Pointeur vers une structure de FRAME_POINTERS qui reçoit la valeur du pointeur de trame d’établissement. Le pointeur d’image réel est défini uniquement si InFunction est 1
.
Ce paramètre est de type PULONG64 sur x64.
[in, out, optional] ContextPointers
Pointeur facultatif vers une structure de pointeurs de contexte.
Valeur retournée
Cette fonction retourne un pointeur vers une fonction de rappel EXCEPTION_ROUTINE .
Remarques
La liste complète des marqueurs d’épilogue pour x64 est la suivante :
- Ret
- ret n
- rep ret
- jmp imm8 | imm32 où la cible se trouve en dehors de la fonction en cours de déwound
- jmp qword ptr imm32
- rex.w jmp reg
Configuration requise
Plateforme cible | Windows |
En-tête | winnt.h (inclure Windows.h) |
Bibliothèque | Kernel32.lib |
DLL | Kernel32.dll |