ADsPropCreateNotifyObj 函数 (adsprop.h)
ADsPropCreateNotifyObj 函数用于创建或获取通知对象,以供Active Directory 域服务属性表扩展使用。
语法
HRESULT ADsPropCreateNotifyObj(
[in] LPDATAOBJECT pAppThdDataObj,
[in] PWSTR pwzADsObjName,
[out] HWND *phNotifyObj
);
参数
[in] pAppThdDataObj
指向 IDataObject 对象的指针,该对象表示属性页应用于的目录对象。 这是传递给属性页 IShellExtInit::Initialize 方法的 IDataObject。
[in] pwzADsObjName
为 pAppThdDataObj 表示的 IDataObject 上CFSTR_DSOBJECTNAMES剪贴板格式调用 IDataObject::GetData 方法获取的Active Directory 域服务对象名称。
[out] phNotifyObj
指向接收通知对象的句柄的 HWND 值的指针。
返回值
如果成功,则返回 S_OK ,否则返回 OLE 定义的错误值。
注解
ADsPropCreateNotifyObj 函数用于实现 Active Directory 域服务 属性表扩展。 扩展必须首先通过调用 IDataObject::GetData 从传递给 IShellExtInit::Initialize 的 IDataObject 接口请求CFSTR_DSOBJECTNAMES数据。 这会提供调用 ADsPropCreateNotifyObj 所需的数据对象和对象名称。
当不再需要通知对象时, 会将WM_ADSPROP_NOTIFY_EXIT 消息发送到通知对象。 这会导致通知对象自行销毁。 发送 WM_ADSPROP_NOTIFY_EXIT 消息时,通知对象句柄应被视为无效。
示例
以下 C++ 示例演示如何使用 ADsPropCreateNotifyObj 函数。
HWND CreateADsNotificationObject(IDataObject *pDataObject)
{
STGMEDIUM stm;
FORMATETC fe;
HRESULT hr;
HWND hwndNotifyObject = NULL;
if(NULL == pDataObject)
{
return NULL;
}
fe.cfFormat = RegisterClipboardFormat(CFSTR_DSOBJECTNAMES);
if(0 == fe.cfFormat)
{
return NULL;
}
fe.ptd = NULL;
fe.dwAspect = DVASPECT_CONTENT;
fe.lindex = -1;
fe.tymed = TYMED_HGLOBAL;
hr = pDataObject->GetData(&fe, &stm);
if(SUCCEEDED(hr))
{
LPDSOBJECTNAMES pdson =
(LPDSOBJECTNAMES)GlobalLock(stm.hGlobal);
if(pdson)
{
LPWSTR pwszName = (LPWSTR)((LPBYTE)pdson +
pdson->aObjects[0].offsetName);
hr = ADsPropCreateNotifyObj(pDataObject,
pwszName,
&hwndNotifyObject);
GlobalUnlock(stm.hGlobal);
}
ReleaseStgMedium(&stm);
}
return hwndNotifyObject;
}
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista |
最低受支持的服务器 | Windows Server 2008 |
目标平台 | Windows |
标头 | adsprop.h |
Library | Dsprop.lib |
DLL | Dsprop.dll |