Aracılığıyla paylaş


Cihaz Olay Türleri

WM_DEVICECHANGE iletisini işlerken cihaz olay türünü belirlemek için wParam parametresini inceleyin. wParam değeri, lParam parametresindeki olaya özgü verilerin anlamını belirler. Genel olarak, olaya özgü veriler cihazı tanımlar ve olay hakkında ek ayrıntılar sağlar. Bu verilerin biçimi cihaz türüne bağlıdır, ancak ilk birkaç bayt her zaman DEV_BROADCAST_HDR yapısıyla aynı biçime sahiptir. Verilerin biçimini belirlemek için dbch_devicetype üyesini denetleyin.

Sistem, bir cihaz eklendiğinde ve kullanılabilir olduğunda DBT_DEVICEARRIVAL (wParam DBT_DEVICEARRIVAL olarak ayarlanmış bir WM_DEVICECHANGE iletisi) türünde bir cihaz olayı yayınlar. Uygulamalar genellikle cihaz türünü denetler ve uygunsa cihazı hemen kullanmaya başlar.

Sistem, bir cihazı kaldırma izni istemek için bir DBT_DEVICEQUERYREMOVE cihaz olayı yayınlar. Cihaza gerek olup olmadığını belirlemek için, bir uygulama kullanıcıdan yönergeler isteyen bir iletişim kutusu görüntüleyebilir. Bir uygulama cihaza ihtiyacı olduğunu belirlerse bu isteği reddedebilir ve BROADCAST_QUERY_DENY döndürerek kaldırma işlemini iptal edebilir. Uygulamanın cihaza ihtiyacı yoksa true döndürmelidir. Herhangi bir uygulama veya sürücü önceki bir cihazı kaldırma isteğini iptal ederse sistem hemen bir DBT_DEVICEQUERYREMOVEFAILED iletisi gönderir.

Sistem, bir cihaz kaldırılmadan önce bir DBT_DEVICEREMOVEPENDING cihaz olayını son uyarı olarak yayınlar. Bu noktada uygulama kaldırma işlemini iptal edemez, bu nedenle cihazı kullanıyorsa veri kaybını önlemek için kaldırmaya hazırlanması gerekir. Bu, özellikle bir ağ bağlantısı kaldırıldığında önemlidir. Uygulama, açık dosya veya kanalların bu bağlantıda olup olmadığını belirlemelidir. İletinin olaya özgü verilerindeki ağ kaynak tanımlayıcısını dosyalar ve kanallar için daha önce elde edilen kaynak tanımlayıcılarıyla karşılaştırarak bunu yapabilir. Sistem, bir cihaz kaldırıldığında ve artık kullanılamadığında bir DBT_DEVICEREMOVECOMPLETE cihaz olayı yayınlar.

Sistem, geçerli yapılandırmayı değiştirme izni istemek için bir DBT_QUERYCHANGECONFIG cihaz olayı yayınlar (takma birimi veya çıkarma). Herhangi bir uygulama, isteği reddetmek ve değişikliği iptal etmek için BROADCAST_QUERY_DENY döndürebilir. Bir uygulama isteği reddederse sistem bir DBT_CONFIGCHANGECANCELED iletisi gönderir. Geçerli yapılandırma bir takma birimi veya çıkarma nedeniyle değiştiyse sistem DBT_CONFIGCHANGED iletisi gönderir.

Cihaza özgü bir olay gerçekleştiğinde sistem bir DBT_DEVICETYPESPECIFIC cihaz olayı yayınlar.

Sürücüler kendi özel olay türlerini oluşturabilir. Özel olaylar yalnızca belirli bir cihazda cihaz-olay bildirimi için kayıtlı olan uygulamaya gönderilir ve yalnızca çekirdek modu sürücüleri tarafından başlatılabilir. Daha fazla bilgi için bkz. DBT_CUSTOMEVENT.