Funzione SpbControllerSetIoOtherCallback (spbcx.h)
Il metodo SpbControllerSetIoOtherCallback registra la funzione di callback evtSpbControllerIother del driver del controller SPB.
Sintassi
void SpbControllerSetIoOtherCallback(
[in] WDFDEVICE FxDevice,
[in] PFN_SPB_CONTROLLER_OTHER EvtSpbControllerIoOther,
[in, optional] PFN_WDF_IO_IN_CALLER_CONTEXT EvtIoInCallerContext
);
Parametri
[in] FxDevice
Handle WDFDEVICE per l'oggetto dispositivo che rappresenta il controller SPB.
[in] EvtSpbControllerIoOther
Puntatore a una funzione di callback EvtSpbControllerIother . Il driver del controller SPB implementa questa funzione. L'estensione spb framework (SpbCx) chiama questa funzione per passare una richiesta di controllo I/O al driver del controller. Per altre informazioni sul tipo di richieste di I/O passate a questa funzione, vedere la sezione Osservazioni seguente.
[in, optional] EvtIoInCallerContext
Puntatore a una funzione di callback EvtIoInCallerContext chiamata quando una richiesta di controllo di I/O arriva per la prima volta alla coda di I/O del controller e la richiesta contiene un codice IOCTL che l'estensione del framework SPB (SpbCx) non riconosce. Questo callback viene eseguito nel contesto del processo dell'originatore della richiesta e può pre-elaborare le richieste che verranno elaborate successivamente dal callback EvtSpbControllerIoOther . Questo parametro è facoltativo e può essere specificato come NULL se non è necessaria alcuna pre-elaborazione. Per ulteriori informazioni, vedere la sezione Osservazioni successiva.
Valore restituito
nessuno
Osservazioni
Questo metodo consente al driver del controller SPB di dichiarare il supporto per i codici di controllo I/O personalizzati (IOCTL) specifici del bus o del driver. Se il driver del controller SPB non chiama questo metodo, SpbCx rifiuta tutte queste richieste di controllo di I/O e il driver del controller SPB non li vede mai.
SpbCx gestisce la coda di I/O per il controller SPB. Per impostazione predefinita, se SpbCx riceve una richiesta di controllo I/O con un IOCTL che non supporta, SpbCx completa la richiesta con codice di stato di errore STATUS_INVALID_DEVICE_REQUEST.
Tuttavia, chiamando SpbControllerSetIoOtherCallback, il driver del controller SPB dichiara il supporto per le richieste di controllo I/O che l'estensione spb framework (SpbCx) non supporta. In questo caso, quando SpbCx riceve una richiesta di controllo I/O con codice IOCTL che non supporta, SpbCx chiama la funzione EvtSpbControllerIoOther per passare la richiesta al driver del controller SPB per l'elaborazione. Il driver del controller SPB è responsabile del completamento della richiesta.
Per un elenco dei valori IOCTLs supportati da SpbCx, vedere Codici di controllo I/O spbCx.
La funzione di callback EvtIoInCallerContext facoltativa viene eseguita nel contesto del processo dell'originatore della richiesta e può pre-elaborare parametri di richiesta dipendenti dal contesto, ad esempio puntatori al buffer, prima che la richiesta venga passata alla funzione di callback EvtSpbControllerIother . Quando viene chiamata la funzione EvtIoInCallerContext , qualsiasi contesto di richiesta richiesto dal driver del controller SPB in una chiamata precedente a SpbControllerSetRequestAttributes sarà già allocato e assegnato alla richiesta.
Il driver del controller SPB deve chiamare questo metodo prima di eseguire il commit dell'oggetto dispositivo, ovvero prima che venga restituito dal callback EvtDriverDeviceAdd o aggiunto il PDO all'elenco figlio del controller. L'elenco figlio rappresenta i dispositivi collegati al bus. Per altre informazioni, vedere Enumerazione dei dispositivi in un bus.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Disponibile a partire da Windows 8. |
Piattaforma di destinazione | Universale |
Intestazione | spbcx.h |
Libreria | Spbcxstubs.lib |
IRQL | PASSIVE_LEVEL |