디버그 주소가 주어진 지정된 배열에 대한 형식 정보를 검색합니다.
구문
int GetArrayTypeFromAddress(
IDebugAddress pAddress,
int[] pSig,
uint dwSigLength,
out IDebugField ppField
);
매개 변수
pAddress
[in] IDebugAddress 인터페이스가 나타내는 디버그 주소입니다.
pSig
[in] 검사할 배열입니다.
dwSigLength
[in] pSig 배열의 길이(바이트)입니다.
ppField
[out] IDebugClassField 인터페이스가 나타내는 배열 형식을 반환합니다.
Return Value
성공하면 S_OK를 반환하고, 실패하면 오류 코드를 반환합니다.
예시
다음 예제에서는 IDebugComPlusSymbolProvider 인터페이스를 노출하는 CDebugSymbolProvider 개체에 대해 이 메서드를 구현하는 방법을 보여 줍니다.
HRESULT CDebugSymbolProvider::GetArrayTypeFromAddress(
IDebugAddress *pAddress,
BYTE *pSig,
DWORD dwSigLength,
IDebugField **ppField)
{
HRESULT hr = E_FAIL;
CDEBUG_ADDRESS da;
CDebugGenericParamScope* pGenScope = NULL;
METHOD_ENTRY( CDebugDynamicFieldSymbol::GetArrayTypeFromAddress );
ASSERT(IsValidObjectPtr(this, CDebugSymbolProvider));
ASSERT(IsValidWritePtr(ppField, IDebugField*));
IfFailGo( pAddress->GetAddress(&da) );
if ( S_OK == hr )
{
IfNullGo( pGenScope = new CDebugGenericParamScope(da.GetModule(), da.tokClass, da.GetMethod()), E_OUTOFMEMORY );
IfFailGo( this->CreateType((const COR_SIGNATURE*)(pSig), dwSigLength, da.GetModule(), mdMethodDefNil, pGenScope, ppField) );
}
Error:
METHOD_EXIT( CDebugDynamicFieldSymbol::GetArrayTypeFromAddress, hr );
RELEASE( pGenScope );
return hr;
}