AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Wann wird DBT_DEVNODES_CHANGED gesendet?
Thema durchsuchen
Ansicht
Themen-Optionen

Wann wird DBT_DEVNODES_CHANGED gesendet?

Offene Frage von "Meflin"
Ein Thema von Meflin · begonnen am 11. Okt 2007 · letzter Beitrag vom 12. Okt 2007
Antwort Antwort
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#1

Wann wird DBT_DEVNODES_CHANGED gesendet?

  Alt 11. Okt 2007, 10:28
Moin moin,

wenn man die WM_DEVICECHANGE messages abfängt bekommt man ziemlich oft auch die DBT_DEVNODES_CHANGED message. Steckt man beispielsweise eine Speicherkarte in den Reader, wird (zumindest bei meinem Lappi) erstmal 4x DBT_DEVNODES_CHANGED gesendet, anschließend DBT_DEVICEARRIVAL und dann noch ein mal DBT_DEVNODES_CHANGED, also insgesamt 6 messages für ein und dasselbe Device.

Nungut, MSDN spricht sich dazu so aus:
Zitat:
The system broadcasts the DBT_DEVNODES_CHANGED device event when a device has been added to or removed from the system. Applications that maintain lists of devices in the system should refresh their lists.
Na gut - aber warum bekomme ich dann 5x DBT_DEVNODES_CHANGED, es wird ja nur einmal ein Device "geaddet".

Des Weiteren habe ich meinen Device-Monitor einfach mal ein Weilchen laufen lassen, und ich bekomme immer wieder die message DBT_DEVNODES_CHANGED ohne dass irgendein Laufwerk/Datenträger/sonstige Hardware hinzugefügt oder entfernt worden wäre.

Die Spannende Frage ist also: Was genau verbirgt sich hinter DBT_DEVNODES_CHANGED?

  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#2

Re: Wann wird DBT_DEVNODES_CHANGED gesendet?

  Alt 11. Okt 2007, 10:42
Viellleicht hilft Dir ja das PDF-Dokument aus diesem Beitrag weiter.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#3

Re: Wann wird DBT_DEVNODES_CHANGED gesendet?

  Alt 11. Okt 2007, 10:46
Zitat von RWarnecke:
Viellleicht hilft Dir ja das PDF-Dokument aus diesem Beitrag weiter.
Leider Nein - in diesem Artikel werden nur DBT_DEVICEARRIVAL und co erwähnt, dass auch DBT_DEVNODES_CHANGED gesendet wird wird da nichtmal erwähnt

  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#4

Re: Wann wird DBT_DEVNODES_CHANGED gesendet?

  Alt 11. Okt 2007, 16:53
So, ich habe meinen Device Monitor mal den Tag über laufen lassen, ca. von 9 bis 17 Uhr, also 8 Stunden. In dieser Zeit wurde insgesamt 32 mal die DBT_DEVNODES_CHANGE message gesendet, ohne erkennbaren zusammenhang.

An den Devices wurde aber nicht wirklich etwas verändert. Anbei noch ein Screenshot...

Anmerkung: eigentlich ist die Frage nicht wirklich wichtig, weil man die message nicht unbedingt braucht, um mitzubekommen, wann ein Device hinzugefügt wird. Aber mich würde es einfach interessieren...

Miniaturansicht angehängter Grafiken
devnodes_948.jpg  
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#5

Re: Wann wird DBT_DEVNODES_CHANGED gesendet?

  Alt 11. Okt 2007, 17:47
Die Geraete bei Windows sind in einem Baum organisiert. Jedesmal wenn sich die Baumstruktur aendert wird DBT_DEVNODES_CHANGED gesendet. Den Baum kann man mit dem Config Manager API zugreifen. Die meisten Funktionen sind aber undokumentiert, da Microsoft will das man das darueberliegende Setup API verwendet.
Ein Knoten im Baum entspricht einem Treiber. Eine Speicherkarte in einem Reader hat gleich einen Treiberstack. Da kommen schnell mehrere Messages zusammen.
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#6

Re: Wann wird DBT_DEVNODES_CHANGED gesendet?

  Alt 11. Okt 2007, 17:53
Zitat von Robert Marquardt:
Die Geraete bei Windows sind in einem Baum organisiert. Jedesmal wenn sich die Baumstruktur aendert wird DBT_DEVNODES_CHANGED gesendet. [...]
Ein Knoten im Baum entspricht einem Treiber. Eine Speicherkarte in einem Reader hat gleich einen Treiberstack. Da kommen schnell mehrere Messages zusammen.
OK, das ist schonmal gut zu wissen. Allerdings erklärt es irgendwie noch nicht, wieso die message auch "einfach so" gesendet wird - das heißt ja, in dem Baum ändert sich etwas. Trotzdem habe ich ja aber an den Geräten nichts geändert - wieso ändert sich also dann der Baum?

  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#7

Re: Wann wird DBT_DEVNODES_CHANGED gesendet?

  Alt 11. Okt 2007, 18:08
Monitor Suspend?
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#8

Re: Wann wird DBT_DEVNODES_CHANGED gesendet?

  Alt 11. Okt 2007, 18:10
Zitat von Muetze1:
Monitor Suspend?
Das kann sein, kann aber nur für einen Teil der messages verantwortlich sein, da ich mit Sichherheit auch welche mitten unter der Arbeit bekommen habe.

  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#9

Re: Wann wird DBT_DEVNODES_CHANGED gesendet?

  Alt 11. Okt 2007, 18:22
WLAN Verbindungsverlust? Switch reset?
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#10

Re: Wann wird DBT_DEVNODES_CHANGED gesendet?

  Alt 12. Okt 2007, 06:34
Geraete und ganze Geraete-Busse koennen virtuell sein. Schau mal unter HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum dort sind die Busse aufgelistet. Bei mir sind dort z. B. USBPRINT und USBSTOR, die sicher virtuell sind.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz