Méthode IWDFDevice2 ::CreateRemoteInterface (wudfddi.h)

[Avertissement : UMDF 2 est la dernière version d’UMDF et remplace UMDF 1. Tous les nouveaux pilotes UMDF doivent être écrits à l’aide d’UMDF 2. Aucune nouvelle fonctionnalité n’est ajoutée à UMDF 1 et la prise en charge d’UMDF 1 est limitée sur les versions plus récentes de Windows 10. Les pilotes Windows universels doivent utiliser UMDF 2. Pour plus d’informations, consultez Prise en main avec UMDF.]

La méthode CreateRemoteInterface crée un objet d’interface distante qui représente une interface d’appareil.

Syntaxe

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

Paramètres

[in] pRemoteInterfaceInit

Pointeur vers une interface IWDFRemoteInterfaceInitialize que la fonction de rappel IPnpCallbackRemoteInterfaceNotification ::OnRemoteInterfaceArrival du pilote a reçue.

[in, optional] pCallbackInterface

Pointeur vers une interface de rappel facultative fournie par le pilote. La méthode IUnknown ::QueryInterface de cette interface doit retourner un pointeur vers les interfaces IRemoteInterfaceCallbackEvent et IRemoteInterfaceCallbackRemoval du pilote, si le pilote prend en charge ces interfaces. Ce paramètre est facultatif et peut être NULL.

[out] ppRemoteInterface

Pointeur vers un emplacement fourni par le pilote qui reçoit un pointeur vers l’interface IWDFRemoteInterface du nouvel objet d’interface distante.

Valeur retournée

CreateRemoteInterface retourne S_OK si l’opération réussit. Sinon, la méthode peut retourner la valeur suivante :

Code de retour Description
E_OUTOFMEMORY
La tentative d’allocation de mémoire de l’infrastructure a échoué.
 

Cette méthode peut retourner l’une des autres valeurs que Winerror.h contient.

Remarques

Si votre pilote appelle CreateRemoteInterface, il doit le faire à partir de sa fonction de rappel IPnpCallbackRemoteInterfaceNotification ::OnRemoteInterfaceArrival .

Pour plus d’informations sur CreateRemoteInterface et l’utilisation d’interfaces d’appareil, consultez Utilisation d’interfaces de périphérique dans les pilotes basés sur UMDF

Exemples

L’exemple de code suivant montre une fonction de rappel IPnpCallbackRemoteInterfaceNotification ::OnRemoteInterfaceArrival qui crée un objet d’interface distante, crée un objet cible distant et ouvre la cible distante pour les opérations d’E/S.

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;
...
}

Configuration requise

Condition requise Valeur
Fin de la prise en charge Non disponible dans UMDF 2.0 et versions ultérieures.
Plateforme cible Desktop (Expérience utilisateur)
Version UMDF minimale 1,9
En-tête wudfddi.h (inclure Wudfddi.h)
DLL WUDFx.dll

Voir aussi

IWDFDevice2

IWDFDevice2 ::CreateRemoteTarget

IWDFRemoteTarget ::OpenRemoteInterface