SpbControllerSetIoOtherCallback, fonction (spbcx.h)
La méthode SpbControllerSetIoOtherCallback inscrit la fonction de rappel EvtSpbControllerIoOther du 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
Handle WDFDEVICE sur 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 de framework 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 requêtes d’E/S passées à cette fonction, consultez la section Remarques suivante.
[in, optional] EvtIoInCallerContext
Pointeur vers une EvtIoInCallerContext fonction de rappel appelée lorsqu’une demande de contrôle d’E/S arrive d’abord à la file d’attente d’E/S du contrôleur, et la requête contient un code IOCTL que l’extension de framework SPB (SpbCx) ne reconnaît pas. Ce rappel s’exécute dans le contexte de processus de l’originateur de requête et peut prétraiter les requêtes 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 Remarques suivante.
Valeur de retour
Aucun
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 propres 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 le code d’état d’erreur STATUS_INVALID_DEVICE_REQUEST.
Toutefois, en appelant SpbControllerSetIoOtherCallback, le pilote du contrôleur SPB déclare sa prise en charge des demandes de contrôle d’E/S que l’extension de framework 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 requête au pilote du contrôleur SPB pour le traitement. Le pilote du contrôleur SPB est responsable de la fin de la demande.
Pour obtenir la liste des IOCTL pris en charge par SpbCx, consultez codes de contrôle d’E/SpbCx.
Le facultatif EvtIoInCallerContext fonction de rappel s’exécute dans le contexte de processus de l’originateur de requête 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 fonction de rappel. Lorsque la fonction EvtIoInCallerContext est appelée, tout contexte par requête demandé par le pilote du contrôleur SPB dans un appel précédent à SpbControllerSetRequestAttributes sera déjà alloué et affecté à la requête.
Le pilote du contrôleur SPB doit appeler cette méthode avant qu’elle n'valide l’objet d’appareil, autrement dit, avant de retourner à partir de la EvtDriverDeviceAdd rappel ou ajoute l’objet PDO à la liste enfant du contrôleur. La liste enfant représente les appareils attachés au bus. Pour plus d’informations, consultez énumération des appareils sur un bus.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Disponible à partir de Windows 8. |
plateforme cible | Universel |
d’en-tête | spbcx.h |
bibliothèque | Spbcxstubs.lib |
IRQL | PASSIVE_LEVEL |