Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu kesme noktasını açıklayan kesme noktası çözümleme bilgilerini alır.
Sözdizimi
int GetResolutionInfo(
enum BPRESI_FIELDS dwFields,
BP_RESOLUTION_INFO[] pBPResolutionInfo
);
Parametreler
dwFields
[in] parametrenin hangi alanlarının doldurulması gerektiğini belirleyen BPRESI_FIELDS sabit listesi bayraklarının pBPResolutionInfo birleşimi.
pBPResolutionInfo
[out] Bu kesme noktasıyla ilgili bilgilerle doldurulacak BP_RESOLUTION_INFO yapısı.
İade Değeri
Başarılı olursa döndürür S_OK; aksi takdirde bir hata kodu döndürür.
Örnek
Aşağıdaki örnek, IDebugBreakpointResolution2 arabirimini kullanıma sunan basit CDebugBreakpointResolution bir nesne için bu yöntemi uygular.
HRESULT CDebugBreakpointResolution::GetResolutionInfo(
BPRESI_FIELDS dwFields,
BP_RESOLUTION_INFO* pBPResolutionInfo)
{
HRESULT hr;
if (pBPResolutionInfo)
{
// Copy the specified fields of the request information from the class
// member variable to the local BP_RESOLUTION_INFO variable.
hr = CopyBP_RESOLUTION_INFO(m_bpResolutionInfo,
*pBPResolutionInfo,
dwFields);
}
else
{
hr = E_INVALIDARG;
}
return hr;
}
HRESULT CDebugBreakpointResolution::CopyBP_RESOLUTION_INFO(
BP_RESOLUTION_INFO& bpResSrc,
BP_RESOLUTION_INFO& bpResDest,
DWORD dwFields)
{
HRESULT hr = S_OK;
// Start with a raw copy.
memcpy(&bpResDest, &bpResSrc, sizeof(BP_RESOLUTION_INFO));
// The fields in the destination is the result of the AND of
// bpInfoSrc.dwFields and dwFields.
bpResDest.dwFields = dwFields & bpResSrc.dwFields;
// Fill in the bp location information if the BPRESI_BPRESLOCATION
// flag is set in BPRESI_FIELDS.
if (IsFlagSet(bpResDest.dwFields, BPRESI_BPRESLOCATION))
{
// Switch based on the BP_TYPE.
switch (bpResSrc.bpResLocation.bpType)
{
case BPT_CODE:
{
// AddRef the IDebugCodeContext2 of the BP_RESOLUTION_CODE structure.
bpResDest.bpResLocation.bpResLocation.bpresCode.pCodeContext->AddRef();
break;
}
case BPT_DATA:
{
// Copy the bstrDataExpr, bstrFunc, and bstrImage of the
// BP_RESOLUTION_DATA structure.
bpResDest.bpResLocation.bpResLocation.bpresData.bstrDataExpr =
SysAllocString(bpResSrc.bpResLocation.bpResLocation.bpresData.bstrDataExpr);
bpResDest.bpResLocation.bpResLocation.bpresData.bstrFunc =
SysAllocString(bpResSrc.bpResLocation.bpResLocation.bpresData.bstrFunc);
bpResSrc.bpResLocation.bpResLocation.bpresData.bstrImage =
SysAllocString(bpResSrc.bpResLocation.bpResLocation.bpresData.bstrImage);
break;
}
default:
{
assert(FALSE);
// Clear the BPRESI_BPRESLOCATION flag in the BPRESI_FIELDS
// of the destination BP_RESOLUTION_INFO.
ClearFlag(bpResDest.dwFields, BPRESI_BPRESLOCATION);
break;
}
}
}
// AddRef the IDebugProgram2 if the BPRESI_PROGRAM flag is set in BPRESI_FIELDS.
if (IsFlagSet(bpResDest.dwFields, BPRESI_PROGRAM))
{
bpResDest.pProgram->AddRef();
}
// AddRef the IDebugThread2 if the BPRESI_THREAD flag is set in BPRESI_FIELDS.
if (IsFlagSet(bpResDest.dwFields, BPRESI_THREAD))
{
bpResDest.pThread->AddRef();
}
return hr;
}