다음을 통해 공유


IDebugErrorBreakpointResolution2::GetResolutionInfo

중단점 오류 해결 방법 정보를 가져옵니다.

HRESULT GetResolutionInfo( 
   BPERESI_FIELDS            dwFields,
   BP_ERROR_RESOLUTION_INFO* pErrorResolutionInfo
);
int GetResolutionInfo( 
   enum_BPERESI_FIELDS        dwFields,
   BP_ERROR_RESOLUTION_INFO[] pErrorResolutionInfo
);

매개 변수

  • dwFields
    [in] 플래그의 조합에서 BPERESI_FIELDS 의 필드를 결정 하는 열거형 pErrorResolutionInfo 데이터를 입력할 수 있습니다.

  • pErrorResolutionInfo
    [in, out] BP_ERROR_RESOLUTION_INFO 중단점 해상도에 대 한 설명으로 채워진 구조입니다.

반환 값

성공 하면 반환 S_OK. 그렇지 않으면 오류 코드를 반환 합니다.

예제

다음 예제는이 메서드에 대 한 간단한 구현 CDebugErrorBreakpointResolution 를 노출 하는 개체는 IDebugErrorBreakpointResolution2 인터페이스입니다.

HRESULT CDebugErrorBreakpointResolution::GetResolutionInfo(
   BPERESI_FIELDS dwFields,
   BP_ERROR_RESOLUTION_INFO* pBPErrorResolutionInfo)  
{  
   HRESULT hr;  
  
   if (pBPErrorResolutionInfo)  
   {  
      // Copy the specified fields of the request information from the class member
      // variable to the local BP_ERROR_RESOLUTION_INFO variable.  
      hr = CopyBP_ERROR_RESOLUTION_INFO(m_bpErrorResolutionInfo,
                                        *pBPErrorResolutionInfo,
                                        dwFields);  
   }  
   else  
   {  
      hr = E_INVALIDARG;  
   }  
  
   return hr;  
}  
  
  
HRESULT CDebugErrorBreakpointResolution::CopyBP_ERROR_RESOLUTION_INFO(
   BP_ERROR_RESOLUTION_INFO& bpResSrc,
   BP_ERROR_RESOLUTION_INFO& bpResDest,
   DWORD dwFields)
{  
   HRESULT hr = S_OK;  
  
   // Start with a raw copy.  
   memcpy(&bpResDest, &bpResSrc, sizeof(BP_ERROR_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 BPERESI_BPRESLOCATION flag
   // is set in BPERESI_FIELDS.  
   if (IsFlagSet(bpResDest.dwFields, BPERESI_BPRESLOCATION))  
   {  
      // Switch 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 BPERESI_BPRESLOCATION flag of the BPERESI_FIELDS
            // in the destination BP_ERROR_RESOLUTION_INFO.
            ClearFlag(bpResDest.dwFields, BPERESI_BPRESLOCATION);
            break;
         }  
      }  
   }  
   // AddRef the IDebugProgram2 if the BPRESI_PROGRAM flag is set in the BPRESI_FIELDS.  
   if (IsFlagSet(bpResDest.dwFields, BPERESI_PROGRAM))  
   {  
      bpResDest.pProgram->AddRef();  
   }  
   // AddRef the IDebuThread2 if the BPRESI_THREAD flag is set in the BPRESI_FIELDS.  
   if (IsFlagSet(bpResDest.dwFields, BPERESI_THREAD))  
   {  
      bpResDest.pThread->AddRef();  
   }  
   // Check if the BPERESI_MESSAGE flag is set in the BPRESI_FIELDS.  
   if (IsFlagSet(bpResDest.dwFields, BPERESI_MESSAGE))  
   {  
      // Copy the source bstrMessage into the destination bstrMessage.  
      bpResDest.bstrMessage = SysAllocString(bpResSrc.bstrMessage);  
      // Clear the destination flag if there is no message.  
      if (!bpResDest.bstrMessage)  
      {  
         ClearFlag(bpResDest.dwFields, BPERESI_MESSAGE);  
      }  
   }  
  
   return hr;  
}  

참고 항목

참조

IDebugErrorBreakpointResolution2

BPERESI_FIELDS

BP_ERROR_RESOLUTION_INFO