Bonjour,
Je suis un peu pommé entre lors d'une migration d'un code:
Sous VB6 j'ai ce code qui me retourne mon bon numéro de disque :
et en C# j'ai un numero de série totalement différent !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 Private Declare Function GetVolumeInformation Lib "kernel32" _ Alias "GetVolumeInformationA" _ (ByVal lpRootPathName As String, _ ByVal lpVolumeNameBuffer As String, _ ByVal nVolumeNameSize As Long, _ lpVolumeSerialNumber As Long, _ lpMaximumComponentLength As Long, _ lpFileSystemFlags As Long, _ ByVal lpFileSystemNameBuffer As String, _ ByVal nFileSystemNameSize As Long) As Long Dim DrvVolumeName As String Dim DrvSerialNo As String DrvVolumeName = Space$(14) UnusedStr = Space$(32) Dim VolumeSN As Long r = GetVolumeInformation("c:\\", _ DrvVolumeName, _ Len(DrvVolumeName), _ VolumeSN&, _ UnusedVal1, UnusedVal2, _ UnusedStr, Len(UnusedStr))
Quelqu'un peu m'aider ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 [DllImport("kernel32.dll")] private static extern long GetVolumeInformation(string PathName, StringBuilder VolumeNameBuffer, UInt32 VolumeNameSize, ref UInt32 VolumeSerialNumber, ref UInt32 MaximumComponentLength, ref UInt32 FileSystemFlags, StringBuilder FileSystemNameBuffer, UInt32 FileSystemNameSize); private string GetVolumeSerial(string strDriveLetter) { uint serNum = 0; uint maxCompLen = 0; StringBuilder VolLabel = new StringBuilder(256); // Label UInt32 VolFlags = new UInt32(); StringBuilder FSName = new StringBuilder(256); // File System Name //strDriveLetter += ":\\"; long Ret = GetVolumeInformation(strDriveLetter, VolLabel, (UInt32)VolLabel.Capacity, ref serNum, ref maxCompLen, ref VolFlags, FSName, (UInt32)FSName.Capacity); return Convert.ToString(serNum); }
Partager