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

Vedi anche

EvtIoInCallerContext

EvtSpbControllerIoOther

SpbControllerSetRequestAttributes