Recuperation GUID en c#

shizuru54 - 30 janv. 2013 à 18:45
 shizuru54 - 30 janv. 2013 à 22:26
Bonjour , je poste ici pour un renseignement .
Pour mon projet de fin d'année je dois faire les étapes suivantes :
Créer avec l'interface Windows un disque virtuel l'initialiser et le formater ce que me donne par la suite un fichier .vhd .

Je détache le disque virtuel que je viens de créer .

Maintenant je dois faire une application en C# qui fait les choses suivantes :

Attache/Détache un fichier vhd (je le fait avec les Virtual Disk Functions ) ça sa marche .

Aprés je dois attribuer une lettre au disque que je viens d'attacher pour pouvoir le parcourir pour cela j'ai trouvé la fonctions suivante : SetVolumeMountPoint (http://msdn.microsoft.com/en-us/library/aa365730(v=vs.85).aspx)

mais pour utiliser cette fonction je dois recuperer le GUID du disque auquel je veux attribuer ma lettre .

Donc je veux utiliser la fonction suivante : GetVolumeNameForVolumeMountPoint (http://msdn.microsoft.com/en-us/library/aa364994(v=vs.85).aspx)

Mais pour utiliser cette fonction il me demande la lettre qui est attribué a mon disque ....
Je ne suis pas du tous bon en C# et je galère vraiment , si quelqu'un a une piste pour m'aider a recuper le GUID de mon disque je le vénérerais jusqu’à la fin des temps .

Merci d'avance pour d'éventuels réponse .
Bonne journée a vous .

2 réponses

yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
30 janv. 2013 à 22:23
Salut,

La fonction API suivante permet de récupérer le nom unique d'un volume monté (avec son GUID) en passant la lettre attribuée OU le chemin de montage :
Ceci dit, je ne connait pas le montage d'un volume depuis un fichier vhd que tu mentionnes.

[DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool GetVolumeNameForVolumeMountPointW(
    string lpszVolumeMountPoint, 
    [Out] StringBuilder lpszVolumeName, 
    uint cchBufferLength);

StringBuilder sb = new StringBuider(" ".PadLeft(' ', 255));
GetVolumeNameForVolumeMountPointW(
    @"C:\MountPoint\virtualDrive", 
    sb, 
    255);
// sb contient le GUID


L'API suivante permet aussi de récupérer le GUID de la même manière ou en passant le handle d'un fichier sur le volume voulu.

BOOL WINAPI GetVolumeInformationByHandleW(
  __in          HANDLE hFile,
  __out         LPTSTR lpVolumeNameBuffer,
  __in          DWORD nVolumeNameSize,
  __out         LPDWORD lpVolumeSerialNumber,
  __out         LPDWORD lpMaximumComponentLength,
  __out         LPDWORD lpFileSystemFlags,
  __out         LPTSTR lpFileSystemNameBuffer,
  __in          DWORD nFileSystemNameSize
);



bye...
0
Merci pour ta réponse je vais essayer !
0
Rejoignez-nous