AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi winhexapi unformatierter USB Datenträger
Thema durchsuchen
Ansicht
Themen-Optionen

winhexapi unformatierter USB Datenträger

Ein Thema von PhilmacFLy · begonnen am 25. Okt 2012 · letzter Beitrag vom 25. Okt 2012
Antwort Antwort
Benutzerbild von PhilmacFLy
PhilmacFLy

Registriert seit: 20. Jan 2008
Ort: Nürnberg
340 Beiträge
 
FreePascal / Lazarus
 
#1

winhexapi unformatierter USB Datenträger

  Alt 25. Okt 2012, 09:25
Moin

Ich hab folgendes Problem:
Ich soll sobald ein USB Datenträger angesteckt wird und er eine spezielle Bezeichnung trägt,
diesen mit der Winhex API auslesen, weil dort Daten direkt ohne Filesystem gespeichert sind.
Nun ist mein Problem das die Winhex api in open folgendes erwartet:
Zitat:
Examples for lpResName:

C:\My File.txt file
D: logical drive
E: logical drive
00h floppy disk
80h hard disk 0*
81h hard disk 1*
82h removable medium 2*
83h hard disk 3*
... ...
9Eh 1st optical disc
9Fh 2nd optical disc
*80h = BIOS disk 80h under Windows 9x/Me, physical disk no. 0 under Windows NT/2000/XP, 81h = BIOS disk 81h under Windows 9x/Me, physical disk no. 1 under Windows NT/2000/XP, etc. Physical removable media are accessed and enumerated just like physical hard disks.
Wie finde ich nun die "Nummer" des Datenträgers am einfachsten herraus?
Philipp N.
"Programmiern ist wie küssen:
Mann kan darüber reden, mann kann es beschreiben,
aber man weiss erst, was es bedeutet,
wenn man es getan hat"
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: winhexapi unformatierter USB Datenträger

  Alt 25. Okt 2012, 09:30
mal schnell geraten über WMI >> LogicalDisk
gegf. auch per WMDeviceChange
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von PhilmacFLy
PhilmacFLy

Registriert seit: 20. Jan 2008
Ort: Nürnberg
340 Beiträge
 
FreePascal / Lazarus
 
#3

AW: winhexapi unformatierter USB Datenträger

  Alt 25. Okt 2012, 10:22
Ok und wie genau?
Hab mal grad gegoogelt und nix was mir hilft gefunden.
Philipp N.
"Programmiern ist wie küssen:
Mann kan darüber reden, mann kann es beschreiben,
aber man weiss erst, was es bedeutet,
wenn man es getan hat"
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

AW: winhexapi unformatierter USB Datenträger

  Alt 25. Okt 2012, 10:46
Wie kommst du denn an die Bezeichnung des Datenträgers?

WinHexAPI?
Nja, man könnte einfach via CreateFile/TFileStream nacheinander auf auf alle \\.\PHYSICALDRIVE%d zugegreifen, jeweils über dieses Handle auch den Kardwarenamen auslesen und hätte auch sofort das Handle für den Zugriff.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von PhilmacFLy
PhilmacFLy

Registriert seit: 20. Jan 2008
Ort: Nürnberg
340 Beiträge
 
FreePascal / Lazarus
 
#5

AW: winhexapi unformatierter USB Datenträger

  Alt 25. Okt 2012, 11:13
Ja winhexapi ist halt Vorgabe deswegen kann ich nicht aus.

Ich hab mir bis jetzt auch noch keine Gedanken gemacht wie ich an die Bezeichnung des Datenträgers komm...
Philipp N.
"Programmiern ist wie küssen:
Mann kan darüber reden, mann kann es beschreiben,
aber man weiss erst, was es bedeutet,
wenn man es getan hat"
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#6

AW: winhexapi unformatierter USB Datenträger

  Alt 25. Okt 2012, 11:21
das wäre ein Auszug einer Ausgabe bei:

 GetWMIstring('.', 'root\CIMV2', 'SELECT * FROM CIM_MediaAccessDevice',sl);
Code:
instance of Win32_DiskDrive
{
   BytesPerSector = 512;
   Capabilities = {3, 4, 7};
   CapabilityDescriptions = {"Random Access", "Supports Writing", "Supports Removable Media"};
   Caption = "Kingston DataTraveler G3 USB Device";
   ConfigManagerErrorCode = 0;
   ConfigManagerUserConfig = FALSE;
   CreationClassName = "Win32_DiskDrive";
   Description = "Laufwerk";
   DeviceID = "\\\\.\\PHYSICALDRIVE1";
   FirmwareRevision = "PMAP";
   Index = 1;
   InterfaceType = "USB";
   Manufacturer = "(Standardlaufwerke)";
   MediaLoaded = TRUE;
   MediaType = "Removable Media";
   Model = "Kingston DataTraveler G3 USB Device";
   Name = "\\\\.\\PHYSICALDRIVE1";
   Partitions = 1;
   PNPDeviceID = "USBSTOR\\DISK&VEN_KINGSTON&PROD_DATATRAVELER_G3&REV_PMAP\\001372982BA9BA91150F0158&0";
   SectorsPerTrack = 63;
   SerialNumber = "";
   Signature = 3272027672;
   Size = "8003197440";
   Status = "OK";
   SystemCreationClassName = "Win32_ComputerSystem";
   SystemName = "BUMMOB6";
   TotalCylinders = "973";
   TotalHeads = 255;
   TotalSectors = "15631245";
   TotalTracks = "248115";
   TracksPerCylinder = 255;
};

 GetWMIstring('.', 'root\CIMV2', 'SELECT * FROM CIM_LogicalDisk',sl); ergäbe u.a. ....

Code:
instance of Win32_LogicalDisk
{
   Access = 0;
   Caption = "G:";
   Compressed = FALSE;
   CreationClassName = "Win32_LogicalDisk";
   Description = "Wechseldatenträger";
   DeviceID = "G:";
   DriveType = 2;
   FileSystem = "FAT32";
   FreeSpace = "6257410048";
   MaximumComponentLength = 255;
   Name = "G:";
   Size = "8004993024";
   SupportsDiskQuotas = FALSE;
   SupportsFileBasedCompression = FALSE;
   SystemCreationClassName = "Win32_ComputerSystem";
   SystemName = "BUMMOB6";
   VolumeDirty = TRUE;
   VolumeName = "KINGSTON";
   VolumeSerialNumber = "F51D9F89";
};




Den Code für GetWMIstring kann ich auf Wunsch Uploaden
Angehängte Dateien
Dateityp: zip WMI_SQL.zip (29,1 KB, 41x aufgerufen)
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)

Geändert von Bummi (25. Okt 2012 um 11:47 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von PhilmacFLy
PhilmacFLy

Registriert seit: 20. Jan 2008
Ort: Nürnberg
340 Beiträge
 
FreePascal / Lazarus
 
#7

AW: winhexapi unformatierter USB Datenträger

  Alt 25. Okt 2012, 11:43
Da wär ich sehr dankbar wenn du das machen könntest

Edit: Hab mir das mal angeschaut, das ist ganschön viel Holz, da muss es doch was "einfacheres" geben

Edit2: himi ich hab mir jetzt den Code von dir in diesem Trhead angeschaut: http://www.delphipraxis.net/24737-post.html und der würde mir ja schon sehr weiterhelfen weil ich ja dann schon weiss wo welche Devices sind, jetzt müsst ich nur noch den Namen auslesen. Kannst du mir dafür ein Snippet geben wie ich das mache?
Philipp N.
"Programmiern ist wie küssen:
Mann kan darüber reden, mann kann es beschreiben,
aber man weiss erst, was es bedeutet,
wenn man es getan hat"

Geändert von PhilmacFLy (25. Okt 2012 um 13:36 Uhr)
  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 05:17 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