Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question#define _WIN32_WINNT 0x0500 #include <windows.h> #include #include <winioctl.h> #include <tchar.h> #include <stdio.h> #include <stdlib.h> char DriveLetter; char szappname[] = "DiskInfo"; void DisplayLastError() { LPVOID lpMsgBuf = 0; DWORD dwErr = GetLastError(); if(dwErr) { FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,NULL, dwErr, MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL),(LPTSTR) &lpMsgBuf, 0, NULL); if(lpMsgBuf) { cout<<"Erreur : "<<(LPCTSTR)lpMsgBuf<<endl; LocalFree(lpMsgBuf); } } } void InfoPartition() { char szbuff[24]; BYTE buff[sizeof(DISK_GEOMETRY)*20]; DWORD len; *((DWORD*) szbuff) = 0x5C2E5C5C; /*car doit etre de la forme \\.\F: */ szbuff[4] = DriveLetter; szbuff[5] = ':'; szbuff[6] = 0; cout<<"PATH : "<<szbuff<<endl; HANDLE hdev; hdev = CreateFile(szbuff,0,FILE_SHARE_READ|FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0); if(hdev == INVALID_HANDLE_VALUE) { cout<<"INDISPONIBLE"<<endl; return; } if(DeviceIoControl(hdev,IOCTL_DISK_GET_DRIVE_LAYOUT, 0, 0, &buff, sizeof(buff), &len, 0)) { if(!len) return; DRIVE_LAYOUT_INFORMATION *dli; dli = (DRIVE_LAYOUT_INFORMATION*) buff; printf("DISK INFO [LAYOUT INFO] : \n"); printf("Number of partition : %i\n",dli->PartitionCount); printf("Signature : %i\n",dli->Signature); } else DisplayLastError(); CloseHandle(hdev); } int main(int argc,char **argv) { DriveLetter='C'; printf("Information du disque %c :\n",DriveLetter); InfoPartition(); return 0; }