Получение коллекции
Примечание
Служба проверки подлинности в Интернете (IAS) была переименована в сервер политики сети (NPS), начиная с Windows Server 2008. Содержание этого раздела относится как к IAS, так и к NPS. В тексте NPS используется для обозначения всех версий службы, включая версии, первоначально называемые IAS.
Следующий код извлекает коллекцию клиентов для сервера политики сети.
// Retrieve the clients collection
HRESULT hr;
CComPtr<ISdo> pSdo;
hr = pSdoServiceControl->QueryInterface(
__uuidof(ISdo),
(void**) &pSdo
);
if (FAILED(hr))
{
return hr;
}
//
// First Retrieve the protocols collection
//
_variant_t vtProtocolsCollection;
hr = pSdo->GetProperty(
PROPERTY_IAS_PROTOCOLS_COLLECTION,
&vtProtocolsCollection
);
if (FAILED(hr))
{
return hr;
}
//
// Get the ISdoCollection interface
// for the object.
//
CComPtr<ISdoCollection> pProtocolsCollection;
hr = vtProtocolsCollection.pdispVal->QueryInterface(
__uuidof(ISdoCollection),
(void **) &pProtocolsCollection
);
if (FAILED(hr))
{
return hr;
}
//
// Then retrieve the RADIUS protocol
//
CComPtr<IDispatch> pRadiusDispatch;
_variant_t vtProtocolName = L"Microsoft Radius Protocol";
hr = pProtocolsCollection->Item(&vtProtocolName, &pRadiusDispatch);
if (FAILED(hr))
{
return hr;
}
CComPtr<ISdo> pRadiusSdo;
hr = pRadiusDispatch->QueryInterface(
__uuidof(ISdo),
(void **) &pRadiusSdo
);
if (FAILED(hr))
{
return hr;
}
//
// Then retrieve the clients collection
//
_variant_t vtClientsCollection;
hr = pRadiusSdo->GetProperty(PROPERTY_RADIUS_CLIENTS_COLLECTION, &vtClientsCollection);
if (FAILED(hr))
{
return hr;
}
CComPtr<ISdoCollection> pClientsCollection;
hr = vtClientsCollection.pdispVal->QueryInterface(
__uuidof(ISdoCollection),
(void **) &pClientsCollection
);
if (FAILED(hr))
{
return hr;
}
Комментарии
Переменная pSdoServiceControl содержит указатель на объект данных сервера для NPS. Дополнительные сведения см. в разделе Извлечение SDO службы.
Переменная vtClientsCollection имеет тип _variant_t. Объект _variant_t инкапсулирует или заключает тип данных VARIANT . Класс управляет выделением ресурсов и освобождением, а также соответствующим образом вызывает функции VariantInit и VariantClear .
После вызова pSdo-GetProperty>()переменная vtProtocolsCollection указывает объект . Член pdispVal объекта vtProtocolsCollection содержит указатель на интерфейс IDispatch для объекта .
Приведенный выше пример кода можно адаптировать для получения других коллекций NPS, например коллекций обработчиков запросов NPS. Тип перечисления IASPROPERTIES перечисляет значения, соответствующие доступным коллекциям NPS.
Связанные темы