Функция DRMGetServiceLocation (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.]

Функция DRMGetServiceLocation извлекает URL-адрес сервера, который может выполнять различные службы управления правами, такие как активация или получение лицензии.

Синтаксис

DRMEXPORT HRESULT UDAPICALL DRMGetServiceLocation(
  [in, optional] DRMHSESSION hClient,
  [in]           UINT        uServiceType,
  [in]           UINT        uServiceLocation,
  [in]           PWSTR       wszIssuanceLicense,
  [in, out]      UINT        *puServiceURLLength,
  [out]          PWSTR       wszServiceURL
);

Параметры

[in, optional] hClient

Дескриптор сеанса клиента. Дескриптор можно получить с помощью функции DRMCreateClientSession . Дескриптор является необязательным и может иметь значение NULL.

[in] uServiceType

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

DRM_SERVICE_TYPE_ACTIVATION

Получите службу активации компьютера.

DRM_SERVICE_TYPE_CERTIFICATION

Получите службу сертификатов учетной записи прав .

DRM_SERVICE_TYPE_CLIENTLICENSOR

Получение службы сертификатов лицензиара клиента (для публикации в автономном режиме).

DRM_SERVICE_TYPE_PUBLISHING

Получите службу подписи лицензий на выдачу (для публикации по сети).

DRM_SERVICE_TYPE_SILENT

Подавляет внешний вид диалоговых окон пользовательского интерфейса при выполнении запроса на получение расположения службы.

[in] uServiceLocation

Указывает, где найти сервер AD RMS. Это может быть одно из следующих значений.

DRM_SERVICE_LOCATION_ENTERPRISE

Найдите сервер AD RMS на предприятии.

DRM_SERVICE_LOCATION_INTERNET

Найдите сервер AD RMS в Интернете.

[in] wszIssuanceLicense

Указатель на строку Юникода, завершающуюся null, которая содержит подписанную лицензию на выдачу. Этот параметр может принимать значение NULL. Дополнительные сведения см. в подразделе "Примечания".

[in, out] puServiceURLLength

Указатель на UINT , который на входных данных содержит размер буфера wszServiceURL в символах. Это значение включает завершающий символ NULL.

После возврата функции этот UINT содержит количество символов, включая завершающий пустой символ, которые были скопированы в буфер wszServiceURL .

Если wszServiceURL имеет значение NULL, этот UINT получает количество символов, включая завершающий символ NULL, необходимый для URL-адреса сервера.

[out] wszServiceURL

Указатель на буфер строки Юникода, который получает URL-адрес сервера. Параметр puServiceURLLength содержит размер этого буфера в символах, включая завершающий пустой символ.

Если этот параметр имеет значение NULL, puServiceURLLength получает количество символов, включая завершающий символ NULL, необходимый для URL-адреса сервера.

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

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

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

Комментарии

Обнаружение URL-адреса службы зависит от взаимодействия между параметрами uServiceType, uServiceLocation и wszIssuanceLicense следующим образом.

Если для параметра uServiceType задано значение DRM_SERVICE_TYPE_CERTIFICATION или DRM_SERVICE_TYPE_ACTIVATION и:

  • Вы передаете подписанную лицензию на выдачу в параметр wszIssuanceLicense . URL-адрес лицензирования извлекается из подписанной лицензии на выдачу, выполняется вызов сервера лицензирования для обнаружения URL-адреса сертификации, соответствующего вызывающей пользователю, а функция возвращает URL-адрес сертификации.
  • Для параметра wszIssuanceLicense задается значение NULL , а для параметра uServiceLocation — значение DRM_SERVICE_LOCATION_INTERNET, функция возвращает код ошибки E_DRM_USE_DEFAULT.
  • Для параметра wszIssuanceLicense задается значение NULL, а для параметра uServiceLocation — значение DRM_SERVICE_LOCATION_ENTERPRISE, URL-адрес извлекается из реестра или Active Directory (AD).

Если для параметра uServiceType задано значение DRM_SERVICE_TYPE_PUBLISHING или DRM_SERVICE_TYPE_CLIENTLICENSOR и:

  • Вы задали параметру uServiceLocation значение DRM_SERVICE_LOCATION_INTERNET, чтобы получить URL-адрес службы из Интернета, поддерживается служба Passport.
  • Для параметра uServiceLocation задается значение DRM_SERVICE_LOCATION_ENTERPRISE, а для параметра wszIssuanceLicenseзначение NULL. URL-адрес службы лицензирования извлекается из реестра и возвращается вызовом функции. Или при отсутствии записи реестра URL-адрес сертификации извлекается из точки подключения службы в Active Directory (AD), выполняется вызов к серверу сертификации для обнаружения URL-адреса службы лицензирования, а функция возвращает URL-адрес службы лицензирования.
  • Вы задаете для параметра uServiceLocation значение DRM_SERVICE_LOCATION_ENTERPRISE и передаете подписанную лицензию на выдачу параметру wszIssuanceLicense . Функция пытается получить настроенный URL-адрес лицензирования из реестра. Если эта попытка завершается сбоем, URL-адрес лицензирования извлекается из подписанной лицензии на выдачу и выполняется вызов сервера лицензирования, чтобы обнаружить конкретный URL-адрес лицензирования пользователя.

В предыдущих случаях, когда функция выполняет поиск в реестре, можно принудительно найти определенный URL-адрес, добавив соответствующий раздел реестра в следующем списке вместе с URL-адресом в качестве строкового значения с именем (по умолчанию). Не добавляйте страницу ASMX в URL-адрес.

Раздел реестра Описание
  • 32-разрядное приложение на 32-разрядном компьютере
  • 64-разрядное приложение на 64-разрядном компьютере
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDRM\ServiceLocation\Activation
  • 32-разрядное приложение на 64-разрядном компьютере
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSDRM\ServiceLocation\Activation
Для RMS версии 1.0 задайте для этого параметра реестра URL-адрес службы активации компьютера. Чтобы использовать это значение для сертификации, задайте для него виртуальный корень сертификации предприятия.

Начиная с RMS версии 1.0 с пакетом обновления 1 (SP1), это значение можно использовать только для обнаружения службы сертификации. Поэтому задайте для него URL-адрес виртуального корня учетной записи прав, http:// ServerName/_wmcs/certification.

  • 32-разрядное приложение на 32-разрядном компьютере
  • 64-разрядное приложение на 64-разрядном компьютере
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDRM\ServiceLocation\EnterprisePublishing
  • 32-разрядное приложение на 64-разрядном компьютере
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSDRM\ServiceLocation\EnterprisePublishing
Задайте для этого значения реестра URL-адрес службы, которая подписывает лицензии на выдачу в корпоративной сети.
  • 32-разрядное приложение на 32-разрядном компьютере
  • 64-разрядное приложение на 64-разрядном компьютере
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDRM\ServiceLocation\CloudPublishing
  • 32-разрядное приложение на 64-разрядном компьютере
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSDRM\ServiceLocation\CloudPublishing
Задайте для этого значения реестра URL-адрес службы, которая подписывает лицензии на выдачу через Интернет.
 

Приложение отвечает за выделение и освобождение памяти для полученных данных. Чтобы найти требуемый размер буфера, вызовите функцию со значением NULL в параметре wszServiceURL . Размер буфера будет передан обратно через параметр puServiceURLLength .

Пример кода обнаружения службы см. в разделе OnlineSigning_GetServiceURL.cpp. Обнаружение служб для получения лицензий конечных пользователей не выполняется, так как эти сведения могут храниться в лицензии на выдачу , используемой для получения лицензии конечного пользователя.

Требования

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

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

Функции AD RMS

DRMActivate

OnlineSigning_GetServiceURL.cpp