2010-09-16 3 views
1

Je voudrais écrire une application qui créera une «image» d'un lecteur flash. Cela inclut la topographie totale du lecteur, pas seulement les fichiers. Donc, si le lecteur est de 4 Go, vous obtenez un fichier de 4 Go. Est-ce possible, et si oui, quelqu'un pourrait-il me diriger vers des informations sur la façon dont cela peut être accompli?Flash Drive Imaging

+0

Quel système d'exploitation? Je demande seulement parce que je veux savoir si je traite avec les outils Windows API et CMD ou l'API Linux et les outils shell. – linuxuser27

+0

Oh désolé. Oui je suis sur Windows. Travailler dans Visual Studio.net 2008 – BigPete

+0

Que comptez-vous faire avec l'image après l'avoir copiée? – Robaticus

Répondre

1

C'est possible. Je l'ai fait pour une application interne, donc je ne peux pas simplement coller la source pour cela, mais je peux vous donner quelques indices. Vous devrez P/Invoke certaines choses.

[DllImport("kernel32.dll", CharSet = CharSet.Unicode, EntryPoint = "CreateFileW", SetLastError = true)] 
public static extern IntPtr CreateFile(string name, int access, int share, byte[] attributes, int create, int flags, IntPtr template); 

[DllImport("kernel32.dll", SetLastError = true)] 
public static extern int CloseHandle(IntPtr handle); 

[DllImport("kernel32.dll", SetLastError = true)] 
public static extern int DeviceIoControl(IntPtr handle, DiskIoctl ioctl, byte[] inBuffer, int inBufferSize, byte[] outBuffer, int outBufferSize, ref int bytesReturned, IntPtr overlapped); 

[DllImport("kernel32.dll", CharSet = CharSet.Unicode, EntryPoint = "GetLogicalDriveStringsW", SetLastError = true)] 
public static extern int GetLogicalDriveStrings(int bufferLength, byte[] buffer); 

public enum DiskIoctl 
{ 
    ScsiPassThrough = 315396, 

    Lock = 589848, 

    Unlock = 589852, 

    Dismount = 589856, 

    UpdateProperties = 459072, 

    GetDiskLayout = 475148, 

    SetDiskLayout = 507920 
} 

public enum ScsiOp 
{ 
    ReadCapacity = 0x25, 

    Read = 0x28, 

    Write = 0x2A 
} 
0

Avez-vous essayé d'ouvrir le lecteur en tant que fichier et de le copier?

+1

Cela ne lui donnerait pas l'image. D'après ce qu'il décrit, il veut une "copie sectorielle" complète du lecteur flash. – Robaticus

+0

@Robaticus Que manqueriez-vous? –

+0

Informations sur le boîtier d'informations, systèmes de fichiers non natifs. – Robaticus

Questions connexes