server2003里调用deviceiocontrol失败!

lwdlcb 2008-01-11 10:08:18
HANDLE hDriver=CreateFile(L"\\\\.\\physicaldrive0",GENERIC_WRITE|GENERIC_READ,FILE_SHARE_WRITE|FILE_SHARE_READ,NULL,OPEN_EXISTING,0,0);
SENDCMDINPARAMS si;
memset(&si,0,sizeof(si));
si.cBufferSize=512;
si.bDriveNumber=0;
si.irDriveRegs.bCommandReg=0xEC;

BYTE so[sizeof(SENDCMDOUTPARAMS)+511];
memset(so,0,sizeof(so));
((SENDCMDOUTPARAMS*)so)->cBufferSize=512;

DWORD rtn;
if(DeviceIoControl(hDriver,0x7c088,&si,sizeof(si),&so,sizeof(so),&rtn,0)){
......
在xp里运行正常,在server2003中失败,GetLastError()返回1.
什么原因?
...全文
73 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lwdlcb 2008-01-14
  • 打赏
  • 举报
回复
ding
lwdlcb 2008-01-11
  • 打赏
  • 举报
回复
hDriver成功了
lwdlcb 2008-01-11
  • 打赏
  • 举报
回复
不行
HANDLE hDriver=CreateFile(L"\\\\.\\physicaldrive0",GENERIC_WRITE|GENERIC_READ,FILE_SHARE_WRITE|FILE_SHARE_READ,NULL,OPEN_EXISTING,0,0);
SENDCMDINPARAMS si;
memset(&si,0,sizeof(si));
si.cBufferSize=sizeof(si);
si.bDriveNumber=0;
si.irDriveRegs.bCommandReg=0xEC;

BYTE so[sizeof(SENDCMDOUTPARAMS)+511];
memset(so,0,sizeof(so));
((SENDCMDOUTPARAMS*)so)->cBufferSize=512;
((SENDCMDOUTPARAMS*)so)->cBufferSize=sizeof(so);

DWORD rtn;
if(DeviceIoControl(hDriver,0x7c088,&si,sizeof(si),&so,sizeof(so),&rtn,0)){
jameshooo 2008-01-11
  • 打赏
  • 举报
回复
hDriver是有效句柄吗?CreateFile成功了吗?

si.cBufferSize = sizeof(si);
((SENDCMDOUTPARAMS*)so)-> cBufferSize = sizeof(so);

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧