PWINDBG_IOCTL_ROUTINE - NtDoc

Native API online documentation, based on the System Informer (formerly Process Hacker) phnt headers
// wdbgexts.h

PWINDBG_IOCTL_ROUTINE PwindbgIoctlRoutine;

ULONG PwindbgIoctlRoutine(
  USHORT IoctlType,
  PVOID lpvData,
  ULONG cbSize
)
{...}
View the official Windows Driver Kit DDI reference

NtDoc

No description available.

Windows Driver Kit DDI reference (nc-wdbgexts-pwindbg_ioctl_routine)

PWINDBG_IOCTL_ROUTINE callback function

Description

The PWINDBG_IOCTL_ROUTINE (Ioctl) function performs a variety of different operations. Much of its functionality mirrors the functionality of other functions in wdbgexts.h.

Parameters

IoctlType

Specifies which Ioctl operation to perform. For a list of possible IoctlType values, see the "Remarks" section.

lpvData

Points to the address of a data structure. The type of structure that is required depends on the value of IoctlType.

cbSize

Specifies the size of the structure that lpvData points to.

Return value

The meaning of return value depends on IoctlType. See the page for the corresponding Ioctl operation for the meaning of the return value.

Remarks

The Ioctl function is the entry point for many of the functionalities supplied for WdbgExts extensions. Many of the other functions in wdbgexts.h are simply wrappers for calls to Ioctl.

The following table lists the possible IoctlType values. If the IoctlType corresponds to another function, that function is provided; otherwise, a link to the page describing the Ioctl operation is provided.

IoctlType constant Equivalent function lpData structure
IG_KD_CONTEXT GetKdContext
IG_READ_CONTROL_SPACE ReadControlSpace

ReadControlSpace64
IG_WRITE_CONTROL_SPACE WriteControlSpace
IG_READ_IO_SPACE ReadIoSpace

ReadIoSpace64
IG_WRITE_IO_SPACE WriteIoSpace

WriteIoSpace64
IG_READ_PHYSICAL ReadPhysical
IG_WRITE_PHYSICAL WritePhysical
IG_READ_IO_SPACE_EX ReadIoSpaceEx

ReadIoSpaceEx64
IG_WRITE_IO_SPACE_EX WriteIoSpaceEx

WriteIoSpaceEx64
IG_SET_THREAD SetThreadForOperation

SetThreadForOperation64
IG_READ_MSR ReadMsr
IG_WRITE_MSR WriteMsr
IG_GET_DEBUGGER_DATA GetDebuggerData
IG_GET_KERNEL_VERSION DBGKD_GET_VERSION64
IG_RELOAD_SYMBOLS ReloadSymbols
IG_GET_SET_SYMPATH GetSetSympath
IG_GET_EXCEPTION_RECORD
IG_IS_PTR64 IsPtr64
IG_GET_BUS_DATA GETSETBUSDATA
IG_SET_BUS_DATA GETSETBUSDATA
IG_DUMP_SYMBOL_INFO SYM_DUMP_PARAM
IG_LOWMEM_CHECK See Remarks.
IG_SEARCH_MEMORY SearchMemory
IG_GET_CURRENT_THREAD GetCurrentThreadAddr
IG_GET_CURRENT_PROCESS GetCurrentProcessAddr
IG_GET_TYPE_SIZE GetTypeSize
IG_GET_CURRENT_PROCESS_HANDLE GetCurrentProcessHandle
IG_GET_INPUT_LINE GetInputLine
IG_GET_EXPRESSION_EX GetExpressionEx
IG_TRANSLATE_VIRTUAL_TO_PHYSICAL TranslateVirtualToPhysical
IG_GET_CACHE_SIZE GetDebuggerCacheSize
IG_READ_PHYSICAL_WITH_FLAGS ReadPhysicalWithFlags
IG_WRITE_PHYSICAL_WITH_FLAGS WritePhysicalWithFlags
IG_POINTER_SEARCH_PHYSICAL POINTER_SEARCH_PHYSICAL
IG_GET_THREAD_OS_INFO WDBGEXTS_THREAD_OS_INFO
IG_GET_CLR_DATA_INTERFACE
IG_GET_TEB_ADDRESS GetTebAddress
IG_GET_PEB_ADDRESS GetPebAddress

The IG_LOWMEM_CHECK Ioctl operation looks for memory corruption in the low 4 GB of memory.

This Ioctl operation does not take any parameters and the lpvData and cbSizeOfContext parameters should be set to NULL and zero respectively.

Return Value

If no corrupt memory was found, the return value is TRUE; otherwise, it is FALSE.

This operation is only available in kernel-mode debugging, and is only useful when the kernel was started using the /nolowmem option.

When the kernel is started with the /nolowmem option, the kernel, drivers, operating system, and applications are loaded in memory above 4 GB, while the low 4 GB of memory is filled with a unique pattern. The IG_LOWMEM_CHECK Ioctl operation checks this pattern for corruption.

This can be used to verify that a driver works correctly when using physical addresses greater than 32 bits in length. See Physical Address Extension (PAE), /pae, and /nolowmem in the Windows Driver Kit.