1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <string.h>
#include <process.h>
#include <WinIoCtl.h>
#include <Winbase.h>
typedef struct _MEDIA_SERIAL_NUMBER_DATA
{
ULONG SerialNumberLength;
ULONG Result;
ULONG Reserved[2];
UCHAR SerialNumberData[];
} MEDIA_SERIAL_NUMBER_DATA,*PMEDIA_SERIAL_NUMBER_DATA;
void main()
{
HANDLE Handle = 0; // variable servant a stocker le handle pour l'acces au disque
unsigned int temp=0,temp1=0, temp2 = 0;
unsigned int *temporaire=&temp1;
unsigned long i = 0;
MEDIA_SERIAL_NUMBER_DATA val; // creation variable "val" de type MEDIA SERIAL NUMBER DATA
MEDIA_SERIAL_NUMBER_DATA *pVal = &val;
// initialisation de "val" pour le numéro de série
val.SerialNumberLength=0;
Handle = CreateFile("\\\\.\\I:",0,FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,0);// creation du Handle du disque souhaité ici lecteur I
i=DeviceIoControl(Handle,IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER,NULL,0,pVal,sizeof(val),temporaire,NULL);
printf("valeur Handle %c fin\n",Handle); // permet de savoir si le HANDLE A BIEN FONCTIONNER
printf("valeur retour %d fin\n",i); // Permet de savoir si la fonction deviceiocontrol a bien fonctionner
printf("valeur serial %s fin\n",val.SerialNumberData); // affichage de la chaine numero de serie
printf("valeur serial %h fin\n",val.SerialNumberData);
printf("valeur nb de donne %d fin\n",temp1); // affichage du nombre d'octet renvoyé dans "val" par deviceiocontrol
printf("valeur longeur num serie %d fin\n",val.SerialNumberLength); // affichage de la longueur du numéro de serie renvoyé par la fonction
CloseHandle(Handle); // libère le handle
} |
Partager