Establecer y obtener un token de registro para un subproceso

El registro setupAPI admite un mecanismo que establece un contexto de registro para un subproceso. Este contexto se establece estableciendo un token de registro para el subproceso . SetupAPI proporciona este mecanismo para que el código al que llama un subproceso pueda escribir entradas de registro en el contexto de registro del subproceso que realiza la llamada.

Por ejemplo, un subproceso puede establecer un token de registro para su contexto de registro antes de llamar a un instalador de clase o co-instalador. El instalador, a su vez, puede recuperar el token de registro del subproceso que realiza la llamada y usar ese token para escribir entradas de registro en el registro de texto y en la sección asociada al contexto de registro del subproceso que realiza la llamada.

Establecimiento de un token de registro para un subproceso

La función SetupSetThreadLogToken establece un token de registro para el subproceso desde el que se llamó a esta función. El token de registro puede ser un token de registro definido por el sistema o un token de registro que se recuperó mediante una llamada a SetupGetThreadLogToken.

A continuación se muestran ejemplos de cómo se puede establecer un contexto de registro para un subproceso:

  • Una aplicación de instalación puede llamar a SetupSetThreadLogToken para establecer un contexto de registro para otro código de instalación que se ejecuta dentro del mismo subproceso. Cuando se establece el contexto de registro para el subproceso, la aplicación debe usar un token de registro definido por el sistema, como LOGTOKEN_SETUPAPI_APPLOG, en la llamada a SetupSetThreadLogToken.

    Nota Si el contexto de registro se establece mediante un token de registro definido por el sistema, las llamadas posteriores a una función de registro setupAPI realizadas desde ese contexto de registro, escriba entradas de registro en el registro de texto de instalación, que no forman parte de una sección de registro de texto.

  • Si un instalador de clase o un co-instalador inician un nuevo subproceso, el instalador puede establecer el contexto de registro de ese subproceso para que sea el mismo que el subproceso primario. Esto se hace de la siguiente manera:

    1. Antes de que el subproceso primario inicie el nuevo subproceso, adquiere el token de registro actual mediante una llamada a SetupGetThreadLogToken.
    2. El subproceso primario inicia el nuevo subproceso y pasa el token de registro actual a través de un método específico de la implementación, como guardar el token en una variable global.
    3. El nuevo subproceso llama a SetupSetThreadLogToken con el token de registro actual. Como resultado, el nuevo subproceso "hereda" el contexto de registro del subproceso primario.

    Nota Si un subproceso de un instalador de clase o coinstaladores establece el contexto de registro mediante este método, las llamadas posteriores a una función de registro setupAPI que se realizan a partir de esa entrada de registro de escritura de contexto de registro en el registro de texto de instalación que puede formar parte de una sección de registro de texto. Esto solo sucede si la operación de instalación setupAPI estableció una sección de registro de texto que llamó al instalador.

A continuación se muestra un ejemplo de una llamada a SetupSetThreadLogToken que establece el contexto de registro del subproceso actual en el registro de texto de instalación del dispositivo (SetupAPI.app.log) especificando el token de registro definido por el sistema de LOGTOKEN_SETUPAPI_APPLOG. Una llamada posterior a una función de registro setupAPI que usa este contexto de registro escribiría la entrada de registro en el registro de texto de instalación del dispositivo, pero no como parte de una sección de registro de texto.

SP_LOG_TOKEN LogToken = LOGTOKEN_SETUPAPI_APPLOG;
SetupSetThreadLogToken(LogToken);

Obtención de un token de registro para un subproceso

La función SetupGetThreadLogToken recupera un token de registro para el subproceso desde el que se llamó a esta función.

Por ejemplo, un instalador de clase puede llamar a SetupGetThreadLogToken para recuperar el token de registro que se aplica a la operación SetupAPI que llamó al instalador de clase. Después, el instalador de clase puede usar este token de registro recuperado para registrar entradas en el registro de texto que se aplica a la operación SetupAPI correspondiente.

Nota Si el contexto de registro de un subproceso no se estableció previamente mediante una llamada a SetupSetThreadLogToken, una llamada a SetupGetThreadLogToken devuelve un token de registro con un valor de LOGTOKEN_UNSPECIFIED.

A continuación se muestra un ejemplo de una llamada a SetupGetThreadLogToken que recupera el token de registro para el subproceso actual.

SP_LOG_TOKEN LogToken = SetupGetThreadLogToken();