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 bekleyen kesme noktasının bir kod konumuna bağlanıp bağlanamayacağını belirler.
Sözdizimi
Parametreler
ppErrorEnum
[out] Hatalar olabilirse, IDebugErrorBreakpoint2 nesnelerinin listesini içeren bir IEnumDebugErrorBreakpoints2 nesnesi döndürür.
İade Değeri
Başarılı olursa, S_OK. kesme noktası bağlanamazsa döndürür S_FALSE ; bu durumda hatalar parametresi tarafından ppErrorEnum döndürülür. Aksi takdirde bir hata kodu döndürür. Kesme noktası silinmişse döndürür E_BP_DELETED .
Açıklamalar
Bu bekleyen kesme noktası bağlı olduğunda ne olacağını belirlemek için bu yöntem çağrılır. Bekleyen kesme noktasını gerçekten bağlamak için Bind yöntemini çağırın.
Örnek
Aşağıdaki örnek, IDebugPendingBreakpoint2 arabirimini kullanıma sunan basit CPendingBreakpoint bir nesne için bu yöntemin nasıl uygulandığını gösterir.
HRESULT CPendingBreakpoint::CanBind(IEnumDebugErrorBreakpoints2** ppErrorEnum)
{
HRESULT hr;
HRESULT hrT;
// Check for a valid pointer to an error breakpoint enumerator
// interface; otherwise, return hr = E_INVALIDARG.
if (ppErrorEnum)
{
// Verify that the pending breakpoint has not been deleted. If
// deleted, then return hr = E_BP_DELETED.
if (m_state.state != PBPS_DELETED)
{
// Verify that the breakpoint is a file/line breakpoint.
if (IsFlagSet(m_pBPRequest->m_bpRequestInfo.dwFields, BPREQI_BPLOCATION) &&
m_pBPRequest->m_bpRequestInfo.bpLocation.bpLocationType == BPLT_CODE_FILE_LINE)
{
hr = S_OK;
}
// If the breakpoint type is not a file/line breakpoint, then the
// result should be an error breakpoint.
else
{
// If the error breakpoint member variable does not have
// allocated memory.
if (!m_pErrorBP)
{
// Create, AddRef, and initialize a CErrorBreakpoint object.
if (CComObject<CErrorBreakpoint>::CreateInstance(&m_pErrorBP) == S_OK)
{
m_pErrorBP->AddRef();
m_pErrorBP->Initialize(this);
}
}
// Create a new enumerator of error breakpoints.
CComObject<CEnumDebugErrorBreakpoints>* pErrorEnum;
if (CComObject<CEnumDebugErrorBreakpoints>::CreateInstance(&pErrorEnum) == S_OK)
{
// Get the IDebugErrorBreakpoint2 information for the
// CErrorBreakpoint object.
CComPtr<IDebugErrorBreakpoint2> spErrorBP;
hrT = m_pErrorBP->QueryInterface(&spErrorBP);
assert(hrT == S_OK);
if (hrT == S_OK)
{
// Initialize the new enumerator of error breakpoints
// with the IDebugErrorBreakpoint2 information.
IDebugErrorBreakpoint2* rgpErrorBP[] = { spErrorBP.p };
hrT = pErrorEnum->Init(rgpErrorBP, &(rgpErrorBP[1]), NULL, AtlFlagCopy);
if (hrT == S_OK)
{
// Verify that the passed IEnumDebugErrorBreakpoints2
// interface can be successful queried by the
// created CEnumDebugErrorBreakpoints object.
hrT = pErrorEnum->QueryInterface(ppErrorEnum);
assert(hrT == S_OK);
}
}
// Otherwise, delete the CEnumDebugErrorBreakpoints object.
if (FAILED(hrT))
{
delete pErrorEnum;
}
}
hr = S_FALSE;
}
}
else
{
hr = E_BP_DELETED;
}
}
else
{
hr = E_INVALIDARG;
}
return hr;
}