스레드에 대한 로그 토큰 설정 및 가져오기

SetupAPI 로깅 은 스레드에 대한 로그 컨텍스트를 설정하는 메커니즘을 지원합니다. 이 컨텍스트는 스레드에 대한 로그 토큰 을 설정하여 설정합니다. SetupAPI는 스레드에서 호출되는 코드가 호출 스레드의 로그 컨텍스트에 로그 항목을 쓸 수 있도록 이 메커니즘을 제공합니다.

예를 들어 스레드는 클래스 설치 관리자 또는 공동 설치 관리자를 호출하기 전에 로그 컨텍스트에 대한 로그 토큰을 설정할 수 있습니다. 그러면 설치 관리자는 호출 스레드의 로그 토큰을 검색하고 해당 토큰을 사용하여 호출 스레드의 로그 컨텍스트와 연결된 텍스트 로그 및 섹션에 로그 항목을 작성할 수 있습니다.

스레드에 대한 로그 토큰 설정

SetupSetThreadLogToken 함수는 이 함수가 호출된 스레드에 대한 로그 토큰을 설정합니다. 로그 토큰은 시스템 정의 로그 토큰 또는 SetupGetThreadLogToken을 호출하여 검색된 로그 토큰일 수 있습니다.

다음은 스레드에 대한 로그 컨텍스트를 설정하는 방법의 예입니다.

  • 설치 애플리케이션은 SetupSetThreadLogToken 을 호출하여 동일한 스레드 내에서 실행되는 다른 설치 코드에 대한 로그 컨텍스트를 설정할 수 있습니다. 스레드에 대한 로그 컨텍스트를 설정하는 경우 애플리케이션은 SetupSetThreadLogToken 호출에서 시스템 정의 로그 토큰(예: LOGTOKEN_SETUPAPI_APPLOG)을 사용해야 합니다.

    참고 시스템 정의 로그 토큰을 사용하여 로그 컨텍스트를 설정하는 경우 해당 로그 컨텍스트에서 만든 SetupAPI 로깅 함수 에 대한 후속 호출은 텍스트 로그 섹션의 일부가 아닌 설치 텍스트 로그에 로그 항목을 씁니다.

  • 클래스 설치 관리자 또는 공동 설치 관리자가 새 스레드를 시작하는 경우 설치 관리자는 해당 스레드의 로그 컨텍스트를 부모 스레드와 동일하게 설정할 수 있습니다. 이 작업은 다음과 같은 방법으로 수행됩니다.

    1. 부모 스레드는 새 스레드를 시작하기 전에 SetupGetThreadLogToken을 호출하여 현재 로그 토큰을 획득합니다.
    2. 부모 스레드는 새 스레드를 시작하고 전역 변수에 토큰 저장과 같은 구현별 메서드를 통해 현재 로그 토큰을 전달합니다.
    3. 새 스레드는 현재 로그 토큰을 사용하여 SetupSetThreadLogToken 을 호출합니다. 결과적으로 새 스레드는 부모 스레드의 로그 컨텍스트를 "상속"합니다.

    참고 클래스 설치 관리자 또는 공동 설치 관리자의 스레드가 이 메서드를 사용하여 로그 컨텍스트를 설정하는 경우 해당 로그 컨텍스트에서 만든 SetupAPI 로깅 함수 에 대한 후속 호출은 텍스트 로그 섹션의 일부일 수 있는 설치 텍스트 로그에 로그 항목을 기록합니다. 이는 설치 관리자를 호출한 SetupAPI 설치 작업에 의해 텍스트 로그 섹션이 설정된 경우에만 발생합니다.

다음은 LOGTOKEN_SETUPAPI_APPLOG 시스템 정의 로그 토큰을 지정하여 현재 스레드의 로그 컨텍스트를 디바이스 설치 텍스트 로그(SetupAPI.app.log)로 설정하는 SetupSetThreadLogToken 호출의 예입니다. 이 로그 컨텍스트를 사용하는 SetupAPI 로깅 함수 에 대한 후속 호출은 로그 항목을 디바이스 설치 텍스트 로그에 기록하지만 텍스트 로그 섹션의 일부로 작성되지는 않습니다.

SP_LOG_TOKEN LogToken = LOGTOKEN_SETUPAPI_APPLOG;
SetupSetThreadLogToken(LogToken);

스레드에 대한 로그 토큰 가져오기

SetupGetThreadLogToken 함수는 이 함수가 호출된 스레드에 대한 로그 토큰을 검색합니다.

예를 들어 클래스 설치 관리자는 SetupGetThreadLogToken 을 호출하여 클래스 설치 관리자를 호출한 SetupAPI 작업에 적용되는 로그 토큰을 검색할 수 있습니다. 그런 다음 클래스 설치 관리자는 이 검색된 로그 토큰을 사용하여 해당 SetupAPI 작업에 적용되는 텍스트 로그의 항목을 기록할 수 있습니다.

참고 이전에 SetupSetThreadLogToken을 호출하여 스레드의 로그 컨텍스트를 설정하지 않은 경우 SetupGetThreadLogToken 을 호출하면 값이 LOGTOKEN_UNSPECIFIED 로그 토큰이 반환됩니다.

다음은 현재 스레드에 대한 로그 토큰을 검색하는 SetupGetThreadLogToken 호출의 예입니다.

SP_LOG_TOKEN LogToken = SetupGetThreadLogToken();