Condividi tramite


Metodo IWDFDevice2::CreateRemoteInterface (wudfddi.h)

[Avviso: UMDF 2 è la versione più recente di UMDF e sostituisce UMDF 1. Tutti i nuovi driver UMDF devono essere scritti usando UMDF 2. Non vengono aggiunte nuove funzionalità a UMDF 1 ed è disponibile un supporto limitato per UMDF 1 nelle versioni più recenti di Windows 10. I driver di Windows universali devono usare UMDF 2. Per altre info, vedi Introduzione con UMDF.]

Il metodo CreateRemoteInterface crea un oggetto interfaccia remota che rappresenta un'interfaccia del dispositivo.

Sintassi

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

Parametri

[in] pRemoteInterfaceInit

Puntatore a un'interfaccia IWDFRemoteInterfaceInitialize ricevuta dalla funzione di callback IPnpCallbackRemoteInterfaceNotification::OnRemoteInterfaceArrival .

[in, optional] pCallbackInterface

Puntatore a un'interfaccia di callback fornita dal driver facoltativa. Il metodo IUnknown::QueryInterface di questa interfaccia deve restituire un puntatore alle interfacce IRemoteInterfaceCallbackEvent e IRemoteInterfaceCallbackRemoval del driver, se il driver supporta tali interfacce. Questo parametro è facoltativo e può essere NULL.

[out] ppRemoteInterface

Puntatore a una posizione fornita dal driver che riceve un puntatore all'interfaccia IWDFRemoteInterface del nuovo oggetto interfaccia remota.

Valore restituito

CreateRemoteInterface restituisce S_OK se l'operazione ha esito positivo. In caso contrario, il metodo potrebbe restituire il valore seguente:

Codice restituito Descrizione
E_OUTOFMEMORY
Il tentativo del framework di allocare memoria non è riuscito.
 

Questo metodo potrebbe restituire uno degli altri valori contenuti da Winerror.h.

Commenti

Se il driver chiama CreateRemoteInterface, deve farlo dall'interno della relativa funzione di callback IPnpCallbackRemoteInterfaceNotification::OnRemoteInterfaceArrival .

Per altre informazioni su CreateRemoteInterface e sull'uso delle interfacce di dispositivo, vedere Uso delle interfacce di dispositivo nei driver basati su UMDF

Esempio

Nell'esempio di codice seguente viene illustrata una funzione di callback IPnpCallbackRemoteInterfaceNotification::OnRemoteInterfaceArrival che crea un oggetto interfaccia remota, crea un oggetto di destinazione remoto e apre la destinazione remota per le operazioni di 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;
...
}

Requisiti

Requisito Valore
Fine del supporto Non disponibile in UMDF 2.0 e versioni successive.
Piattaforma di destinazione Desktop
Versione UMDF minima 1,9
Intestazione wudfddi.h (include Wudfddi.h)
DLL WUDFx.dll

Vedi anche

IWDFDevice2

IWDFDevice2::CreateRemoteTarget

IWDFRemoteTarget::OpenRemoteInterface