The following code fragment might give you an idea - largely based on Microsoft example
stat = DeviceIoControl(hDrive.dHandle,
IOCTL_STORAGE_QUERY_PROPERTY,
&propq,
sizeof(propq),
outputbuff,
1024,&dwRead,
NULL);
if (stat==0){
stat = GetLastError();
// AfxMessageBox("Error on IOCTL_STORAGE_QUERY_PROPTERY");
}
STORAGE_DEVICE_DESCRIPTOR *sdd;
sdd = (STORAGE_DEVICE_DESCRIPTOR *)outputbuff;
if (sdd->SerialNumberOffset){
// remove any leading spaces
for(k=0; k<0x20; k++){
if (outputbuff[sdd->SerialNumberOffset+k] !=''){
break;
}
}
movmem(outputbuff+sdd->SerialNumberOffset+k,
di[drive].drive_serial_number, 0x20);
}
↧