c ++ - Læsning af rådata fra en enhed, der ikke er monteret

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at læse rådata fra et SD-kort, der ikke er formateret i et filsystem, som Windows genkender.


Ved hjælp af kommandoen mountvol i Command Prompt kan jeg få den VolumeID, som jeg forsøger at bruge til at få adgang til og læse fra enheden, men jeg har ikke haft succes.


Jeg forsøger at gøre dette i C/C ++. Jeg har forsøgt at fopen VolumeID og jeg har forsøgt at bruge CreateFile for at få et håndtag og bruge det.


Eventuelle ideer om, hvad jeg mere kan prøve? Jeg ved, at du kan åbne et volumen direkte ved hjælp af kommandoen 'start' i kommandoprompt, så jeg må tro på, at der er en måde at gøre dette på.


Eksempler:


LPCTSTR test = L"\\?\Volume{501d29da-6d6d-48ab-a8bc-e14a7da74e9f}\";

HANDLE file\_handle = CreateFile(
  test
  , GENERIC\_READ
  , FILE\_SHARE\_READ | FILE\_SHARE\_WRITE
  , NULL
  , OPEN\_EXISTING
  , FILE\_FLAG\_NO\_BUFFERING | FILE\_FLAG\_RANDOM\_ACCESS
  , NULL);


ELLER


FILE *volume = fopen("\\?\Volume{501d29da-6d6d-48ab-a8bc-e14a7da74e9f}\", "r");
long long offset = 0;  // Sector-aligned offset
setbuf(volume, NULL);  // Disable buffering

Bedste reference