IRP_MJ_DEVICE_CONTROL

Jeder Treiber, dessen Geräteobjekte zu einem bestimmten Gerätetyp gehören (siehe Angeben von Gerätetypen), ist erforderlich, um diese Anforderung in einer DispatchDeviceControl-Routine zu unterstützen, wenn ein Satz von systemdefinierte E/A-Steuerungscodes (IOCTLs) für den Typ vorhanden ist. Weitere Informationen zu IOCTLs finden Sie unter Einführung in E/A-Steuerungscodes.

Treiber auf höherer Ebene übergeben diese Anforderungen in der Regel an einen zugrunde liegenden Gerätetreiber. Es wird davon ausgegangen, dass jeder Gerätetreiber in einem Treiberstapel diese Anforderung sowie eine Reihe von gerätetypspezifischen, öffentlichen oder privaten IOCTLs unterstützt. Weitere Informationen zu IOCTLs für bestimmte Gerätetypen finden Sie in der gerätetypspezifischen Dokumentation im Microsoft Windows Driver Kit (WDK).

Sendebedingungen

Jedes Mal, wenn eine Erstellungsanforderung erfolgreich abgeschlossen wurde.

Eingabeparameter

Der Code des E/A-Steuerelements befindet sich unter Parameters.DeviceIoControl.IoControlCode am E/A-Stapelspeicherort des Treibers des IRP.

Andere Eingabeparameter hängen vom Wert des E/A-Steuerelementcodes ab. Weitere Informationen finden Sie unter Pufferbeschreibungen für E/A-Steuerungscodes.

Ausgabeparameter

Ausgabeparameter hängen vom Wert des E/A-Steuerelementcodes ab. Weitere Informationen finden Sie unter Pufferbeschreibungen für E/A-Steuerungscodes.

Vorgang

Ein Treiber empfängt diesen E/A-Steuerungscode, da der Benutzermodusthread die Microsoft Win32 DeviceIoControl-Funktion aufgerufen hat oder die Anforderung von einem Kernelmodustreiber auf höherer Ebene eingerichtet wurde. Möglicherweise hat ein Benutzermodustreiber DeviceIoControl genannt und einen treiberdefiniert (auch als privates bezeichneten) E/A-Steuerungscode übergeben, um geräte- oder treiberspezifische Unterstützung von einem eng gekoppelten Gerätetreiber im Kernelmodus anzufordern.

Bei Empfang einer E/A-Steuerungsanforderung eines Geräts übergibt ein Höherstufentreiber in der Regel das IRP an den nächstunteren Treiber. Es gibt jedoch einige Ausnahmen für diese Vorgehensweise. Beispielsweise kann ein Klassentreiber mit gespeicherten Konfigurationsinformationen, die vom zugrunde liegenden Porttreiber abgerufen wurden, bestimmte IOCTL_XXX-Anforderungen abschließen, ohne das IRP an den entsprechenden Porttreiber zu übergeben.

Beim Empfang einer E/A-Steuerungsanforderung überprüft ein Gerätetreiber den E/A-Steuerungscode, um zu bestimmen, wie die Anforderung erfüllt werden soll. Für die meisten öffentlichen E/A-Steuerungscodes übertragen Gerätetreiber eine kleine Datenmenge an den Puffer unter Irp-AssociatedIrp.SystemBuffer>.

Allgemeine Informationen zu E/A-Steuerungscodes für IRP_MJ_DEVICE_CONTROL - oder IRP_MJ_INTERNAL_DEVICE_CONTROL-Anforderungen finden Sie unter Verwenden von E/A-Steuerungscodes. Siehe auch Geräte-Type-Specific E/A-Anforderungen.

Anforderungen

Header

Wdm.h (einschließlich Wdm.h, Ntddk.h oder Ntifs.h)

Siehe auch

DispatchDeviceControl