| 12
 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