Delphi-PRAXiS
Seite 5 von 7   « Erste     345 67      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi USB-Speicher identifizieren (https://www.delphipraxis.net/21676-usb-speicher-identifizieren.html)

Robert Marquardt 9. Sep 2005 18:44

Re: USB-Speicher identifizieren
 
Von http://www.sf.net/projects/jedi-apilib scapi und win32api runterladen.
In scapi ist ein Beispielprogramm dazu enthalten (SafeRemoval)

r_amse_s 20. Dez 2006 01:49

Re: USB-Speicher identifizieren
 
hallo,

habe ausprobiert saferemoval zu kompilieren, leider ohne erfolg.

in jediapilib.inc

Delphi-Quellcode:
{$IFNDEF JEDI_INC}
ALERT_jedi_inc_incompatible              <-------------- error
// secure against old versions of jedi.inc.
{$ENDIF !JEDI_INC}
error lautet:
[Error] jediapilib.inc(47): 'INTERFACE' expected but identifier 'ALERT_jedi_inc_incompatible' found


hat jemand eine idee ?

habe D7 enterpr.

danke!

Robert Marquardt 20. Dez 2006 04:45

Re: USB-Speicher identifizieren
 
Das besagt das eine alte jedi.inc im Suchpfad von Delphi enthalten ist. Das deutet auf die Installation einer alten JCL oder JVCL hin.

r_amse_s 25. Dez 2006 21:27

Re: USB-Speicher identifizieren
 
habe nach jedi.inc gesucht und habe 7 files gefunden

http://i77.photobucket.com/albums/j4...e_s/search.png

welche sind nun relevant und welche nicht ?

Robert Marquardt 26. Dez 2006 14:28

Re: USB-Speicher identifizieren
 
Relevant sind JCL bzw. JVCL (es ist egal welches der Files zuerst gefunden wird, da sie gleich sind).
Schau mal unter "Tools : Environment Options... : Library : Library path" nach (ich habe englisches Delphi installiert).
Dort ist der JVCL-Pfad vermutlich am Ende der Pfadliste. Schieb den Eintrag hoch so das er vor den anderen steht.

Alternativ ersetze die JEDI.INC Files durch common\jedi.inc aus der JVCL. Die anderen Komponenten sollten das vertragen.

r_amse_s 26. Dez 2006 22:10

Re: USB-Speicher identifizieren
 
danke robert !

die verschiebung hat leider nicht viel gebracht, sehr wohl aber das ersetzen aller jedi.inc files wie oben beschrieben. das compilier vorgang geht jetzt weiter...
nach ca. 10 min. compilierung sind 3 errors aufgetretten

http://i77.photobucket.com/albums/j41/r_amse_s/s1.png

http://i77.photobucket.com/albums/j41/r_amse_s/s2.png

was bedeutet das jetzt ?
danke im voraus!

Robert Marquardt 27. Dez 2006 04:56

Re: USB-Speicher identifizieren
 
Da musst du HINSTANCE durch HINST ersetzen. Das ist ein Konversionsfehler den ich noch nicht behoben habe.

r_amse_s 28. Dez 2006 12:14

Re: USB-Speicher identifizieren
 
ok, jetzt wird alles compiliert aber unter W2K bekomme eine exception hier:

SafeRemovalMain.pas
Delphi-Quellcode:
  PnPHandle := SetupDiGetClassDevs(@StorageGUID, nil, 0, DIGCF_PRESENT or DIGCF_DEVICEINTERFACE);
http://i77.photobucket.com/albums/j41/r_amse_s/safe.png


unter WinXP läuft alles perfekt.
gibt es eine lösung auch für W2K ?
ich bilde mir ein, dass in einer frühere version von scapi auch in W2K alles funktioniert hat...oder ?
was ist unter W2K anders ?

auch bei dem beispiel USBView ist ist das gleiche problem, exception tritt auf in

USBDeviceTree.pas
Delphi-Quellcode:
  if CM_Locate_DevNode(Dest, nil, 0) = CR_SUCCESS then
danke!

Robert Marquardt 28. Dez 2006 12:26

Re: USB-Speicher identifizieren
 
Check mal jediapilib.inc. Dort ist wahrscheinlich WINXP als Linklevel eingestellt. Wenn du dann auch noch LINKONREQUEST an hast, was standardmaessig der Fall ist, dann versagt das Laden der DLL und alle Funktionen loesen diese Exception aus.

r_amse_s 28. Dez 2006 22:07

Re: USB-Speicher identifizieren
 
jetzt funkt alles sowohl unter W2K als auch unter XP!
...nur WinXP auskommentiert und W2K aktiviert.

jetz wieder zum thread thema "usb speicher identifizieren"

durchs experimentieren sind aber weitere fragen aufgetaucht:
- habe einige USB-Sticks angesteckt: manche zeigen eine (zumindest für 2 PCs) eindeutige seriennr. in hex. ist das wircklich die hard coded seriennr. oder ist eine id von windoze vergeben aufgrund von verschiedene param ? (die nr. sind gleich auf verschiedene PCs)
- kann man davon ausgehen, dass auch auf andere PCs die gleiche nr "zugeordnet" bekommen
- ein stick zeigt statt die sernr. einen string der form 6&64173e2&0&1. was bedeuten diese zahlen ? sind sie auch eindeutig für jedes stick ? in der registry wird dieses stick unter:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\U SB\Vid_067b&Pid_2515

die anderen sticks werden unter:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\U SB\Vid_0ea0&Pid_2168

- kann man diese sernr manipulieren ? bsp. registry editieren, ohne die funktion/stabilität zu beeinträchtigen ?

- wie kann man auch andere devices (z.b. pcmcia datenkarten-gsm modems) in der liste von saferemoval anzeigen und aufwerfen per soft ?

nochmals vielen dank für die hilfe!


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:46 Uhr.
Seite 5 von 7   « Erste     345 67      

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