EDIT: Vollständiger Quellcode wurde angefordert. Unten ist eine Barebone-Implementierung, um den Fehler zu replizieren. Die Inhaltsaufzählung wurde entfernt, jedoch tritt der Absturz beim ersten Objektaufruf trotzdem auf. In diesem Fall das WPD_DEVICE_OBJECT_ID-Objekt.WPD-API Erkennen, ob Gerät ein Telefon ist?
LINK TO CPP (Bug beginnt in Zeile 103)
LINK TO QMAKE.PRO (Ich bin mit Qt)
In meinem Projekt habe ich die WPD API, um den Inhalt eines mobilen Gerätes zu lesen. Ich folgte der API zu einem T-Stück und habe Content Enumeration erfolgreich implementiert.
Wenn jedoch ein USB-Laufwerk angeschlossen ist, erkennt die WPD-API dies manchmal auch als Gerät. Mein Programm wird fortgesetzt und beginnt trotzdem mit der Inhaltsaufzählung. Ich will das nicht. Ich möchte nur mobile Geräte aufzählen.
Das Problem ist, dass während der Inhaltsauflistung, wenn mein Programm versucht, eine Eigenschaft eines Objekts auf dem USB-Laufwerk abzurufen, es abstürzt. Hier sind die Crash-Details:
Problem Event Name: BEX
Application Name: UniversalMC.exe
Application Version: 0.0.0.0
Application Timestamp: 5906a8a3
Fault Module Name: MSVCR100.dll
Fault Module Version: 10.0.40219.325
Fault Module Timestamp: 4df2be1e
Exception Offset: 0008af3e
Exception Code: c0000417
Exception Data: 00000000
OS Version: 6.1.7601.2.1.0.768.3
Locale ID: 1033
Additional Information 1: 185e
Additional Information 2: 185ef2beb7eb77a8e39d1dada57d0d11
Additional Information 3: a852
Additional Information 4: a85222a7fc0721be22726bd2ca6bc946
Der Absturz tritt bei diesem Aufruf:
hr = pObjectProperties->GetStringValue(WPD_OBJECT_ORIGINAL_FILE_NAME, &objectName);
hr
kehrt FAILED und dann mein Programm stürzt ab.
Nach einigen Recherchen habe ich festgestellt, dass Ausnahmecode c0000417
bedeutet, dass ein Pufferüberlauf aufgetreten ist? Korrigiere mich, wenn ich falsch liege, aber ist das eine Schwachstelle in der WPD-API? Wenn ja, wie könnte ich im Voraus erkennen, dass dieses Gerät kein mobiles Gerät ist?
Danke für Ihre Zeit!
Sein ziemlich schwer, die volle Funktion des Inhalts Aufzählung zu helfen, ohne zu sehen. Können Sie das Detail bitte zur Verfügung stellen – geekonedge
@kryptogeek Entschuldigung für die Verzögerung, arbeitete an etwas anderem. Ich habe eine eigenständige C++ - Anwendung erstellt, die das Problem repliziert. Wenn dieses spezielle TOSHIBA USB-Laufwerk angeschlossen ist, stürzt das Programm ab. Wenn ein Android-Telefon angeschlossen ist, läuft alles gut. – mrg95