hemanth_hp
What is this storage?
Hi
I am issuing the scsi commands to the Tape device \\\\.\\Tape0 using SCSI_PASS_THROUGH interface but the DeviceIoControl() is failing and returning the error code as 5 which is "Access is Denied" the code is here. Can you let me know is anything wrong in it?
memset(&stScsiCmd, 0, sizeof(stScsiCmd));
memset(bRqBuf, 0, sizeof(bRqBuf));
memset(bCdb, 0, sizeof(bCdb));
bCdb[0] = MTU_REWIND; // Rewind command 01h
bCdb[1] = IMMMODE; // Immed bit=0
stScsiCmd.sptd.Length = sizeof(SCSI_PASS_THROUGH_DIRECT);
stScsiCmd.sptd.CdbLength = CDB_GROUP0;
stScsiCmd.sptd.DataIn = SCSI_IOCTL_DATA_IN;
stScsiCmd.sptd.SenseInfoLength = sizeof(stScsiCmd.ucSenseBuf); //RQLEN;
stScsiCmd.sptd.DataTransferLength = sizeof(bRqBuf);
stScsiCmd.sptd.TimeOutValue = g_stDeviceData.uiScsiTimeOut;
stScsiCmd.sptd.DataBuffer = bRqBuf;
stScsiCmd.sptd.SenseInfoOffset = offsetof(SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER, ucSenseBuf);
memcpy(stScsiCmd.sptd.Cdb, bCdb, CDB_GROUP0);
//length = sizeof(SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER);
iResult = DeviceIoControl(hDevHndl,
IOCTL_SCSI_PASS_THROUGH_DIRECT,
&stScsiCmd,
sizeof(SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER),
&stScsiCmd,
sizeof(SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER),
&returned,
FALSE);
errCode = GetLastError();
//0 is for failure
if ((iResult == 0) || (stScsiCmd.sptd.ScsiStatus != 0))
{
return -1;
}
I am issuing the scsi commands to the Tape device \\\\.\\Tape0 using SCSI_PASS_THROUGH interface but the DeviceIoControl() is failing and returning the error code as 5 which is "Access is Denied" the code is here. Can you let me know is anything wrong in it?
memset(&stScsiCmd, 0, sizeof(stScsiCmd));
memset(bRqBuf, 0, sizeof(bRqBuf));
memset(bCdb, 0, sizeof(bCdb));
bCdb[0] = MTU_REWIND; // Rewind command 01h
bCdb[1] = IMMMODE; // Immed bit=0
stScsiCmd.sptd.Length = sizeof(SCSI_PASS_THROUGH_DIRECT);
stScsiCmd.sptd.CdbLength = CDB_GROUP0;
stScsiCmd.sptd.DataIn = SCSI_IOCTL_DATA_IN;
stScsiCmd.sptd.SenseInfoLength = sizeof(stScsiCmd.ucSenseBuf); //RQLEN;
stScsiCmd.sptd.DataTransferLength = sizeof(bRqBuf);
stScsiCmd.sptd.TimeOutValue = g_stDeviceData.uiScsiTimeOut;
stScsiCmd.sptd.DataBuffer = bRqBuf;
stScsiCmd.sptd.SenseInfoOffset = offsetof(SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER, ucSenseBuf);
memcpy(stScsiCmd.sptd.Cdb, bCdb, CDB_GROUP0);
//length = sizeof(SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER);
iResult = DeviceIoControl(hDevHndl,
IOCTL_SCSI_PASS_THROUGH_DIRECT,
&stScsiCmd,
sizeof(SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER),
&stScsiCmd,
sizeof(SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER),
&returned,
FALSE);
errCode = GetLastError();
//0 is for failure
if ((iResult == 0) || (stScsiCmd.sptd.ScsiStatus != 0))
{
return -1;
}