IWDFDevice2::CreateRemoteInterface method
The CreateRemoteInterface method creates a remote interface object that represents a device interface.
Syntax
HRESULT CreateRemoteInterface( [in] IWDFRemoteInterfaceInitialize *pRemoteInterfaceInit, [in, optional] IUnknown *pCallbackInterface, [out] IWDFRemoteInterface **ppRemoteInterface );
Parameters
- pRemoteInterfaceInit [in]
-
A pointer to an IWDFRemoteInterfaceInitialize interface that the driver's IPnpCallbackRemoteInterfaceNotification::OnRemoteInterfaceArrival callback function received.
- pCallbackInterface [in, optional]
-
A pointer to an optional, driver-supplied callback interface. The IUnknown::QueryInterface method of this interface must return a pointer to the driver's IRemoteInterfaceCallbackEvent and IRemoteInterfaceCallbackRemoval interfaces, if the driver supports those interfaces. This parameter is optional and can be NULL.
- ppRemoteInterface [out]
-
A pointer to a driver-supplied location that receives a pointer to the IWDFRemoteInterface interface of the new remote interface object.
Return value
CreateRemoteInterface returns S_OK if the operation succeeds. Otherwise, the method might return the following value:
Return code | Description |
---|---|
|
The framework's attempt to allocate memory failed. |
This method might return one of the other values that Winerror.h contains.
Remarks
If your driver calls CreateRemoteInterface, it must do so from within its IPnpCallbackRemoteInterfaceNotification::OnRemoteInterfaceArrival callback function.
For more information about CreateRemoteInterface and using device interfaces, see Using Device Interfaces in UMDF-based Drivers
Examples
The following code example shows an IPnpCallbackRemoteInterfaceNotification::OnRemoteInterfaceArrival callback function that creates a remote interface object, creates a remote target object, and opens the remote target for I/O operations.
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; ... }
Requirements
End of support | Unavailable in UMDF 2.0 and later. |
---|---|
Minimum UMDF version | 1.9 |
Header |
|
DLL |
|
See also