向硬盘发送security_erase_unit擦除数据,请求大家指点!
ATA_PASS_THROUGH_DIRECT yy;
ULONG length = 0,
errorCode = 0,
returned = 0,
sectorSize = 512;
int iBufferLen =256,iyySize;
DWORD dwReturned;
ZeroMemory(&yy,sizeof(ATA_PASS_THROUGH_DIRECT));
yy.Length = sizeof(yy);
yy.AtaFlags = ATA_FLAGS_DATA_OUT;
yy.PathId = 0;
yy.TargetId = 0;
yy.Lun = 0;
yy.ReservedAsUchar = 0;
yy.DataTransferLength = sizeof(yy)+iBufferLen;
yy.TimeOutValue = 3;
yy.ReservedAsUlong = 0;
yy.DataBuffer = new WORD[iBufferLen];
memset(&yy.PreviousTaskFile,0,sizeof(yy.PreviousTaskFile));
memset(&yy.CurrentTaskFile,0,sizeof(yy.CurrentTaskFile));
yy.CurrentTaskFile[6] = 0xEC;
iyySize= sizeof(ATA_PASS_THROUGH_DIRECT)+yy.DataTransferLength;
BOOL status = DeviceIoControl(fileHandle,
IOCTL_ATA_PASS_THROUGH_DIRECT,
&yy,
iyySize,
&yy,
iyySize,
&dwReturned,
FALSE);
if (!status )
{
errorCode = GetLastError();
printf("Error getting device and/or adapter properties; "
"error was %d\n", status);
}
这是我的发送指令代码,发送没有成功,找不到问题在哪里,请大家指点,希望有做过类似项目的朋友们,能不吝指教,给我实例看看,谢谢大家了!