IIndexableConcept::GetAt 메서드(dbgmodel.h)
GetAt 메서드는 인덱싱된 개체 내에서 특정 N차원 인덱스의 값을 검색합니다. N이 GetDimensionality에서 반환된 값인 N 차원의 인덱서는 지원되어야 합니다. 개체는 서로 다른 형식(예: 서수 및 문자열을 통해 인덱싱 가능)을 통해 서로 다른 도메인에서 인덱싱할 수 있습니다. 인덱스가 범위를 벗어나거나 액세스할 수 없는 경우 메서드는 오류를 반환합니다. 그러나 이러한 경우 출력 개체는 여전히 오류 개체로 설정될 수 있습니다.
구문
HRESULT GetAt(
IModelObject *contextObject,
ULONG64 indexerCount,
IModelObject **indexers,
_COM_Errorptr_ IModelObject **object,
IKeyStore **metadata
);
매개 변수
contextObject
인덱싱되는 instance 개체(이 포인터)는 여기에 전달됩니다.
indexerCount
개체가 인덱싱되는 차원의 수입니다.
indexers
instance 개체 내에서 액세스할 위치를 나타내는 인덱스의 배열(indexerCount에 따라 크기 조정)입니다.
object
지정된 인덱스에 있는 요소의 값이 여기에 반환됩니다. 메서드가 실패하면 확장된 오류 정보가 여기에 오류 개체로 반환될 수 있습니다.
metadata
인덱싱된 요소에 대한 선택적 메타데이터는 여기에서 반환될 수 있습니다.
반환 값
이 메서드는 성공 또는 실패를 나타내는 HRESULT를 반환합니다.
설명
구현 예:
// Consider that we are pairing this with the same MyObjectIterator class
// shown in the example snippet for IModelIterator::GetNext.
IFACEMETHOD(GetAt)(_In_ IModelObject *pContextObject,
_In_ ULONG64 indexerCount,
_In_reads_(indexerCount) IModelObject **ppIndexers,
_COM_Errorptr_ **ppValue,
_COM_Outptr_opt_result_maybenull_ IKeyStore **ppMetadata)
{
HRESULT hr = S_OK;
*ppValue = nullptr;
if (ppMetadata != nullptr)
{
*ppMetadata = nullptr;
}
if (indexerCount != 1)
{
return E_INVALIDARG;
}
ComPtr<IModelObject> spValue;
ULONG64 numElements;
ComPtr<IModelObject> spNumElements;
hr = pContextObject->GetKeyValue(L"NumElements", &spNumElements, nullptr));
if (SUCCEEDED(hr))
{
VARIANT vtNumElements;
hr = spNumElements->GetIntrinsicValueAs(VT_UI8, &vtNumElements));
if (SUCCEEDED(hr))
{
VARIANT vtIdx;
hr = ppIndexers[0]->GetIntrinsicValueAs(VT_UI8, &vtIdx));
if (SUCCEEDED(hr))
{
if (vtIdx.ullVal >= vtNumElements.ullVal)
{
return E_BOUNDS;
}
VARIANT vtValue;
vtValue.vt = VT_UI8;
vtValue.ullVal = vtIdx.ullVal + 10;
hr = GetManager()->CreateIntrinsicObject(ObjectIntrinsic,
&vtValue,
&spValue);
}
}
}
if (SUCCEEDED(hr))
{
*ppValue = spValue.Detach();
}
return hr;
}
요구 사항
요구 사항 | 값 |
---|---|
헤더 | dbgmodel.h |