다음을 통해 공유


ICrmLogControl::WriteLogRecord 메서드(comsvcs.h)

CRM 작업자 및 CRM Compensator는 이 메서드를 사용하여 비정형 로그 레코드를 로그에 씁니다. 이 메서드는 일반적으로 C++로 작성된 CRM 구성 요소에서 사용됩니다. 레코드는 로그에 게으름으로 기록되며 지속성이 되기 전에 강제로 기록되어야 합니다. (ICrmLogControl::ForceLog참조하세요.)

통사론

HRESULT WriteLogRecord(
  [in] BLOB [] rgBlob,
  [in] ULONG   cBlob
);

매개 변수

[in] rgBlob

로그 레코드를 구성하는 BLOB 배열입니다. BLOB은 임의의 양의 이진 데이터를 저장하는 데 사용되는 Windows 데이터 형식입니다.

[in] cBlob

배열의 BLOB 수입니다.

반환 값

이 메서드는 다음 값을 반환할 수 있습니다.

반환 코드 묘사
S_OK
메서드가 성공적으로 완료되었습니다.
E_INVALIDARG
BLOB 수는 0입니다.
E_POINTER
NULL 포인터가 인수로 제공되었습니다.
XACT_E_WRONGSTATE
이 메서드가 잘못된 상태에서 호출되었습니다. RegisterCompensator 전이나 트랜잭션이 완료되는 경우(CRM 작업자)
XACT_E_ABORTED
트랜잭션 제한 시간으로 인해 트랜잭션이 중단되었습니다.

발언

구조화되지 않은 레코드는 바이트 버퍼일 뿐입니다. 이 메서드는 데이터에 대한 포인터와 바이트 수를 포함하는 구조인 BLOB 배열에서 특정 CRM 로그 레코드의 섹션을 빌드할 수 있도록 하여 수집 기능을 구현합니다. 이렇게 하면 데이터 복사가 줄어들어 CRM 메모리 공간에서 로그 관리자의 버퍼로 직접 복사되는 복사본이 하나만 발생합니다.

구조화되지 않은 로그 레코드와 구조화된 로그 레코드는 혼합할 수 없습니다. WriteLogRecord 또는 WriteLogRecordVariants 동일한 CRM 작업자 또는 CRM Compensator에서 호출할 수는 없습니다.

로그 레코드의 BLOB에 포함된 데이터 구조 내에 포인터 형식을 포함해서는 안 됩니다. CRM Compensator는 로그 레코드를 작성한 CRM 작업자의 프로세스와 다른 프로세스에서 실행되므로 복구 단계에서 개체 참조가 더 이상 유효하지 않습니다. 로그 레코드에 BLOB 내에 포인터 형식을 포함하면 복구 중에 애플리케이션이 충돌하거나 손상될 수 있습니다.

요구 사항

요구
지원되는 최소 클라이언트 Windows 2000 Professional [데스크톱 앱만 해당]
지원되는 최소 서버 Windows 2000 Server [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 comsvcs.h

참고 항목

ICrmLogControl