IRP_MJ_DEVICE_CONTROL

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

Übergeordnete Treiber leiten diese Anforderungen in der Regel an einen zugrunde liegenden Gerätetreiber weiter. Es wird davon ausgegangen, dass jeder Gerätetreiber in einem Treiberstapel diese Anforderung unterstützt, zusammen mit einer Reihe von gerätetypspezifischen, öffentlichen oder privaten IOCTLs. Weitere Informationen zu IOCTLs für bestimmte Gerätetypen finden Sie in der gerätetypspezifischen Dokumentation im Microsoft Windows Driver Kit (WDK).

Sendebedingungen

Jederzeit nach dem erfolgreichen Abschluss einer Erstellungsanforderung.

Eingabeparameter

Der E/A-Steuerungscode ist unter Parameters.DeviceIoControl.IoControlCode in der E/A-Stapelposition des Treibers des IRP enthalten.

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, weil der Benutzermodusthread die Microsoft Win32 DeviceIoControl-Funktion aufgerufen hat, oder weil ein Kernelmodustreiber auf höherer Ebene die Anforderung eingerichtet hat. Möglicherweise hat ein Benutzermodustreiber DeviceIoControl aufgerufen und einen vom Treiber definierten (auch privaten) E/A-Steuerungscode übergeben, um geräte- oder treiberspezifische Unterstützung von einem eng gekoppelten Kernelmodus-Gerätetreiber anzufordern.

Beim Empfang einer Geräte-E/A-Steuerungsanforderung leitet ein Treiber auf höherer Ebene die IRP in der Regel an den nächstniedrigen Treiber weiter. Es gibt jedoch einige Ausnahmen von dieser Praxis. Beispielsweise kann ein Klassentreiber, der Konfigurationsinformationen gespeichert hat, die vom zugrunde liegenden Porttreiber abgerufen wurden, bestimmte IOCTL_XXX-Anforderungen abschließen, ohne den IRP an den entsprechenden Porttreiber zu übergeben.

Beim Empfang einer Geräte-E/A-Steuerungsanforderung untersucht ein Gerätetreiber den E/A-Steuerungscode, um zu bestimmen, wie die Anforderung erfüllt werden soll. Bei den meisten öffentlichen E/A-Steuerungscodes übertragen Gerätetreiber eine kleine Datenmenge an oder aus dem Puffer bei 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)

Weitere Informationen

DispatchDeviceControl