Compartir a través de


Función de devolución de llamada PFNPROCESSGROUPPOLICYEX (userenv.h)

La función ProcessGroupPolicyEx es una función de devolución de llamada definida por la aplicación que se usa al aplicar la directiva. Esta función extendida también admite el registro de datos del conjunto resultante de directivas (RSoP). El tipo PFNPROCESSGROUPPOLICYEX define un puntero a esta función de devolución de llamada. ProcessGroupPolicyEx es un marcador de posición para el nombre de función definido por la aplicación.

Sintaxis

PFNPROCESSGROUPPOLICYEX Pfnprocessgrouppolicyex;

DWORD Pfnprocessgrouppolicyex(
  [in]  DWORD dwFlags,
  [in]  HANDLE hToken,
  [in]  HKEY hKeyRoot,
  [in]  PGROUP_POLICY_OBJECT pDeletedGPOList,
  [in]  PGROUP_POLICY_OBJECT pChangedGPOList,
  [in]  ASYNCCOMPLETIONHANDLE pHandle,
  [in]  BOOL *pbAbort,
  [in]  PFNSTATUSMESSAGECALLBACK pStatusCallback,
  [in]  IWbemServices *pWbemServices,
  [out] HRESULT *pRsopStatus
)
{...}

Parámetros

[in] dwFlags

Este parámetro puede ser una o varias de las marcas siguientes.

GPO_INFO_FLAG_MACHINE

Aplicar directiva de equipo en lugar de directiva de usuario.

GPO_INFO_FLAG_BACKGROUND

Realice una actualización en segundo plano de la directiva. Para obtener más información, consulte el texto que sigue a esta lista.

GPO_INFO_FLAG_ASYNC_FOREGROUND

Realice una actualización en primer plano asincrónica de la directiva. Para obtener más información, consulte el texto que sigue a esta lista. Para obtener más información sobre la aplicación de directiva en primer plano, consulte Procesamiento inicial de directiva de grupo.

La directiva se aplica a través de un vínculo lento.

GPO_INFO_FLAG_VERBOSE

Escriba una salida detallada en el registro de eventos.

GPO_INFO_FLAG_NOCHANGES

No se detectaron cambios en el GPO.

GPO_INFO_FLAG_LINKTRANSITION

Se detectó un cambio en la velocidad del vínculo entre las aplicaciones de directiva.

GPO_INFO_FLAG_LOGRSOP_TRANSITION

Se detectó un cambio en el registro de RSoP entre la aplicación de la directiva anterior y la aplicación de la directiva actual.

GPO_INFO_FLAG_FORCED_REFRESH

Se está aplicando una actualización de directiva forzada.

GPO_INFO_FLAG_SAFEMODE_BOOT

Marca de modo seguro.

La marca GPO_INFO_FLAG_BACKGROUND y la marca de GPO_INFO_FLAG_ASYNC_FOREGROUND se pueden establecer. Dado que las directivas siempre se aplican de forma asincrónica durante una actualización en segundo plano, la mayoría de las extensiones controlan una actualización en primer plano asincrónica de la misma manera en la que controlan una actualización en segundo plano. Por lo tanto, no es necesario comprobar la marca de GPO_INFO_FLAG_ASYNC_FOREGROUND . En instancias de cuando una extensión debe distinguir entre una actualización en segundo plano de la directiva y una actualización en primer plano asincrónica de la directiva, la extensión puede comprobar la marca de GPO_INFO_FLAG_ASYNC_FOREGROUND .

[in] hToken

Token para el usuario o equipo, devuelto por la función LogonUser, CreateRestrictedToken, DuplicateToken, OpenProcessToken o OpenThreadToken . Este token debe tener acceso TOKEN_IMPERSONATE y TOKEN_QUERY . Para obtener más información, vea Derechos de acceso para Access-Token objetos y suplantación de cliente.

[in] hKeyRoot

Identificador de la clave del Registro de HKEY_LOCAL_MACHINE o HKEY_CURRENT_USER .

[in] pDeletedGPOList

Puntero que recibe la lista de estructuras de GPO eliminadas. Para obtener más información, consulte GROUP_POLICY_OBJECT.

[in] pChangedGPOList

Puntero que recibe la lista de estructuras de GPO modificadas. Para obtener más información, consulte GROUP_POLICY_OBJECT.

[in] pHandle

Identificador de finalización asincrónica. Si la función de devolución de llamada no admite el procesamiento asincrónico, este identificador es cero.

[in] pbAbort

Especifica si se van a seguir procesando GPO. Si este parámetro es TRUE, el procesamiento del GPO dejará de funcionar. Si este parámetro es FALSE, el procesamiento del GPO continuará.

[in] pStatusCallback

Puntero a una función de devolución de llamada StatusMessageCallback que muestra mensajes de estado. Este parámetro puede ser NULL en determinados casos. Por ejemplo, si el sistema aplica la directiva en segundo plano, la interfaz de usuario de estado no está presente y la aplicación no puede enviar mensajes de estado para que se muestren. Para obtener más información, vea la sección Comentarios que se muestra más adelante.

[in] pWbemServices

Especifica un puntero de servicios WMI al espacio de nombres RSoP al que se deben escribir los datos de la directiva. Este parámetro es NULL cuando el registro de RSoP está deshabilitado, lo que indica que la extensión no debe registrar los datos de RSoP.

[out] pRsopStatus

Puntero a un código de retorno HRESULT que indica si el registro de RSoP se realizó correctamente.

Valor devuelto

Si la directiva se aplicó correctamente, devuelva ERROR_SUCCESS. Si no hay ningún cambio en la lista de GPO y se volverá a llamar a la extensión, devuelva ERROR_OVERRIDE_NOCHANGES. Devolver ERROR_OVERRIDE_NOCHANGES garantiza que se vuelva a llamar a la extensión, incluso si se establece el valor del Registro NoGPOListChanges . (Para obtener más información sobre este valor del Registro, vea Comentarios).

Devuelve ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED si se llamó a la función para una actualización en primer plano asincrónica de la directiva, pero no se pudo aplicar la directiva durante la actualización asincrónica. Devolver ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED indica que se debe llamar a la función de nuevo para una actualización en primer plano sincrónica de la directiva.

De lo contrario, devuelve un código de error del sistema.

Comentarios

Para obtener más información, consulte Implementación de una extensión del lado cliente de directiva de grupo.

El sistema llama a esta función en el contexto de la cuenta LocalSystem, que tiene amplios privilegios en el equipo local. Para usar recursos de red, debe suplantar al usuario o equipo mediante el token proporcionado en el parámetro hToken .

Para registrar esta función de devolución de llamada, cree una subclave en la siguiente clave del Registro:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\Currentversion\Winlogon\GPExtensions\ClientExtensionGuid

La subclave debe ser un GUID, de modo que sea único. Debe contener los valores siguientes.

Solo debe actualizar el mensaje de estado si está aplicando la directiva de forma sincrónica. Esto le permite proporcionar comentarios y diagnósticos durante una aplicación de directiva larga. Para usar la función de devolución de llamada del mensaje de estado, debe comprobar que pStatusCallback no es NULL. A continuación, cargue el recurso de cadena de mensaje. Al llamar a la función status, debe indicar si la cadena es detallada. Si la cadena es detallada, la función de devolución de llamada comprobará que el equipo está en modo detallado y mostrará el mensaje. Para obtener más información, vea StatusMessageCallback.

Advertencia No llame a la función pStatusCallback desde un subproceso en segundo plano o puede sobrescribir el mensaje de estado de otro subproceso.
 

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista
Servidor mínimo compatible Windows Server 2008
Plataforma de destino Windows
Encabezado userenv.h

Consulte también

Funciones de directiva de grupo

Introducción a las directivas de grupo

ProcessGroupPolicy

ProcessGroupPolicyCompletedEx

RSOP_ExtensionStatus

RefreshPolicy

RefreshPolicyEx

StatusMessageCallback