PsWalkPageVirtual

Performs a page walk on the specified address. Converts a virtual address to a physical address and returns information about the translation.

Syntax

PULSE_STATUS PsWalkPageVirtual(
 [in] PPS_ENGINE pEngine,
 [in] uint64_t PageTableAddress,
 [in] uint16_t Selector,
 [in] uint64_t Offset,
 [out] PPS_PAGE_WALK_INFO pPageWalkInfo
);

Parameters

PPS_ENGINE pEngine

An opaque handle to an engine created by the EngCreateEngine function.

uint64_t PageTableAddress

The target page-table root address. This page-table is used to perform a page walk for the specified address. The currently loaded page-table address is stored in the CR3 register.

uint16_t Selector

The segment selector used to translate the virtual address into a physical address.

uint64_t Offset

The segment offset used to translate the virtual address into a physical address.

PPS_PAGE_WALK_INFO pPageWalkInfo

Receives information about the virtual-to-physical address translation. Refer to the PS_PAGE_WALK_INFO structure for more information.

Return value

If the function succeeds, the return value is PULSE_STATUS_SUCCESS.

If it fails, it returns one of the PULSE_STATUS values. Possible return codes include, but are not limited to, the following:

PULSE_STATUS_INSUFFICIENT_RESOURCES
0xC0000002
One of the memory allocations failed during initialization.
PULSE_STATUS_TIMEOUT
0xC0000007
Might happen if
  • Transport I/O timed out.
  • No response was received from the debuggee within the request timeout period.
PULSE_STATUS_INVALID_PARAMETER
0xC0000010
Might happen if
  • The pEngine parameter is NULL.
  • The pPageWalkInfo parameter is NULL.
PULSE_STATUS_INVALID_CPU_MODE
0xC0000022
The current page walk mode is invalid.
PULSE_STATUS_INVALID_PACKET
0xC0000031
An invalid or unexpected packet was received in response.
PULSE_STATUS_INVALID_TRANSLATION
0xC0000021
Virtual to physical address translation failed. Might happen if the effective address exceeds the segment limit.
PULSE_STATUS_DEVICE_CONNECTION_LOST
0xC0000308
The connection to the transport was lost. Try restarting the engine or the transport.