GetShortField 함수(wdbgexts.h)
GetShortField 함수는 크기가 8바이트보다 작거나 같은 경우 구조체에서 멤버의 값을 읽거나 나중에 읽을 수 있도록 구조를 초기화합니다. 이 함수는 직접 사용할 수 없습니다. 대신 InitTypeRead 또는 InitTypeReadPhysical 및 ReadField 를 사용해야 합니다.
구문
ULONG64 GetShortField(
[in] IN ULONG64 TypeAddress,
[in] IN LPCSTR Name,
[in] IN USHORT StoreAddress
);
매개 변수
[in] TypeAddress
이 매개 변수의 의미는 StoreAddress 값에 따라 달라집니다.
StoreAddress가 0이 아닌 경우:
대상의 메모리에 있는 구조체의 주소를 지정합니다. 이 주소는 StoreAddress 가 0인 경우 후속 호출에 사용됩니다.
StoreAddress가 0인 경우:
TypeAddress 는 무시됩니다. StoreAddress가 0이 아닌 마지막 호출의 TypeAddress 값은 대상의 메모리에서 구조체의 주소를 지정하는 데 사용됩니다.
[in] Name
이 매개 변수의 의미는 StoreAddress 값에 따라 달라집니다.
StoreAddress가 0이 아닌 경우:
TypeAddress에서 구조체 형식의 이름을 지정합니다.
StoreAddress가 0인 경우:
읽을 구조체의 멤버 이름을 지정합니다. 구조체의 주소와 형식은 StoreAddress 가 0이 아닌 이 함수에 대한 이전 호출에서 기억됩니다. 하위 사용자는 마침표로 구분된 경로(예: "myfield.mysubfield")를 사용하여 지정할 수 있습니다.
[in] StoreAddress
이 함수의 모드를 지정합니다.
StoreAddress가 0이 아닌 경우:
이 함수가 멤버를 읽기 위한 구조를 초기화하도록 합니다. 구조체의 주소 및 형식 이름이 기억됩니다.
0x2 비트 값이 StoreAddress에 설정된 경우 주소 TypeAddress 는 실제 주소로 간주됩니다. 그렇지 않으면 가상 주소로 간주됩니다.
StoreAddress가 0인 경우:
이 함수가 이전에 초기화된 구조체에서 멤버를 읽도록 합니다.
반환 값
반환 코드 | 설명 |
---|---|
|
함수가 성공하면 값 0을 반환합니다. 호출자가 0 값을 TypeAddress로 전달했기 때문에 함수가 실패하면 MEMORY_READ_ERROR 값을 반환합니다(Wdbgexts.h에 정의됨). 다른 이유로 인해 함수가 실패하면 IG_DUMP_SYMBOL_INFO 오류 코드가 반환됩니다. |
|
함수가 성공하면 이전에 초기화된 구조체에서 지정된 필드의 값을 반환합니다. 구조체는 GetShortField에 대한 이전 호출에서 초기화된 구조체입니다. 필드는 GetShortField에 대한 현재 호출의 Name 매개 변수로 지정된 필드입니다. 반환 값은 ULONG64 캐스팅됩니다. 함수가 실패하면 값 0을 반환합니다. |
설명
GetShortField가 0이 아닌 StoreAddress 값으로 호출되면 TypeAddress에서 지정한 주소에 있는 구조를 초기화합니다. 한 번에 하나의 구조만 초기화할 수 있습니다. GetShortField가 0이 아닌 StoreAddress 값으로 두 번 이상 호출되는 경우 가장 최근 호출에 지정된 구조만 초기화됩니다. StoreAddress가 0인 GetShortField가 호출되면 가장 최근에 초기화된 구조체에 액세스하고, 해당 구조체에서 Name으로 지정된 필드를 읽고, 해당 필드의 값을 반환합니다.
이 함수는 직접 호출할 필요가 없습니다. InitTypeRead 및 InitTypeReadPhysical 매크로는 0이 아닌 StoreAddress를 사용하여 이 함수를 호출하여 멤버를 읽기 위한 구조를 준비합니다. 매크로 ReadField 는 구조체에서 멤버를 읽기 위해 StoreAddress (및 TypeAddress)가 0과 같은 이 함수를 호출합니다.
#define ReadField(Field) \
GetShortField(0, #Field, 0)
#define ReadFieldStr(FieldStr) \
GetShortField(0, FieldStr, 0)
매개 변수
FieldStr반환 값
이 매크로가 성공하면 이전에 초기화된 구조체에서 지정된 필드의 값을 반환합니다. 구조체는 InitTypeRead, InitTypeStrRead, InitTypeReadPhysical, InitTypeStrReadPhysical 또는 GetShortField에 대한 이전 호출에서 초기화된 구조체입니다. 필드는 ReadField의 Field 또는 FieldStr 매개 변수로 지정된 필드입니다. 반환 값은 ULONG64 캐스팅됩니다. 함수가 실패하면 값 0을 반환합니다.매개 변수 필드는 멤버의 이름입니다. ReadField의 경우 C 사전 프로세서는 매개 변수를 문자열로 바꿉니다. ReadFieldStr의 경우 필드는 이미 ASCII 문자열이어야 합니다. 예를 들어 다음 두 명령은 동일하며 이전에 초기화된 구조에서 동일한 멤버를 읽습니다.
- ReadField( myField );
- ReadFieldStr( "myField" );
하위 사용자는 마침표로 구분된 경로(예: "myField.mySubfield")를 사용하여 읽을 수 있습니다.
InitTypeRead 매크로는 ReadField를 사용하여 멤버를 읽을 수 있도록 구조를 초기화합니다.
#define InitTypeRead(
Addr,
Type
);
매개 변수
Addr
대상의 가상 메모리에 있는 구조체의 주소를 지정합니다.
형식
구조체 형식의 이름을 지정합니다. C 사전 프로세서는 Type 을 문자열로 바꿉니다.
값 반환
이 매크로가 성공하면 값 0을 반환합니다. 호출자가 0 값을 Addr로 전달했기 때문에 실패하면 MEMORY_READ_ERROR 값을 반환합니다(Wdbgexts.h에 정의됨). 다른 이유로 실패하면 IG_DUMP_SYMBOL_INFO 오류 코드가 반환됩니다.
InitTypeReadPhysical 및 InitTypeStrReadPhysical 매크로는 ReadField를 사용하여 멤버를 읽을 수 있도록 실제 메모리의 구조를 초기화합니다.
#define InitTypeReadPhysical(
Addr,
Type,
TypeStr
);
매개 변수
Addr
대상의 실제 메모리에 있는 구조체의 주소를 지정합니다.
형식
구조체 형식의 이름을 지정합니다. C 사전 프로세서는 Type 을 문자열로 바꿉니다.
TypeStr
구조체 형식의 이름을 지정합니다. TypeStr 은 ASCII 문자열이어야 합니다.
값 반환
이 매크로가 성공하면 값 0을 반환합니다. 호출자가 0 값을 Addr로 전달했기 때문에 실패하면 MEMORY_READ_ERROR 값을 반환합니다(Wdbgexts.h에 정의됨). 다른 이유로 실패하면 IG_DUMP_SYMBOL_INFO 오류 코드가 반환됩니다.
InitTypeRead 매크로는 ReadField를 사용하여 멤버를 읽을 수 있도록 구조를 초기화합니다.
#define InitTypeRead(
Addr,
TypeStr
);
매개 변수
Addr
대상의 가상 메모리에 있는 구조체의 주소를 지정합니다.
형식
구조체 형식의 이름을 지정합니다. TypeStr 은 ASCII 문자열이어야 합니다.
값 반환
이 매크로가 성공하면 값 0을 반환합니다. 호출자가 0 값을 Addr로 전달하여 실패하면 MEMORY_READ_ERROR 값을 반환합니다(Wdbgexts.h에 정의됨). 다른 이유로 실패하면 IG_DUMP_SYMBOL_INFO 오류 코드가 반환됩니다.
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 데스크톱 |
머리글 | wdbgexts.h(Wdbgexts.h, Dbgeng.h 포함) |