IWDFRemoteTarget::OpenRemoteInterface 方法 (wudfddi.h)

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

OpenRemoteInterface 方法会打开设备接口,以便驱动程序可以向其发送 I/O 请求。

语法

HRESULT OpenRemoteInterface(
  [in]           IWDFRemoteInterface         *pRemoteInterface,
  [in, optional] PCWSTR                      pszRelativeFileName,
  [in]           DWORD                       DesiredAccess,
  [in, optional] PUMDF_IO_TARGET_OPEN_PARAMS pOpenParams
);

参数

[in] pRemoteInterface

指向驱动程序从上一次调用 IWDFDevice2::CreateRemoteInterface 获取的 IWDFRemoteInterface 接口的指针。

[in, optional] pszRelativeFileName

指向调用方提供的 以 null 结尾的字符串的可选指针,框架将其追加到设备接口的符号链接名称。

[in] DesiredAccess

一个位掩码,指定调用方对文件所需的访问权限。 有关此成员的详细信息,请参阅Windows SDK中的 CreateFileDesiredAccess 参数。

[in, optional] pOpenParams

指向调用方分配 的UMDF_IO_TARGET_OPEN_PARAMS 结构的指针,该结构包含其他参数。 此参数是可选的,可以为 NULL

返回值

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

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

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

如果框架无法打开文件,框架 的验证程序 会报告错误。

注解

在驱动程序的 IPnpCallbackRemoteInterfaceNotification::OnRemoteInterfaceArrival 回调函数收到设备接口可用的通知后,在驱动程序调用 IWDFDevice2::CreateRemoteInterface 来创建远程接口对象之后,驱动程序可以调用 OpenRemoteInterface ,以便它可以向设备接口发送 I/O 请求。

设备接口必须由加载基于 UMDF 的驱动程序的帐户(通常是本地服务帐户)访问。 但是,如果驱动程序在调用 OpenRemoteInterface 时使用模拟,则模拟帐户必须可访问设备接口。

有关 OpenRemoteInterface 以及如何在基于 UMDF 的驱动程序中使用设备接口的详细信息,请参阅 在基于 UMDF 的驱动程序中使用设备接口

示例

下面的代码示例演示 IPnpCallbackRemoteInterfaceNotification::OnRemoteInterfaceArrival 回调函数如何为设备接口创建远程接口和远程目标对象,然后打开接口进行 I/O 操作。

void 
STDMETHODCALLTYPE
CMyDevice::OnRemoteInterfaceArrival(
    __in IWDFRemoteInterfaceInitialize * FxRemoteInterfaceInit
    )
...
    HRESULT hr;
    CComPtr<IWDFRemoteInterface> fxRemoteInterface;
    CComPtr<IWDFRemoteTarget> m_FxTarget;

    hr = m_FxDevice->CreateRemoteInterface(FxRemoteInterfaceInit, 
                                           NULL, 
                                           &fxRemoteInterface);
    if (FAILED(hr)) goto Error;
    hr = FxDevice->CreateRemoteTarget(unknown,
                                      fxRemoteInterface,
                                      &m_FxTarget);
    if (FAILED(hr)) goto Error;
    hr = m_FxTarget->OpenRemoteInterface(fxRemoteInterface, 
                                         NULL,
                                         GENERIC_READ | GENERIC_WRITE,
                                         NULL);
...
Error:
...

要求

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

另请参阅

IWDFRemoteTarget

IWDFRemoteTarget::OpenFileByName