Share via


SYM_DUMP_PARAM 구조체(wdbgexts.h)

IG_DUMP_SYMBOL_INFO Ioctl 작업은 기호 형식에 대한 정보를 제공합니다. IoctlType이 IG_DUMP_SYMBOL_INFO 로 설정된 Ioctl을 호출할 때 IpvData에는 SYM_DUMP_PARAM 구조의 instance 포함되어야 합니다.

구문

typedef struct _SYM_DUMP_PARAM {
  ULONG                    size;
  PUCHAR                   sName;
  ULONG                    Options;
  ULONG64                  addr;
  PFIELD_INFO              listLink;
  union {
    PVOID Context;
    PVOID pBuffer;
  };
  PSYM_DUMP_FIELD_CALLBACK CallbackRoutine;
  ULONG                    nFields;
  PFIELD_INFO              Fields;
  ULONG64                  ModBase;
  ULONG                    TypeId;
  ULONG                    TypeSize;
  ULONG                    BufferSize;
  ULONG                    fPointer : 2;
  ULONG                    fArray : 1;
  ULONG                    fStruct : 1;
  ULONG                    fConstant : 1;
  ULONG                    Reserved : 27;
} SYM_DUMP_PARAM, *PSYM_DUMP_PARAM;

멤버

size

이 구조체의 크기(바이트)를 지정합니다. sizeof(SYM_DUMP_PARAM)로 설정되어야 합니다.

sName

조회할 기호의 이름을 지정합니다.

Options

Ioctl 작업의 동작을 결정하는 플래그를 지정합니다. 이러한 플래그에 대한 설명은 비고를 참조하세요.

addr

기호의 주소를 지정합니다.

listLink

연결된 목록의 다음 항목이 포함된 필드를 지정합니다. 기호가 연결된 목록의 항목인 경우 이 Ioctl 작업은 목록의 다음 항목에 대한 포인터로 여기에 지정된 필드를 사용하여 목록의 항목을 반복할 수 있습니다. 이 구조체의 형식은 FIELD_INFO.

이 구조체의 fieldCallBack 멤버에 지정된 콜백 함수는 이 Ioctl 작업 중에 목록의 각 항목에 대해 호출됩니다. 호출될 때 이 linkList 구조체는 컨텍스트 멤버의 내용과 함께 목록 항목에 대해 채워진 멤버와 함께 전달됩니다.

Ioctl에 목록을 반복하도록 지시하려면 옵션에서 DBG_DUMP_LIST 설정해야 합니다.

Context

CallbackRoutine 멤버의 콜백 함수와 linkList 및 Fields 멤버의 fieldCallBack 멤버에 있는 콜백 함수에 전달되는 포인터를 지정합니다.

pBuffer

기호에 대한 정보를 수신하는 버퍼를 지정합니다. 이 버퍼는 옵션에서 DBG_DUMP_COPY_TYPE_DATA 플래그가 설정된 경우에만 사용됩니다. 이 버퍼의 크기는 BufferSize에 지정됩니다.

CallbackRoutine

엔진에서 호출하는 콜백 함수를 지정합니다. 엔진은 기호 및 해당 멤버에 대한 정보를 콜백 함수에 제공합니다.

nFields

필드 배열의 항목 수를 지정합니다.

Fields

지정된 기호의 개별 멤버에 대해 이 작업의 동작을 제어하는 FIELD_INFO 구조체의 배열을 지정합니다. 자세한 내용은 FIELD_INFO 참조하세요.

ModBase

기호가 포함된 모듈의 시작 부분에 대한 대상 메모리의 위치를 받습니다.

TypeId

기호의 형식 ID를 받습니다.

TypeSize

대상 메모리에 있는 기호의 크기(바이트)를 받습니다.

BufferSize

pBuffer 버퍼의 크기(바이트)를 지정합니다.

fPointer

기호가 포인터인지 여부를 나타내는 부울 값을 받습니다. 기호가 포인터가 아닌 경우 fPointerFALSE입니다. 기호가 32비트 포인터인 경우 1이고 기호가 64비트 포인터인 경우 3입니다.

fArray

기호가 배열인지 여부를 나타내는 부울 값을 받습니다. fArray 는 기호가 배열이 아닌 경우 FALSE 이고 이면 TRUE 입니다.

fStruct

기호가 구조체인지 여부를 나타내는 부울 값을 받습니다. fStruct 는 구조체가 아닌 경우 FALSE 이고 이면 TRUE 입니다.

fConstant

기호가 상수인지 여부를 나타내는 부울 값을 받습니다. fConstant 는 기호가 상수가 아니면 FALSE 이고 TRUE이면 FALSE 입니다.

Reserved

설명

IG_DUMP_SYMBOL_INFO Ioctl 작업에 대한 매개 변수는 SYM_DUMP_PARAM 구조체의 멤버입니다.

Ioctl 작업은 기호에 대한 모듈 정보를 조회하고 가능한 경우 모듈 기호를 로드합니다.

nFields가 0이고 DBG_DUMP_CALL_FOR_EACH 옵션에서 설정된 경우 CallbackRoutine에 지정된 콜백 함수는 기호의 모든 필드에 대해 호출됩니다.

nFields가 0이 아니고 DBG_DUMP_CALL_FOR_EACH 옵션에서 설정된 경우 Fields 요소 중 하나의 fName 멤버와 일치하는 필드에 대해서만 콜백이 만들어집니다. 필드가 fName 멤버와 일치하고 fieldCallBack 멤버가 NULL이 아닌 경우 fieldCallBack 의 콜백 함수가 호출됩니다. NULL이면 CallbackRoutine 의 콜백 함수가 대신 호출됩니다.

DBG_DUMP_XXX 비트 플래그는 SYM_DUMP_PARAM 구조체의 Options 멤버에서 IG_DUMP_SYMBOL_INFOIoctl 작업의 동작을 제어하는 데 사용됩니다.

다음 플래그가 있을 수 있습니다.

플래그 효과
DBG_DUMP_NO_INDENT 멤버는 출력에 들여쓰지 않습니다.
DBG_DUMP_NO_OFFSET 오프셋은 인쇄되지 않습니다.
DBG_DUMP_VERBOSE 자세한 정보 출력.
DBG_DUMP_CALL_FOR_EACH 각 멤버에 대해 콜백 함수가 호출됩니다.
DBG_DUMP_LIST 기호는 연결된 목록의 항목이며 IG_DUMP_SYMBOL_INFO Ioctl 작업은 이 목록을 반복합니다. 목록의 다음 항목을 가리키는 멤버에 대한 설명은 SYM_DUMP_PARAM 구조체의 linkList 멤버에 의해 지정됩니다.
DBG_DUMP_NO_PRINT 아무것도 인쇄되지 않습니다(콜백 함수만 호출되고 데이터 복사본이 수행됨).
DBG_DUMP_GET_SIZE_ONLY Ioctl 연산은 기호의 크기만 반환합니다. 멤버 정보 또는 콜백 함수를 인쇄하지 않습니다.
DBG_DUMP_COMPACT_OUT 줄임선은 각 멤버 다음에 인쇄되지 않습니다.
DBG_DUMP_ARRAY 기호는 배열입니다. 배열의 요소 수는 SYM_DUMP_PARAM 구조체의 멤버 listLink->크기 로 지정됩니다.
DBG_DUMP_ADDRESS_OF_FIELD addr 값은 실제로 기호의 시작이 아닌 SYM_DUMP_PARAM 구조체의 멤버 listLink->fName의 주소입니다.
DBG_DUMP_ADDRESS_AT_END addr 값은 실제로 기호의 시작이 아니라 기호 끝에 있는 주소입니다.
DBG_DUMP_COPY_TYPE_DATA 기호의 값이 멤버 pBuffer에 복사됩니다. 이는 기본 형식(예: ULONG 또는 PVOID)에만 사용할 수 있으며 구조체와 함께 사용할 수 없습니다.
DBG_DUMP_READ_PHYSICAL 기호의 값은 대상의 실제 메모리에서 직접 읽습니다.
DBG_DUMP_FUNCTION_FORMAT 함수 형식이 있는 기호의 서식을 지정할 때 함수 형식이 사용됩니다. 예를 들면 다음과 같습니다. function(arg1, arg2, ...)
DBG_DUMP_BLOCK_RECURSE 중첩된 구조체를 통해 재귀; 하지만 포인터를 따르지 않습니다.
 

또한 매크로 DBG_DUMP_RECUR_LEVEL(수준)의 결과를 비트 집합에 추가하여 재귀할 구조체의 깊이를 지정할 수 있습니다. 수준은 0에서 15 사이의 숫자일 수 있습니다.

DBG_DUMP_FIELD_XXX 비트 플래그는 FIELD_INFO 구조체의 fOptions 멤버에서 IG_DUMP_SYMBOL_INFOIoctl 작업의 동작을 제어하는 데 사용됩니다.

다음 플래그가 있을 수 있습니다.

플래그 효과
DBG_DUMP_FIELD_CALL_BEFORE_PRINT 멤버를 인쇄하기 전에 콜백 함수가 호출됩니다.
DBG_DUMP_FIELD_NO_CALLBACK_REQ 콜백 함수가 호출되지 않습니다.
DBG_DUMP_FIELD_RECUR_ON_THIS 멤버의 하위 멤버가 처리됩니다.
DBG_DUMP_FIELD_FULL_NAME fName 은 멤버가 처리되려면 일치하는 접두사를 갖는 것이 아니라 완전히 일치해야 합니다.
DBG_DUMP_FIELD_ARRAY 배열 멤버의 배열 요소를 인쇄합니다.
DBG_DUMP_FIELD_COPY_FIELD_DATA 멤버의 값이 pBuffer에 복사됩니다.
DBG_DUMP_FIELD_RETURN_ADDRESS 콜백 중 또는 Ioctl 이 반환되면 FIELD_INFO. address 멤버에는 기호 멤버의 주소가 포함됩니다.

형식에 대한 주소가 제공되지 않으면 FIELD_INFO. address 는 형식의 시작 부분에서 멤버의 총 오프셋을 포함합니다.

DBG_DUMP_FIELD_SIZE_IN_BITS 비트 필드의 경우 오프셋과 크기를 바이트 대신 비트 단위로 반환합니다.
DBG_DUMP_FIELD_NO_PRINT 이 멤버를 인쇄하지 마세요(콜백 함수만 호출되고 데이터 복사본이 수행됨).
DBG_DUMP_FIELD_DEFAULT_STRING DBG_DUMP_FIELD_WCHAR_STRING DBG_DUMP_FIELD_MULTI_STRING DBG_DUMP_FIELD_GUID_STRING 멤버가 포인터인 경우 문자열, ANSI 문자열, WCHAR 문자열, MULTI 문자열 또는 GUID로 인쇄됩니다.
 

또한 매크로 DBG_DUMP_RECUR_LEVEL(Level)의 결과를 비트 집합에 추가하여 재귀할 구조체의 깊이를 지정할 수 있습니다. 수준은 0에서 15 사이의 숫자일 수 있습니다.

요구 사항

요구 사항
헤더 wdbgexts.h(Wdbgexts.h, Dbgeng.h 포함)

추가 정보

DBG_DUMP_XXX

FIELD_INFO

IG_DUMP_SYMBOL_INFO 오류 코드

Ioctl