SpbControllerSetIoOtherCallback, fonction (spbcx.h)
La méthode SpbControllerSetIoOtherCallback enregistre la fonction de rappel EvtSpbControllerIoOther d’un pilote de contrôleur SPB.
Syntaxe
void SpbControllerSetIoOtherCallback(
[in] WDFDEVICE FxDevice,
[in] PFN_SPB_CONTROLLER_OTHER EvtSpbControllerIoOther,
[in, optional] PFN_WDF_IO_IN_CALLER_CONTEXT EvtIoInCallerContext
);
Paramètres
[in] FxDevice
Un handle WDFDEVICE pour l’objet d’appareil qui représente le contrôleur SPB.
[in] EvtSpbControllerIoOther
Pointeur vers une fonction de rappel EvtSpbControllerIoOther . Le pilote de contrôleur SPB implémente cette fonction. L’extension d’infrastructure SPB (SpbCx) appelle cette fonction pour passer une demande de contrôle d’E/S au pilote du contrôleur. Pour plus d’informations sur le type de demandes d’E/S passées à cette fonction, consultez la section Remarques suivante.
[in, optional] EvtIoInCallerContext
Pointeur vers une fonction de rappel EvtIoInCallerContext appelée lorsqu’une demande de contrôle d’E/S arrive pour la première fois dans la file d’attente d’E/S du contrôleur et que la demande contient un code IOCTL que l’extension d’infrastructure SPB (SpbCx) ne reconnaît pas. Ce rappel s’exécute dans le contexte de processus de l’initiateur de la demande et peut prétraiter les demandes qui seront traitées ultérieurement par le rappel EvtSpbControllerIoOther . Ce paramètre est facultatif et peut être spécifié comme NULL si aucun prétraitement n’est requis. Pour plus d'informations, consultez la section Notes qui suit.
Valeur de retour
None
Remarques
Cette méthode permet à votre pilote de contrôleur SPB de déclarer sa prise en charge des codes de contrôle d’E/S personnalisés (IOCTL) spécifiques au bus ou au pilote. Si le pilote du contrôleur SPB n’appelle pas cette méthode, SpbCx rejette toutes ces demandes de contrôle d’E/S, et le pilote du contrôleur SPB ne les voit jamais.
SpbCx gère la file d’attente d’E/S pour le contrôleur SPB. Par défaut, si SpbCx reçoit une demande de contrôle d’E/S qui a un IOCTL qu’il ne prend pas en charge, SpbCx termine la demande avec l’erreur status code STATUS_INVALID_DEVICE_REQUEST.
Toutefois, en appelant SpbControllerSetIoOtherCallback, le pilote de contrôleur SPB déclare sa prise en charge des demandes de contrôle d’E/S que l’extension d’infrastructure SPB (SpbCx) ne prend pas en charge. Dans ce cas, lorsque SpbCx reçoit une demande de contrôle d’E/S qui a un code IOCTL qu’il ne prend pas en charge, SpbCx appelle la fonction EvtSpbControllerIoOther pour transmettre la demande au pilote du contrôleur SPB pour traitement. Le pilote du contrôleur SPB est responsable de l’exécution de la demande.
Pour obtenir la liste des IOCTL pris en charge par SpbCx, consultez Codes de contrôle d’E/S S SpbCx.
La fonction de rappel EvtIoInCallerContext facultative s’exécute dans le contexte de processus de l’initiateur de la demande et peut prétraiter les paramètres de requête dépendant du contexte, tels que les pointeurs de mémoire tampon, avant que la requête ne soit passée à la fonction de rappel EvtSpbControllerIoOther . Lorsque la fonction EvtIoInCallerContext est appelée, tout contexte par requête demandé par le pilote du contrôleur SPB lors d’un appel précédent à SpbControllerSetRequestAttributes est déjà alloué et affecté à la demande.
Le pilote du contrôleur SPB doit appeler cette méthode avant de valider l’objet de périphérique, c’est-à-dire avant qu’il ne retourne à partir du rappel EvtDriverDeviceAdd ou qu’il ajoute l’ADO à la liste enfant du contrôleur. La liste enfant représente les appareils qui sont attachés au bus. Pour plus d’informations, consultez Énumération des appareils sur un bus.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Disponible à partir de Windows 8. |
Plateforme cible | Universal |
En-tête | spbcx.h |
Bibliothèque | Spbcxstubs.lib |
IRQL | PASSIVE_LEVEL |
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour