Aracılığıyla paylaş


Cihaz düğümleri ve cihaz yığınları

Windows'da cihazlar Tak Çalıştır (PnP) cihaz ağacındaki cihaz düğümleri tarafından temsil edilir. Genellikle, bir cihaza G/Ç isteği gönderildiğinde, çeşitli sürücüler isteğin işlenmesine yardımcı olur. Bu sürücülerin her biri bir cihaz nesnesiyle ilişkilendirilir ve cihaz nesneleri bir yığın halinde düzenlenir. Cihaz nesnelerinin ve ilişkili sürücülerinin sırasına cihaz yığını denir. Her cihaz düğümü kendi cihaz yığınına sahiptir.

Cihaz düğümleri ve Tak Çalıştır cihaz ağacı

Windows, cihazları Tak Çalıştır cihaz ağacıveya yalnızca cihaz ağacıadlı bir ağaç yapısında düzenler. Genellikle, cihaz ağacındaki bir düğüm, bileşik cihazdaki bir cihazı veya tek bir işlevi temsil eder. Ancak, bazı düğümler fiziksel cihazlarla ilişkisi olmayan yazılım bileşenlerini temsil eder.

Cihaz ağacındaki bir düğüm, cihaz düğümü olarak adlandırılır. Cihaz ağacının kök düğümü, kök cihaz düğümü olarak adlandırılır. Kural gereği, kök cihaz düğümü aşağıdaki diyagramda gösterildiği gibi cihaz ağacının alt kısmına çizilir.

cihaz ağacının, cihaz düğümlerini gösteren diyagramı.

Cihaz ağacı, PnP ortamındaki üst/alt ilişkileri gösterir. Cihaz ağacındaki düğümlerin birkaçı, kendilerine bağlı alt cihazları olan otobüsleri temsil eder. Örneğin, PCI Veri Yolu düğümü ana karttaki fiziksel PCI veri yolunu temsil eder. Başlatma sırasında PnP yöneticisi, PCI veri yolu sürücüsünden PCI veri yolu'na bağlı cihazları listelemesini ister. Bu cihazlar PCI Bus düğümünün alt düğümleriyle temsil edilir. Yukarıdaki diyagramda, PCI Veri Yolu düğümüNDE USB ana bilgisayar denetleyicileri, ses denetleyicisi ve PCI Express bağlantı noktası gibi PCI veri yolu ile bağlantılı çeşitli cihazlar için alt düğümler bulunur.

PCI veri yolu ile bağlantılı cihazlardan bazıları otobüslerdir. PnP yöneticisi, bu otobüslerin her birinin ona bağlı cihazları listelemesini ister. Önceki diyagramda, ses denetleyicisinin, ona bağlı bir ses cihazı olan bir veri yolu olduğunu görebiliriz. PCI Express bağlantı noktasının, bağlı bir görüntü bağdaştırıcısı olan bir veri yolu olduğunu ve görüntü bağdaştırıcısının bağlı bir monitörü olan bir veri yolu olduğunu görebiliriz.

Bir düğümü bir cihazı mı yoksa bir veri yolunu mu temsil ediyor olarak düşündüğünüz bakış açınıza bağlıdır. Örneğin, görüntü bağdaştırıcısını ekranda görünen çerçevelerin hazırlanmasında önemli bir rol oynayan bir cihaz olarak düşünebilirsiniz. Ancak, görüntü bağdaştırıcısını bağlı monitörleri algılayabilen ve numaralandırabilen bir veri yolu olarak da düşünebilirsiniz.

Cihaz nesneleri ve cihaz yığınları

cihaz nesnesi, DEVICE_OBJECT yapısının bir örneğidir. PnP cihaz ağacındaki her cihaz düğümünde sıralı bir cihaz nesneleri listesi bulunur ve bu cihaz nesnelerinin her biri bir sürücüyle ilişkilendirilir. Cihaz nesnelerinin sıralı listesi ve ilişkili sürücüleri, cihaz düğümü için cihaz yığını olarak adlandırılır.

Bir cihaz yığınını çeşitli yollarla düşünebilirsiniz. En resmi anlamda, cihaz yığını sıralı bir (cihaz nesnesi, sürücü) çiftleri listesidir. Ancak, belirli bağlamlarda cihaz yığınını sıralı bir cihaz nesneleri listesi olarak düşünmek yararlı olabilir. Diğer bağlamlarda, cihaz yığınını sıralı bir sürücü listesi olarak düşünmek yararlı olabilir.

Kural gereği, cihaz yığınının bir üstü ve altı vardır. Cihaz yığınında oluşturulacak ilk cihaz nesnesi en alttadır ve cihaz yığınına oluşturulup eklenecek son cihaz nesnesi en üsttedir.

Aşağıdaki diyagramda Proseware Gizmo cihaz düğümü üç (cihaz nesnesi, sürücü) çifti içeren bir cihaz yığınına sahiptir. Üst cihaz nesnesi AfterThought.syssürücüyle ilişkilendirilir, ortadaki cihaz nesnesi sürücü Proseware.sysile ilişkilendirilir ve alt cihaz nesnesi Pci.syssürücüyle ilişkilendirilir. Diyagramın ortasındaki PCI Veri Yolu düğümünde iki (cihaz nesnesi, sürücü) çifti (Pci.sys ile ilişkilendirilmiş bir cihaz nesnesi ve Acpi.sysile ilişkilendirilmiş bir cihaz nesnesi) içeren bir cihaz yığını vardır.

proseware gizmo ve pci cihaz düğümlerindeki cihaz yığınlarında sıralanmış cihaz nesnelerini gösteren diyagram.

Cihaz yığını nasıl inşa edilir?

Başlatma sırasında, PnP Yöneticisi sürücüden her veriyolu için veriyolu ile bağlantılı alt cihazları tanımlayıp listelemesini ister. Örneğin, PnP yöneticisi PCI veri yolu sürücüsünden (Pci.sys) PCI veri yolu'na bağlı cihazları listelemesini ister. bu isteğe yanıt olarak Pci.sys PCI veri yolu'na bağlı her cihaz için bir cihaz nesnesi oluşturur. Bu cihaz nesnelerinin her biri, fiziksel cihaz nesnesi (PDO) olarak adlandırılır. Pci.sys PPO kümesini oluşturduğundan kısa bir süre sonra, cihaz ağacı aşağıdaki diyagramda gösterilen gibi görünür.

Alt cihazlar için PCI düğümünün ve fiziksel cihaz nesnelerinin diyagramı .

PnP yöneticisi, yeni oluşturulan her PDO ile bir cihaz düğümünü ilişkilendirir ve düğüm için cihaz yığınının parçası olması gereken sürücüleri belirlemek için kayıt defterine bakar. Cihaz yığınının "bir (ve yalnızca bir)" "işlev sürücüsü" olmalıdır ve isteğe bağlı olarak "bir veya daha fazla" "filtre sürücüsü"ne sahip olabilir. İşlev sürücüsü, cihaz yığınının ana sürücüsüdür ve okuma, yazma ve cihaz denetimi isteklerini işlemekle sorumludur. Filtre sürücüleri okuma, yazma ve cihaz denetimi isteklerini işlemede yardımcı roller oynar. Her işlev ve filtre sürücüsü yüklendikçe bir cihaz nesnesi oluşturur ve kendisini cihaz yığınına ekler. İşlev sürücüsü tarafından oluşturulan bir cihaz nesnesine işlevsel cihaz nesnesi (FDO) ve filtre sürücüsü tarafından oluşturulan bir cihaz nesnesine filtre cihaz nesnesi (Filtre DO) adı verilir. Şimdi cihaz ağacı bu diyagrama benzer.

Proseware gizmo cihaz düğümünün filtre, işlev ve fiziksel cihaz nesnelerini gösteren bir cihaz ağacı diyagramı ..

Diyagramda, bir düğümde filtre sürücüsünün işlev sürücüsünün üzerinde olduğuna, diğer düğümde ise filtre sürücüsünün işlev sürücüsünün altında olduğuna dikkat edin. Bir cihaz yığınındaki işlev sürücüsünün üzerinde olan bir filtre sürücüsü, üst filtre sürücüsü olarak adlandırılır. İşlev sürücüsünün altındaki filtre sürücüsüne alt filtre sürücüsü adı verilir.

PDO her zaman bir cihaz yığınındaki en alt cihaz nesnesidir. Bu, bir cihaz yığını oluşturma yönteminden kaynaklanır. İlk olarak PDO oluşturulur ve yığına ek cihaz nesneleri eklendikçe, bunlar mevcut yığının en üstüne eklenir.

Not Bir cihazın sürücüleri yüklendiğinde yükleyici, işlev sürücüsünün hangi sürücü olduğunu ve hangi sürücülerin filtre olduğunu belirlemek için bilgi (INF) dosyasındaki bilgileri kullanır. INF dosyası genellikle Microsoft veya donanım satıcısı tarafından sağlanır. Bir cihazın sürücüleri yüklendikten sonra, PnP yöneticisi kayıt defterine bakarak cihaz için işlev ve filtre sürücülerini belirleyebilir.

Otobüs sürücüleri

Önceki diyagramda, sürücü Pci.sys iki rol oynadığını görebilirsiniz. İlk olarak, Pci.sys PCI Bus cihaz düğümündeki FDO ile ilişkilendirilir. Aslında, PCI Bus cihaz düğümünde FDO'yu oluşturdu. Bu nedenle Pci.sys PCI veri yolunun işlev sürücüsüdür. İkincisi, Pci.sys PCI Bus düğümünün her alt öğesindeki PDO ile ilişkilendirilir. Alt cihazlar için PPO'ları oluşturduğunu hatırlayın. Bir cihaz düğümü için PDO oluşturan sürücü, düğüm için veri yolu sürücüsü olarak adlandırılır.

Başvuru noktanız PCI veri yolu ise, Pci.sys işlev sürücüsüdür. Ancak referans noktanız Proseware Gizmo cihazıysa, Pci.sys otobüs sürücüsüdür. Bu çift rol PnP cihaz ağacında tipiktir. Bir otobüs için işlev sürücüsü olarak hizmet veren bir sürücü, aynı zamanda otobüsün alt cihazı için de otobüs sürücüsü olarak görev alır.

Kullanıcı modu cihaz yığınları

Şimdiye kadar çekirdek modu cihaz yığınlarını ele aldık. Başka bir ifadeyle, yığınlardaki sürücüler çekirdek modunda çalışır ve cihaz nesneleri sistem alanına eşlenir ve bu, yalnızca çekirdek modunda çalışan kodlar için kullanılabilen adres alanıdır. Çekirdek modu ile kullanıcı modu arasındaki fark hakkında bilgi için bkz. Kullanıcı modu ve çekirdek modu.

Bazı durumlarda, bir cihazın çekirdek modu cihaz yığınına ek olarak kullanıcı modu cihaz yığını vardır. Kullanıcı modu sürücüleri genellikle Windows Sürücü Çerçeveleri (WDF)tarafından sağlanan sürücü modellerinden biri olan User-Mode Driver Framework'e (UMDF) dayanır. UMDF'de sürücüler kullanıcı modu DLL'leri, cihaz nesneleri ise IWDFDevice arabirimini uygulayan COM nesneleridir. UMDF cihaz yığınındaki bir cihaz nesnesi, WDF cihaz nesnesi (WDF DO) olarak adlandırılır.

Aşağıdaki diyagramda bir USB-FX-2 cihazının cihaz düğümü, çekirdek modu cihaz yığını ve kullanıcı modu cihaz yığını gösterilmektedir. Hem kullanıcı modu hem de çekirdek modu yığınlarındaki sürücüler, USB-FX-2 cihazına yönlendirilen G/Ç isteklerine katılır.

Kullanıcı modu ve çekirdek modu cihaz yığınlarını gösteren diyagram.

Tüm sürücü geliştiricileri için kavramlar

Sürücü yığınları