Compartir a través de


Función InitOnceBeginInitialize (synchapi.h)

Comienza la inicialización única.

Sintaxis

BOOL InitOnceBeginInitialize(
  [in, out]       LPINIT_ONCE lpInitOnce,
  [in]            DWORD       dwFlags,
  [out]           PBOOL       fPending,
  [out, optional] LPVOID      *lpContext
);

Parámetros

[in, out] lpInitOnce

Puntero a la estructura de inicialización única.

[in] dwFlags

Este parámetro puede tener un valor de 0 o uno o varios de los siguientes marcadores.

Valor Significado
INIT_ONCE_ASYNC
0x00000002UL
Habilita varios intentos de inicialización para ejecutarse en paralelo. Si se usa esta marca, se producirá un error en las llamadas posteriores a esta función a menos que también se especifique esta marca.
INIT_ONCE_CHECK_ONLY
0x00000001UL
Esta llamada de función no comienza la inicialización. El valor devuelto indica si la inicialización ya se ha completado. Si la función devuelve TRUE, el parámetro lpContext recibe los datos.

[out] fPending

Si la función se ejecuta correctamente, este parámetro indica el estado de inicialización actual.

Si este parámetro es TRUE y dwFlags contiene INIT_ONCE_CHECK_ONLY, la inicialización está pendiente y los datos de contexto no son válidos.

Si este parámetro es FALSE, la inicialización ya se ha completado y el autor de la llamada puede recuperar los datos de contexto del parámetro lpContext .

Si este parámetro es TRUE y dwFlags no contiene INIT_ONCE_CHECK_ONLY, se ha iniciado la inicialización y el autor de la llamada puede realizar las tareas de inicialización.

[out, optional] lpContext

Parámetro opcional que recibe los datos almacenados con la estructura de inicialización única cuando se realiza correctamente. Los bits de INIT_ONCE_CTX_RESERVED_BITS de orden bajo de los datos siempre son cero.

Valor devuelto

Si no se especifica INIT_ONCE_CHECK_ONLY y la función se realiza correctamente, el valor devuelto es TRUE.

Si se especifica INIT_ONCE_CHECK_ONLY y se ha completado la inicialización, el valor devuelto es TRUE.

De lo contrario, el valor devuelto es FALSE.

Para obtener información de error extendida, llame a GetLastError.

Comentarios

Esta función se puede usar para la inicialización sincrónica o asincrónica de una sola vez. Para la inicialización asincrónica de un solo uso, use la marca de INIT_ONCE_ASYNC . Para especificar una función de devolución de llamada que se va a ejecutar durante la inicialización sincrónica de un solo uso, consulte la función InitOnceExecuteOnce.

Si esta función se ejecuta correctamente, el subproceso puede crear un objeto de sincronización y especificar en el parámetro lpContext de la función InitOnceComplete .

Para compilar una aplicación que use esta función, defina _WIN32_WINNT como 0x0600 o posterior. Para obtener más información, vea Uso de los encabezados de Windows.

Un objeto de inicialización único no se puede mover ni copiar. El proceso no debe modificar el objeto de inicialización y, en su lugar, debe tratarlo como lógicamente opaco. Use solo las funciones de inicialización única para administrar objetos de inicialización de un solo uso.

Ejemplos

Para obtener un ejemplo que use esta función, consulte Uso de One-Time Inicialización.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2008 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado synchapi.h (incluye Windows.h en Windows 7, Windows Server 2008 Windows Server 2008 R2)
Library Kernel32.lib
Archivo DLL Kernel32.dll

Vea también

InitOnceComplete

InitOnceExecuteOnce

Inicialización única

Funciones de sincronización