Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Crée un objet d’appareil UFX, inscrit des routines de rappel d’événements et spécifie des fonctionnalités spécifiques au contrôleur.
Syntaxe
NTSTATUS UfxDeviceCreate(
WDFDEVICE WdfDevice,
[in] PUFX_DEVICE_CALLBACKS Callbacks,
[in] PUFX_DEVICE_CAPABILITIES Capabilities,
[in, optional] PWDF_OBJECT_ATTRIBUTES Attributes,
[out] UFXDEVICE *UfxDevice
);
Paramètres
WdfDevice
Handle vers un objet d’appareil WDF.
[in] Callbacks
Structure de type UFX_DEVICE_CALLBACKS qui contient des pointeurs vers des routines de rappel fournies par le pilote à associer à l’objet d’appareil UFX.
[in] Capabilities
Pointeur vers une structure UFX_DEVICE_CAPABILITIES.
[in, optional] Attributes
Pointeur vers une structure WDF_OBJECT_ATTRIBUTES qui contient des attributs fournis par le pilote pour le nouvel objet. Ce paramètre est facultatif et peut être WDF_NO_OBJECT_ATTRIBUTES.
[out] UfxDevice
Pointeur vers un emplacement qui reçoit un handle vers le nouvel objet d’appareil UFX.
Valeur de retour
Si l’opération réussit, la méthode retourne STATUS_SUCCESS, ou une autre valeur d’état pour laquelle NT_SUCCESS(status) a la valeur TRUE. Sinon, elle retourne une valeur d’état pour laquelle NT_SUCCESS(status) a la valeur FALSE.
Remarques
Le pilote client doit appeler WdfDeviceCreate avant d’appeler UfxDeviceCreate. En règle générale, le pilote client appelle UfxDeviceCreate à partir de sa routine de rappel EvtDriverDeviceAdd.
L’extrait de code suivant montre comment appeler UfxDeviceCreate.
NTSTATUS
UfxDevice_DeviceCreate (
_In_ WDFDEVICE WdfDevice
)
/*++
Routine Description:
Routine that registers with UFX and creates the UFX device object.
Arguments:
WdfDevice - Wdf object representing the device.
Return Value:
NTSTATUS.
--*/
{
NTSTATUS Status;
PCONTROLLER_CONTEXT ControllerContext;
UFX_DEVICE_CALLBACKS UfxDeviceCallbacks;
UFX_DEVICE_CAPABILITIES UfxDeviceCapabilities;
PUFXDEVICE_CONTEXT UfxDeviceContext;
UFXDEVICE UfxDevice;
WDF_OBJECT_ATTRIBUTES Attributes;
PAGED_CODE();
TraceEntry();
ControllerContext = DeviceGetControllerContext(WdfDevice);
UFX_DEVICE_CAPABILITIES_INIT(&UfxDeviceCapabilities);
UfxDeviceCapabilities.MaxSpeed = UsbSuperSpeed;
UfxDeviceCapabilities.RemoteWakeSignalDelay = REMOTE_WAKEUP_TIMEOUT_INTERVAL_MS;
//
// Set bitmasks that define the IN and OUT endpoint numbers that are available on the controller
//
//
// #### TODO: Set the IN endpoint mask here if not all endpoint addresses are supported ####
//
// For illustration purposes sample will set default control endpoint 0, 1-4, 8
UfxDeviceCapabilities.InEndpointBitmap = 0x011F;
//
// #### TODO: Set the OUT endpoint mask here if not all endpoint addresses are supported ####
//
// For illustration purposes sample will set default control endpoint 0, 2-7
//
UfxDeviceCapabilities.OutEndpointBitmap = 0x00FD;
//
// Set the event callbacks for the ufxdevice
//
UFX_DEVICE_CALLBACKS_INIT(&UfxDeviceCallbacks);
UfxDeviceCallbacks.EvtDeviceHostConnect = UfxDevice_EvtDeviceHostConnect;
UfxDeviceCallbacks.EvtDeviceHostDisconnect = UfxDevice_EvtDeviceHostDisconnect;
UfxDeviceCallbacks.EvtDeviceAddressed = UfxDevice_EvtDeviceAddressed;
UfxDeviceCallbacks.EvtDeviceEndpointAdd = UfxDevice_EvtDeviceEndpointAdd;
UfxDeviceCallbacks.EvtDeviceDefaultEndpointAdd = UfxDevice_EvtDeviceDefaultEndpointAdd;
UfxDeviceCallbacks.EvtDeviceUsbStateChange = UfxDevice_EvtDeviceUsbStateChange;
UfxDeviceCallbacks.EvtDevicePortChange = UfxDevice_EvtDevicePortChange;
UfxDeviceCallbacks.EvtDevicePortDetect = UfxDevice_EvtDevicePortDetect;
UfxDeviceCallbacks.EvtDeviceRemoteWakeupSignal = UfxDevice_EvtDeviceRemoteWakeupSignal;
UfxDeviceCallbacks.EvtDeviceTestModeSet = UfxDevice_EvtDeviceTestModeSet;
UfxDeviceCallbacks.EvtDeviceSuperSpeedPowerFeature = UfxDevice_EvtDeviceSuperSpeedPowerFeature;
// Context associated with UFXDEVICE object
WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&Attributes, UFXDEVICE_CONTEXT);
Attributes.EvtCleanupCallback = UfxDevice_EvtCleanupCallback;
// Create the UFXDEVICE object
Status = UfxDeviceCreate(WdfDevice,
&UfxDeviceCallbacks,
&UfxDeviceCapabilities,
&Attributes,
&UfxDevice);
...
}
Exigences
| Exigence | Valeur |
|---|---|
| client minimum pris en charge | Windows 10 |
| plateforme cible | Windows |
| d’en-tête | ufxclient.h |
| bibliothèque | ufxstub.lib |
| IRQL | PASSIVE_LEVEL |