Aracılığıyla paylaş


Cihaz Arabirimi Örneğini Etkinleştirme ve Devre Dışı Bırakma

Cihazı başarıyla başlattıktan sonra arabirimi kaydeden sürücü, arabirim örneğini etkinleştirmek için ioSetDeviceInterfaceStateçağırır. Sürücü, arabirim örneğini etkinleştirmek için IoRegisterDeviceInterface tarafından döndürülen sembolik bağlantı adını, TRUE mantıksal değeriyle birlikte geçirir.

Sürücü, cihazını başarıyla başlatabiliyorsa Tak Çalıştır (PnP) yöneticisinin IRP_MN_START_DEVICE isteğini işlerken bu yordamı çağırmalıdır.

IRP_MN_START_DEVICE isteği tamamlandıktan sonra PnP yöneticisi, bunları isteyen çekirdek modu veya kullanıcı modu bileşenlerine cihaz arabirimi varış bildirimleri yayımlar. Daha fazla bilgi için bkz. Cihaz Arabirimi Değişiklik Bildirimine Kaydolma.

Bir cihaz arabirimi örneğini devre dışı bırakmak için, bir sürücü IoSetDeviceInterfaceStateçağırır, IoRegisterDeviceInterface tarafından döndürülen SymbolicLinkName ve FALSE değerini Enableolarak iletir.

Sürücü, cihaz için bir IRP_MN_SURPRISE_REMOVAL veya IRP_MN_REMOVE_DEVICE isteği işlediğinde cihazın arabirimlerini devre dışı bırakmalıdır. Bir sürücü bu kaldırma IRP'lerini işlediğinde cihazın arabirimlerini devre dışı bırakmazsa, bunu daha sonra denememelidir çünkü PnP yöneticisi cihazı kaldırdığında arabirimleri devre dışı bırakacaktır.

Bir sürücü, cihaz durdurulduğunda arabirimleri devre dışı bırakmamalıdır (IRP_MN_STOP_DEVICE); bunun yerine, başka bir IRP_MN_START_DEVICE isteği alıncaya kadar tüm cihaz arabirimlerini etkin bırakmalı ve G/Ç isteklerini kuyruğa almalıdır. Benzer şekilde, cihaz uyku durumuna geçirildiğinde bir sürücü arabirimlerini devre dışı bırakmamalıdır. Cihaz uyanana kadar G/Ç isteklerini kuyruğa almalıdır. Daha fazla bilgi için bkz. Wake-Up Özellikleri olan Destekleyici Cihazlar.