Функция DRMCreateClientSession (msdrm.h)

[Пакет SDK ДЛЯ AD RMS с функциональными возможностями, предоставляемыми

клиент в Msdrm.dll доступен для использования в Windows Server 2008, Windows Vista, Windows Server 2008 R2, Windows 7, Windows Server 2012 и Windows 8. Он может быть изменен или

недоступно в последующих версиях. Вместо этого используйте пакет SDK 2.1 служб Active Directory Rights Management.

который использует функциональные возможности, предоставляемые клиентом в Msipc.dll.]

Функция DRMCreateClientSession создает сеанс клиента, в котором размещаются сеансы хранилища лицензий и используется в активации и других вызовах функций.

Синтаксис

DRMEXPORT HRESULT UDAPICALL DRMCreateClientSession(
  [in]           DRMCALLBACK pfnCallback,
  [in]           UINT        uCallbackVersion,
  [in]           PWSTR       wszGroupIDProviderType,
  [in, optional] PWSTR       wszGroupID,
  [out]          DRMHSESSION *phClient
);

Параметры

[in] pfnCallback

Указатель на определяемую приложением функцию обратного вызова, которая будет получать сообщения о состоянии асинхронной функции в ответ на другие функции AD RMS, такие как DRMActivate. Формат этой функции обратного вызова определен в прототипе обратного вызова. Этот параметр не может иметь значение NULL.

[in] uCallbackVersion

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

[in] wszGroupIDProviderType

Указатель на строку Юникода, завершающуюся null, которая указывает тип проверки подлинности отправленного сертификата учетной записи прав (RAC). Это может быть одно из следующих значений.

DRM_DEFAULTGROUPIDTYPE_WINDOWSAUTH

использование проверки подлинности Windows. Укажите это значение также для службы федерации Active Directory (AD FS) (ADFS) RAC.

DRM_DEFAULTGROUPIDTYPE_PASSPORT

Используйте проверку подлинности Passport.

[in, optional] wszGroupID

Указатель на строку Юникода, завершающуюся null, которая содержит адрес электронной почты пользователя в формате someone@example.com. Как правило, это значение уже существует в Active Directory (AD) и совпадает с идентификатором, указанным в учетных данных входа. Если это не то же самое, последующие вызовы DRMIsActivated и DRMEnumerateLicense завершатся ошибкой. Дополнительные сведения см. в подразделе "Примечания".

Задайте для этого параметра значение NULL , если планируется использовать только дескриптор сеанса клиента, созданный этой функцией, для получения расположения службы путем вызова DRMGetServiceLocation.

[out] phClient

Указатель на значение DRMHSESSION , которое получает дескриптор сеанса клиента. Завершив работу с сеансом клиента, закройте его, передав этот дескриптор в функцию DRMCloseSession .

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

Если функция завершается успешно, функция возвращает S_OK.

Если функция завершается сбоем, она возвращает значение HRESULT , указывающее на ошибку. Возможные значения включают, помимо прочего, значения из следующего списка. Список распространенных кодов ошибок см. в разделе Общие значения HRESULT.

Комментарии

Если эта функция выполнена успешно, сервер AD RMS возвращает дескриптор сеанса клиента, используемый DRMActivate для создания сертификата учетной записи прав (RAC) в хранилище лицензий для нового сеанса клиента. RAC создается с использованием учетных данных пользователя, выполнившего вход. Если адрес электронной почты, указанный в параметре wszGroupID , не совпадает с адресом, указанным в учетных данных, такие функции, как DRMIsActivated и DRMEnumerateLicense , которые используют сведения, связанные с сеансом клиента, для поиска RAC в хранилище лицензий.

Например, предположим, что пользователь вошел в систему с помощью , cat@example.com но параметр wszGroupID имеет значение dog@example.com. RAC создается для cat@example.com. Однако функция DRMEnumerateLicense ищет в хранилище лицензий RAC, который содержит и завершается dog@example.com сбоем.

Перед закрытием сеанса клиента необходимо закрыть все сеансы хранилища лицензий. Завершив использование сеанса клиента, закройте его, передав дескриптор, предоставленный этой функцией, в функцию DRMCloseSession .

Функция DRMCreateClientSession не может вызываться одновременно разными процессами, работающими от имени разных пользователей на одном компьютере, если один или несколько из этих процессов являются процессом службы. Например, вызов второго процесса может быть успешным только после закрытия дескриптора сеанса клиента для первого процесса.

Требования

Требование Значение
Целевая платформа Windows
Header msdrm.h
Библиотека Msdrm.lib
DLL Msdrm.dll

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

Функции AD RMS

Создание функции обратного вызова

DRMCloseSession