Clone
6
DetourAttachEx
Brian Gianforcaro edited this page 2021-07-21 14:59:46 -07:00

DetourAttachEx

Attach a detour to a target function and retrieve additional detail about the ultimate target.

Definition

LONG DetourAttachEx(
    _Inout_   PVOID * ppPointer,
    _In_      PVOID pDetour,
    _Out_opt_ PDETOUR_TRAMPOLINE * ppRealTrampoline
    _Out_opt_ PVOID * ppRealTarget
    _Out_opt_ PVOID * ppRealDetour
);

Parameters

ppPointer
Pointer to the target pointer to which the detour will be attached. See the remarks section below for additional considerations.
pDetour
Pointer to the detour function.
ppRealTrampoline
Variable to optionally receive the address of the trampoline.
ppRealTarget
Variable to optionally receive the final address of the target function.
ppRealDetour
Variable to optionally receive the final address of the detour function.

Return value

Returns NO_ERROR if successful; otherwise, returns an error code.

Error codes

ERROR_INVALID_BLOCK
The function referenced is too small to be detoured.
ERROR_INVALID_HANDLE
The ppPointer parameter is NULL or points to a NULL` pointer.
ERROR_INVALID_OPERATION
No pending transaction exists.
ERROR_NOT_ENOUGH_MEMORY
Not enough memory exists to complete the operation.

Remarks

Warning: The variable pointed to by the ppPointer argument must remain alive for the duration of the transaction, that is until DetourTransactionCommit, DetourTransactionCommitEx or DetourTransactionAbort is called.

DetourAttachEx attaches a detour to a target function and retrieves additional detail about the ultimate target as part of the current transaction opened by the DetourTransactionBegin API.

For more information on using Detours to intercept function calls, see Interception of Binary Functions or Using Detours in the Detours Overview.

dynamic_alloc, Tracebld.