Поделиться через


Функция обратного вызова PFNPROCESSGROUPPOLICY (userenv.h)

Функция ProcessGroupPolicy — это определяемая приложением функция обратного вызова, используемая при применении политики. Тип PFNPROCESSGROUPPOLICY определяет указатель на эту функцию обратного вызова. ProcessGroupPolicy — это заполнитель для имени определяемой приложением функции.

Эта функция обратного вызова не полезна для обработки результирующих наборов политик (RSoP); вместо этого используйте функцию обратного вызова ProcessGroupPolicyEx .

Синтаксис

PFNPROCESSGROUPPOLICY Pfnprocessgrouppolicy;

DWORD Pfnprocessgrouppolicy(
  [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] dwFlags

Этот параметр может быть одним или несколькими из следующих флагов.

GPO_INFO_FLAG_MACHINE

Примените политику компьютера, а не политику пользователя.

GPO_INFO_FLAG_BACKGROUND

Выполните фоновое обновление политики.

GPO_INFO_FLAG_ASYNC_FOREGROUND

Выполните асинхронное обновление политики переднего плана. Дополнительные сведения о приложении политики переднего плана см. в разделе Начальная обработка групповая политика.

Политика применяется по медленному каналу.

GPO_INFO_FLAG_VERBOSE

Запишите подробные выходные данные в журнал событий.

GPO_INFO_FLAG_NOCHANGES

Изменения в объекте групповой политики не обнаружены.

GPO_INFO_FLAG_LINKTRANSITION

Обнаружено изменение скорости связи между приложениями политики.

GPO_INFO_FLAG_LOGRSOP_TRANSITION

Обнаружено изменение ведения журнала RSoP между применением предыдущей политики и применением текущей политики.

GPO_INFO_FLAG_FORCED_REFRESH

Применяется принудительное обновление политики.

GPO_INFO_FLAG_SAFEMODE_BOOT

Флаг безопасного режима.

[in] hToken

Маркер для пользователя или компьютера, возвращенный функцией LogonUser, CreateRestrictedToken, DuplicateToken, OpenProcessToken или OpenThreadToken . Этот маркер должен иметь доступ к TOKEN_IMPERSONATE и TOKEN_QUERY . Дополнительные сведения см. в разделе Права доступа для объектов Access-Token и олицетворение клиента.

[in] hKeyRoot

Выполните обработку HKEY_LOCAL_MACHINE или HKEY_CURRENT_USER раздела реестра.

[in] pDeletedGPOList

Указатель, получающий список удаленных структур объектов групповой политики. Дополнительные сведения см. в разделе GROUP_POLICY_OBJECT.

[in] pChangedGPOList

Указатель, получающий список измененных структур объектов групповой политики. Дополнительные сведения см. в разделе GROUP_POLICY_OBJECT.

[in] pHandle

Дескриптор асинхронного завершения. Если функция обратного вызова не поддерживает асинхронную обработку, этот дескриптор равен нулю.

[in] pbAbort

Указывает, следует ли продолжать обработку объектов групповой политики. Если этот параметр имеет значение TRUE, обработка объекта групповой политики будет прекращена. Если этот параметр имеет значение FALSE, обработка объектов групповой политики продолжится.

[in] pStatusCallback

Указатель на функцию обратного вызова StatusMessageCallback , которая отображает сообщения о состоянии. В некоторых случаях этот параметр может иметь значение NULL . Например, если система применяет политику в фоновом режиме, пользовательский интерфейс состояния отсутствует и приложение не может отправлять сообщения о состоянии для отображения. Дополнительные сведения см. в разделе "Примечания".

Возвращаемое значение

Если политика успешно применена, верните ERROR_SUCCESS. Если в списке объектов групповой политики нет изменений и расширение необходимо вызвать снова, верните ERROR_OVERRIDE_NOCHANGES. Возврат ERROR_OVERRIDE_NOCHANGES гарантирует повторное вызов расширения, даже если задано значение реестра NoGPOListChanges . (Дополнительные сведения об этом значении реестра см. в разделе Примечания.) В противном случае верните код системной ошибки.

Комментарии

Дополнительные сведения см. в разделе Реализация расширения групповая политика на стороне клиента.

Система вызывает эту функцию в контексте учетной записи LocalSystem, которая имеет обширные привилегии на локальном компьютере. Чтобы использовать сетевые ресурсы, необходимо олицетворять пользователя или компьютер с помощью маркера, предоставленного в параметре hToken .

Чтобы зарегистрировать эту функцию обратного вызова, создайте подраздел в следующем разделе реестра:

HKEY_LOCAL_MACHINE\ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ\Microsoft\\ Windows NT CurrentVersion\Winlogon\GPExtensions\ClientExtensionGuid

Подраздел должен быть идентификатором GUID, чтобы он был уникальным. Он должен содержать следующие значения.

Обновлять сообщение о состоянии следует только в том случае, если политика применяется синхронно. Это позволяет предоставлять отзывы и диагностика во время длительного приложения политики. Чтобы использовать функцию обратного вызова сообщения о состоянии, необходимо убедиться, что pStatusCallback не имеет значение NULL. Затем загрузите ресурс строки сообщения. При вызове функции состояния необходимо указать, является ли строка подробной. Если строка является подробной, функция обратного вызова проверит, что компьютер находится в подробном режиме, и отобразит сообщение. Дополнительные сведения см. в разделе StatusMessageCallback.

Предупреждение Не вызывайте функцию pStatusCallback из фонового потока, так как вы можете перезаписать сообщение о состоянии другого потока.
 

Требования

Требование Значение
Минимальная версия клиента Windows Vista
Минимальная версия сервера Windows Server 2008
Целевая платформа Windows
Header userenv.h

См. также раздел

Функции групповая политика

Обзор групповых политик

ProcessGroupPolicyCompleted

RefreshPolicy

StatusMessageCallback