枚举集合中的对象
注意
从 Windows Server 2008 开始, (IAS) 的 Internet 身份验证服务 (NPS) 重命名为网络策略服务器。 本主题的内容适用于 IAS 和 NPS。 在整个文本中,NPS 用于引用服务的所有版本,包括最初称为 IAS 的版本。
以下代码枚举 NPS 协议集合中的协议。
HRESULT hr;
//
// Retrieve the protocols collection object
//
_variant_t vtIASProtocolsCollection;
hr = pSdo->GetProperty(
PROPERTY_IAS_PROTOCOLS_COLLECTION,
&vtIASProtocolsCollection
);
if (FAILED(hr))
{
return hr;
}
//
// Retrieve the ISdoCollection interface
// for the object.
//
CComPtr<ISdoCollection> pIASProtocolsCollection;
hr = vtIASProtocolsCollection.pdispVal->QueryInterface(
__uuidof(ISdoCollection),
(void **) &pIASProtocolsCollection
);
if (FAILED(hr))
{
return hr;
}
//
// Retrieve the enumeration interface, IEnumVARIANT
//
CComPtr<IUnknown> pUnknownProtocol;
hr = pIASProtocolsCollection->get__NewEnum(&pUnknownProtocol);
if (FAILED(hr))
{
return hr;
}
CComPtr<IEnumVARIANT> pEnumProtocols;
hr = pUnknownProtocol->QueryInterface(
__uuidof(IEnumVARIANT),
(void **) &pEnumProtocols
);
if (FAILED(hr))
{
return hr;
}
//
// Retrieve the first protocol from the collection
//
DWORD dwRetrieved = 1;
_variant_t vtProtocol;
hr = pEnumProtocols->Next(1, &vtProtocol, &dwRetrieved);
if (FAILED(hr))
{
return hr;
}
while (hr != S_FALSE) {
//
// Retrieve the name of the protocol
//
CComPtr<ISdo> pLocalSdo;
hr = vtProtocol.pdispVal->QueryInterface(
__uuidof(ISdo),
(void**)&pLocalSdo
);
if (FAILED(hr))
{
return hr;
}
_variant_t vtName;
hr = pLocalSdo->GetProperty(PROPERTY_SDO_NAME, &vtName);
if (FAILED(hr))
{
return hr;
}
vtProtocol.Clear();
vtName.Clear();
//
// Retrieve the next protocol from the collection
//
dwRetrieved = 1;
hr = pEnumProtocols->Next(1, &vtProtocol, &dwRetrieved);
if (FAILED(hr))
{
return hr;
}
}
备注
vtName 和 vtProtocol 变量的类型 为 _variant_t。 _variant_t 对象封装或包含 VARIANT 数据类型。 类管理资源分配和解除分配,并根据需要对 VariantInit 和 VariantClear 进行函数调用。
相关主题