读取构造属性的示例代码
以下代码示例演示了可用于检索适用于所有属性类型的属性值的方法。
Public Function GetAttribute(oObject As IADs, AttributeName As String) As String
Const E_ADS_PROPERTY_NOT_FOUND = &H8000500D
On Error Resume Next
' Attempt to get the attribute value.
GetAttribute = oObject.Get(AttributeName)
If (Err.Number = E_ADS_PROPERTY_NOT_FOUND) Then
' Reset the error number.
Err.Number = 0
' Use IADs.GetInfoEx to explicitly load the attribute value into the cache.
oObject.GetInfoEx Array(AttributeName), 0
If Err.Number = 0 Then
' Attempt to get the attribute value.
GetAttribute = oObject.Get(AttributeName)
End If
End If
End Function
以下代码示例演示了可用于检索适用于所有属性类型的属性值的方法。
/***************************************************************************
GetAttribute()
***************************************************************************/
HRESULT GetAttribute(IADs *pads, BSTR bstrAttribute, VARIANT *pvar)
{
if(!pads || !pvar)
{
return E_INVALIDARG;
}
HRESULT hr;
CComVariant svar;
// Attempt to get the attribute with IADs.Get.
hr = pads->Get(bstrAttribute, &svar);
if(E_ADS_PROPERTY_NOT_FOUND == hr)
{
// Attempt to get the attribute with IADs.GetInfoEx and then IADs.Get.
CComVariant svarArray;
hr = ADsBuildVarArrayStr(&(LPWSTR)bstrAttribute, 1, &svarArray);
if (SUCCEEDED(hr))
{
hr = pads->GetInfoEx(svarArray, 0L);
if(SUCCEEDED(hr))
{
hr = pads->Get(bstrAttribute, &svar);
}
}
}
if(S_OK == hr)
{
hr = svar.Detach(pvar);
}
return hr;
}