DeviceIoControl 占用CPU资源过高如何解决?
土掉渣 2013-04-28 10:21:50 我用如下代码操作优盘,发现循环使用时会占用大量CPU资源,请问大虾们,是我参数设置有误呢,还是需要其它方法来解决?先谢过!
CTest::WriteToScsi(
HANDLE fileHandle,
int cdbLen,
void *cdb,
int dataLen,
BYTE *data
)
{
BOOL status;
ULONG length = 0, returned = 0;
SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER sptdwb;
sptdwb.sptd.Length = sizeof(SCSI_PASS_THROUGH_DIRECT);
sptdwb.sptd.PathId = 0;
sptdwb.sptd.TargetId = 1;
sptdwb.sptd.Lun = 0;
sptdwb.sptd.CdbLength = cdbLen;
sptdwb.sptd.SenseInfoLength = 26;
sptdwb.sptd.DataIn = SCSI_IOCTL_DATA_OUT;
sptdwb.sptd.DataTransferLength = dataLen;
sptdwb.sptd.TimeOutValue = 60;
sptdwb.sptd.DataBuffer = data;
sptdwb.sptd.SenseInfoOffset =
offsetof(SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER,ucSenseBuf);
memcpy(sptdwb.sptd.Cdb, cdb, cdbLen);
length = sizeof(SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER);
status = DeviceIoControl(fileHandle,
IOCTL_SCSI_PASS_THROUGH_DIRECT,
&sptdwb,
length,
&sptdwb,
length,
&returned,
FALSE);
if(status == 0)
{
int iErr = GetLastError() ;
}
return status;
}