Condividi tramite


Funzione WdfDeviceInitSetIoTypeEx (wdfdevice.h)

[Si applica a KMDF e UMDF]

Il metodo WdfDeviceInitSetIoTypeEx imposta il metodo o la preferenza per il modo in cui un driver accederà ai buffer di dati inclusi nelle richieste di lettura e scrittura, nonché nelle richieste di controllo di I/O del dispositivo, per un dispositivo specificato.

Sintassi

void WdfDeviceInitSetIoTypeEx(
  [in] PWDFDEVICE_INIT     DeviceInit,
  [in] PWDF_IO_TYPE_CONFIG IoTypeConfig
);

Parametri

[in] DeviceInit

Puntatore a una struttura WDFDEVICE_INIT .

[in] IoTypeConfig

Puntatore alla struttura WDF_IO_TYPE_CONFIG inizializzata utilizzando WDF_IO_TYPE_CONFIG_INIT macro.

Valore restituito

nessuno

Osservazioni

Se si scrive un driver usando KMDF versione 1.11 o precedente, è invece necessario usare WdfDeviceInitSetIoType.

KMDF Un driver KMDF chiama WdfDeviceInitSetIoTypeEx per impostare un metodo di accesso al buffer per le richieste di lettura e scrittura. Per le richieste di controllo di I/O del dispositivo, il framework usa il tipo di buffer codificato nel codice di controllo I/O (IOCTL).

UMDF Un driver UMDF chiama WdfDeviceInitSetIoTypeEx per registrare le preferenze per le richieste di lettura e scrittura, nonché per le richieste di controllo di I/O del dispositivo. I valori forniti da un driver UMDF a WdfDeviceInitSetIoTypeEx sono solo preferenze e non sono garantiti che vengano usati dal framework. Il driver può chiamare WdfDeviceGetDeviceStackIoType per determinare i metodi di accesso al buffer assegnati da UMDF alle richieste di lettura/scrittura di un dispositivo e alle richieste di controllo di I/O. Per le richieste di controllo di I/O, il metodo di accesso usato dal framework potrebbe differire dal metodo di accesso specificato in IOCTL e dal metodo di accesso richiesto dal driver.

Se un driver chiama WdfDeviceInitSetIoTypeEx, deve farlo prima di chiamare WdfDeviceCreate.

Se il driver non chiama WdfDeviceInitSetIoTypeEx, il framework imposta il metodo di accesso al buffer del driver su WdfDeviceIoBuffered per il dispositivo specificato.

La chiamata a WdfDeviceInitSetIoTypeEx da un driver di filtro KMDF non ha alcun effetto. Per i driver di filtro KMDF, il framework usa il tipo di I/O specificato dal driver inferiore successivo nello stack di driver.

Un driver di filtro UMDF può tuttavia registrare le preferenze per il metodo di accesso al buffer chiamando WdfDeviceInitSetIoTypeEx.

Tutti i driver UMDF in uno stack di driver devono usare lo stesso metodo per accedere ai buffer di un dispositivo. Se UMDF determina che alcuni driver preferiscono l'I/O memorizzato nel buffer o l'I/O diretto per un dispositivo, mentre altri driver preferiscono solo l'I/O memorizzato nel buffer per il dispositivo, UMDF usa L/O memorizzato nel buffer per tutti i driver. Se uno o più driver di uno stack preferiscono solo l'I/O memorizzato nel buffer mentre altri preferiscono solo L/O diretto, UMDF registra un evento nel registro eventi di sistema e non avvia lo stack di driver.

Per altre informazioni sui metodi di accesso al buffer, vedere Accesso ai buffer dei dati.

Questo metodo è l'equivalente UMDF 2.0 di IWDFDeviceInitialize2::SetIoTypePreference.

Esempio

L'esempio di codice seguente inizializza una struttura WDF_IO_TYPE_CONFIG , imposta le preferenze di accesso al buffer del driver su I/O diretto, specifica che i trasferimenti inferiori a 32 KB devono usare le operazioni di I/O memorizzate nel buffer e chiama WdfDeviceInitSetIoTypeEx.

WDF_IO_TYPE_CONFIG ioConfig;
WDF_IO_TYPE_CONFIG_INIT(&ioConfig);
ioConfig.ReadWriteIoType = WdfDeviceIoDirect;
ioConfig.DeviceControlIoType = WdfDeviceIoDirect;
ioConfig.DirectTransferThreshold = 32;

WdfDeviceInitSetIoTypeEx(DeviceInit, &ioConfig);
}

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Versione KMDF minima 1.13
Versione UMDF minima 2,0
Intestazione wdfdevice.h (include Wdf.h)
Libreria Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <= DISPATCH_LEVEL

Vedi anche

IWDFDeviceInitialize2::SetIoTypePreference

WDF_IO_TYPE_CONFIG

WDF_IO_TYPE_CONFIG_INIT

WdfDeviceGetDeviceStackIoType

WdfDeviceInitSetIoType