Einzelnen Beitrag anzeigen

CodeX

Registriert seit: 30. Okt 2004
475 Beiträge
 
Delphi 12 Athens
 
#26

AW: Windows-Bug mit bestimmter Netzlaufwerkskonstellation (*Herausforderung gesucht?*

  Alt 19. Aug 2015, 16:47
DEV_BROADCAST_HDR wird nicht bei SendMessage verwendet!
Oh, OK ... das hatte ich irgendwie falsch verstanden.

Z: hat die ID 25, da A = ID 0 ist..
Dann ist 4 = D: in deinem Beispiel vorhin aber auch falsch.


Scheinbar knallts aber bei jeder Zuweisung der Werte von pvol:
Code:
Access violation at address 0053CFAD in module 'disconnect.exe'. Write of address 00000000.
Muss das irgendwie noch initialisiert werden? pvol ist erstmal nur nil.

Edit:
Also so bekomme ich die Funktion zum Laufen:
Delphi-Quellcode:
var
  pvol: PDevBroadcastVolume;
  sDrive: String;
const
  DBT_DEVICEREMOVECOMPLETE = 32772;
  DBTF_NET = 2;
  EmptyDevBroadcastVolume: TDevBroadcastVolume = (
    dbcv_size: 0;
    dbcv_devicetype: 0;
    dbcv_reserved: 0;
    dbcv_unitmask: 0;
    dbcv_flags: 0);
begin
  sDrive := 'Z:';
  pvol := @EmptyDevBroadcastVolume;
  pvol.dbcv_size := SizeOf(DEV_BROADCAST_VOLUME);
  pvol.dbcv_devicetype := DBT_DEVTYP_VOLUME;
  pvol.dbcv_unitmask := PathGetDriveNumber(PChar(sDrive))
  pvol.dbcv_flags := DBTF_NET;

  SendMessage(HWND_BROADCAST, WM_DEVICECHANGE, DBT_DEVICEREMOVECOMPLETE, INTEGER(@pvol));
Einen Unterschied scheint es aber dennoch nicht zu machen. Das Laufwerk ist immer noch da.
Nur Delphi schafft es, einem ein Lächeln zu schenken, wenn man sich beim Schreiben von := vertippt und stattdessen ein :) erscheint.

Geändert von CodeX (19. Aug 2015 um 17:52 Uhr)
  Mit Zitat antworten Zitat