Following “DeviceIoControl” call always FAILS for dynamic disks with an
error code: 1( Incorrect Function ) for IOCTL_SCSI_GET_ADDRESS,
IOCTL_STORAGE_GET_DEVICE_NUMBER, but the same succeeds for basics disks!
BYTE buff[2048];
DWORD cbReturnedData;
HANDLE hDevice;
hDevice = CreateFile( “\\.\H:”,
GENERIC_WRITE | GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
0,
NULL );
if (hDevice == (HANDLE)-1)
{
printf(“Attempt failed! Error number = %d\n”,GetLastError());
return;
}
PSCSI_ADDRESS pInfo = (PSCSI_ADDRESS )buff;
BOOL bResult =
DeviceIoControl( hDevice, IOCTL_SCSI_GET_ADDRESS,
//IOCTL_STORAGE_GET_DEVICE_NUMBER,
NULL,
0, // no input buffer, so pass zero
pInfo,
sizeof(buff), // output buffer
&cbReturnedData, // bytes returned
(LPOVERLAPPED) NULL ); // synchronous I/O
if(!bResult)
{
printf(“Attempt failed! Error number = %d\n”,GetLastError());
return;
}
Do I am doing something wrong? would appreciate any help.
Regards,
-Anand