DispatchDeviceControl ve DispatchInternalDeviceControl Rutinleri

Bir sürücünün dağıtım yordamları (bkz. DRIVER_DISPATCH) sırasıyla IRP_MJ_DEVICE_CONTROL ve IRP_MJ_INTERNAL_DEVICE_CONTROL G/Ç işlev kodlarıyla IRP'leri işler.

Sistem, her yaygın çevre birimi için IRP_MJ_DEVICE_CONTROL istekleri için bir G/Ç kontrol kodları kümesi tanımlar. Her cihaz türü için yeni sürücülerin bu istekleri desteklemesi gerekir. Çoğu durumda, her cihaz türü için bu genel G/Ç denetim kodları kullanıcı modu uygulamalarına dışarı aktarılmaz.

Bazı sistem tanımlı G/Ç denetim kodları, IoBuildDeviceIoControlRequest çağrısı yaparak temel alınan cihaz sürücüsü için IRP'ler oluşturan üst düzey sürücüler tarafından kullanılır. Diğerleri, Win32 bileşenleri tarafından, temel alınan bir cihaz sürücüsüyle iletişim sağlamak amacıyla kullanılan ve bir sistem hizmetini çağıran Win32 işlevi DeviceIoControl (Microsoft Windows SDK belgelerinde açıklanmıştır) çağrılır. G/Ç yöneticisi bir IRP ayarlar ve ana işlev kodunu IRP_MJ_DEVICE_CONTROL ve verilen G/Ç denetim kodunu Parameters.DeviceIoControl.IoControlCodekonumundaki IO_STACK_LOCATION yapısında depolar. Ardından G/Ç yöneticisi zincirdeki en üst düzey sürücünün DispatchDeviceControl yordamını çalıştırır.

İşletim sistemi, yeni sürücülerle birlikte çalışacak ve bu sürücüleri destekleyecek şekilde tasarlanmış belirli sistem tarafından sağlanan sürücüler için IRP_MJ_INTERNAL_DEVICE_CONTROL istekleri için bir G/Ç denetim kodları kümesi de tanımlar. Çoğu durumda, bu genel G/Ç kontrol kodları, üst düzey ek sürücülerin temel alınan bir cihaz sürücüsüyle birlikte çalışmasına olanak tanır.

Örneğin, sistem tarafından sağlanan paralel sürücüler, satıcı tarafından sağlanan sürücülerin IRP_MJ_INTERNAL_DEVICE_CONTROL istekleriyle gönderdiği bir dizi iç G/Ç denetim kodlarını destekler. Daha fazla bilgi için bkz. Paralel Cihaz Sürücüsü Tasarım Kılavuzu.

Sistem tanımlı G/Ç denetim kodları aracılığıyla istenen neredeyse tüm işlemler arabelleğe alınan G/Ç kullanır, çünkü bu tür istekler çok fazla miktarda veri aktarımı gerektirmez. Başka bir ifadeyle, cihaz nesnelerini doğrudan G/Ç için ayarlamış olan sürücüler bile, >'daki arabelleğe veya bu arabellekten veri aktarılarak cihaz denetimi istekleri için IRP'ler gönderilir (yakın bağlantılı Win32 multimedya sürücülerine sahip en üst düzey cihaz sürücülerinin belirli türleri dışında).

Ayrıca, bir sürücü diğer sürücülerin iletişim kurmak için kullanabileceği bir dizi özel G/Ç denetim kodu tanımlayabilir. Genel G/Ç denetim kodları işletim sisteminin kendisinde yerleşik olduğundan, sisteme yalnızca Microsoft Corporation işbirliğiyle yeni genel G/Ç denetim kodları eklenebilir.

Farklı sürücü türlerinin desteklemesi gereken genel G/Ç denetim kodları kümesi ve özel G/Ç denetim kodları tanımlama hakkında özel bilgi için Windows Sürücü Seti'nin (WDK) cihaza özgü başvuru bölümlerine bakın.