Поделиться через


Метод IWDFDevice2::CreateRemoteInterface (wudfddi.h)

[Предупреждение: UMDF 2 является последней версией UMDF и заменяет UMDF 1. Все новые драйверы UMDF должны быть написаны с помощью UMDF 2. В UMDF 1 новые функции не добавляются, а поддержка UMDF 1 в более новых версиях Windows 10 ограничена. Универсальные драйверы Windows должны использовать UMDF 2. Дополнительные сведения см. в разделе начало работы с UMDF.]

Метод CreateRemoteInterface создает объект удаленного интерфейса, представляющий интерфейс устройства.

Синтаксис

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

Параметры

[in] pRemoteInterfaceInit

Указатель на интерфейс IWDFRemoteInterfaceInitialize , полученный функцией обратного вызова IPnpCallbackRemoteInterfaceNotification::OnRemoteInterfaceArrival .

[in, optional] pCallbackInterface

Указатель на дополнительный интерфейс обратного вызова, предоставляемый драйвером. Метод IUnknown::QueryInterface этого интерфейса должен возвращать указатель на интерфейсы IRemoteInterfaceCallbackEvent и IRemoteInterfaceCallbackRemoval драйвера, если драйвер поддерживает эти интерфейсы. Этот параметр является необязательным и может иметь значение NULL.

[out] ppRemoteInterface

Указатель на указанное драйвером расположение, которое получает указатель на интерфейс IWDFRemoteInterface нового объекта удаленного интерфейса.

Возвращаемое значение

CreateRemoteInterface возвращает S_OK, если операция выполнена успешно. В противном случае метод может вернуть следующее значение:

Код возврата Описание
E_OUTOFMEMORY
Попытка платформы выделить память завершилась сбоем.
 

Этот метод может возвращать одно из других значений, содержащихся в Winerror.h.

Комментарии

Если драйвер вызывает CreateRemoteInterface, он должен сделать это из функции обратного вызова IPnpCallbackRemoteInterfaceNotification::OnRemoteInterfaceArrival .

Дополнительные сведения о CreateRemoteInterface и использовании интерфейсов устройств см. в статье Использование интерфейсов устройств в драйверах на основе UMDF.

Примеры

В следующем примере кода показана функция обратного вызова IPnpCallbackRemoteInterfaceNotification::OnRemoteInterfaceArrival , которая создает объект удаленного интерфейса, создает удаленный целевой объект и открывает удаленный целевой объект для операций ввода-вывода.

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