IWDFDevice2::CreateRemoteInterface 方法 (wudfddi.h)

[警告: UMDF 2 是最新版本的 UMDF,并取代 UMDF 1。 所有新的 UMDF 驱动程序都应使用 UMDF 2 编写。 不会向 UMDF 1 添加任何新功能,并且较新版本的 Windows 10 上对 UMDF 1 的支持有限。 通用 Windows 驱动程序必须使用 UMDF 2。 有关详细信息,请参阅使用 UMDF 入门。]

CreateRemoteInterface 方法创建表示设备接口的远程接口对象。

语法

HRESULT CreateRemoteInterface(
  [in]           IWDFRemoteInterfaceInitialize *pRemoteInterfaceInit,
  [in, optional] IUnknown                      *pCallbackInterface,
  [out]          IWDFRemoteInterface           **ppRemoteInterface
);

参数

[in] pRemoteInterfaceInit

指向驱动程序的 IPnpCallbackRemoteInterfaceNotification::OnRemoteInterfaceArrival 回调函数接收到的 IWDFRemoteInterfaceInitialize 接口的指针。

[in, optional] pCallbackInterface

指向驱动程序提供的可选回调接口的指针。 如果驱动程序支持这些接口,则此接口的 IUnknown::QueryInterface 方法必须返回指向驱动程序的 IRemoteInterfaceCallbackEventIRemoteInterfaceCallbackRemoval 接口的指针。 此参数是可选的,可以为 NULL

[out] ppRemoteInterface

指向驱动程序提供的位置的指针,该位置接收指向新远程接口对象的 IWDFRemoteInterface 接口的指针。

返回值

如果操作成功,CreateRemoteInterface 将返回S_OK。 否则,方法可能会返回以下值:

返回代码 说明
E_OUTOFMEMORY
框架分配内存的尝试失败。
 

此方法可能返回 Winerror.h 包含的其他值之一。

注解

如果驱动程序调用 CreateRemoteInterface,则必须从其 IPnpCallbackRemoteInterfaceNotification::OnRemoteInterfaceArrival 回调函数中执行此操作。

有关 CreateRemoteInterface 和使用设备接口的详细信息,请参阅 在基于 UMDF 的驱动程序中使用设备接口

示例

下面的代码示例演示 IPnpCallbackRemoteInterfaceNotification::OnRemoteInterfaceArrival 回调函数,该回调函数创建远程接口对象、创建远程目标对象,并打开远程目标进行 I/O 操作。

void 
STDMETHODCALLTYPE
CMyDevice::OnRemoteInterfaceArrival(
    __in IWDFRemoteInterfaceInitialize * FxRemoteInterfaceInit
    )
{
    HRESULT hr = S_OK;

    //
    // Create a new remote interface object and provide a callback 
    // object to handle remote interface events.
    //
    CComPtr<IWDFRemoteInterface> fxRemoteInterface;
    hr = m_FxDevice->CreateRemoteInterface(FxRemoteInterfaceInit, 
                                           MyRemoteInterfaceIUnknown, 
                                           &fxRemoteInterface);
    if (FAILED(hr)) goto Error;
    //
    // Create a new remote target object and provide a callback 
    // object to handle remote target events.
    //
    CComPtr<IWDFRemoteTarget> fxTarget;
    hr = m_FxDevice->CreateRemoteTarget(MyRemoteTargetIUnknown,
                                        fxRemoteInterface,
                                        &fxTarget);
    if (FAILED(hr)) goto Error;

    //
    // Open the remote interface with read/write access.
    //
    hr = FxTarget->OpenRemoteInterface(fxRemoteInterface, 
                                       NULL,
                                       GENERIC_READ | GENERIC_WRITE,
                                       NULL);
    if (FAILED(hr)) goto Error;
...
}

要求

要求
结束支持 在 UMDF 2.0 及更高版本中不可用。
目标平台 桌面
最低 UMDF 版本 1.9
标头 wudfddi.h (包括 Wudfddi.h)
DLL WUDFx.dll

另请参阅

IWDFDevice2

IWDFDevice2::CreateRemoteTarget

IWDFRemoteTarget::OpenRemoteInterface