IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION IOCTL (usbioctl.h)
Le IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION demande d’E/S est utilisé par les pilotes pour informer le pilote de bus USB qu’un appareil est inactif et peut être suspendu.
Lors de l’envoi de ce IOCTL, l’appelant doit fournir une routine de rappel qui effectue la suspension réelle de l’appareil. Le pilote de bus USB appelle cette routine à PASSIVE_LEVEL lorsqu’il est sûr que l’appareil soit mis hors tension. Si l’appareil prend en charge la mise en veille à distance et qu’aucun IRP d’attente/veille n’est déjà en attente, la routine de rappel doit envoyer un IRP d’attente/veille au pilote de bus pour l’appareil, avant de le mettre hors tension.
Pour plus d’informations, consultez Appareils de prise en charge qui ont des fonctionnalités de Wake-Up et la suspension sélective USB.
IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION est une demande de contrôle d’E/S en mode noyau. Cette requête cible l’AOP du hub USB. Cette demande doit être envoyée à un IRQL de PASSIVE_LEVEL.
Code principal
IRP_MJ_INTERNAL_DEVICE_CONTROL
Mémoire tampon d'entrée
Parameters.DeviceIoControl.Type3InputBuffer doit être un pointeur vers une structure USB_IDLE_CALLBACK_INFO . Cette structure doit contenir un pointeur vers la routine de rappel et un pointeur vers le contexte de routine de rappel.
La structure contenant les informations de rappel est définie dans usbioctl.h comme suit :
typedef VOID (*USB_IDLE_CALLBACK)(PVOID Context);
typedef struct _USB_IDLE_CALLBACK_INFO
{
USB_IDLE_CALLBACK IdleCallback;
PVOID IdleContext;
} USB_IDLE_CALLBACK_INFO, *PUSB_IDLE_CALLBACK_INFO;
Longueur de la mémoire tampon d’entrée
Taille d’une structure USB_IDLE_CALLBACK_INFO .
Mémoire tampon de sortie
Aucun.
Longueur de la mémoire tampon de sortie
Aucun.
Bloc d’état
Le pilote de bus ou de port définit Irp-IoStatus.Status> sur STATUS_SUCCESS ou le status d’erreur approprié.
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | usbioctl.h (inclure Usbioctl.h) |