Partager via


IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION IOCTL (usbioctl.h)

La demande d’E/S IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION est utilisée 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 quand il est sûr que l’appareil soit mis hors tension. Si l’appareil prend en charge le réveil distant et n’a pas d’IRP d’attente/veille 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 Prise en charge des appareils dotés de fonctionnalités Wake-Up et 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 le PDO 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 l’état d’erreur approprié.

Exigences

Exigence Valeur
d’en-tête usbioctl.h (include Usbioctl.h)