首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DeviceIoControl调用时崩溃

DeviceIoControl调用时崩溃
EN

Stack Overflow用户
提问于 2018-06-21 14:42:42
回答 1查看 312关注 0票数 1

我正在尝试获取我的硬盘上的分区偏移量。我这样做:

代码语言:javascript
复制
PDRIVE_LAYOUT_INFORMATION_EX partitions;
DWORD partitionsSize = sizeof(DRIVE_LAYOUT_INFORMATION_EX) 
                       + 127 * sizeof(PARTITION_INFORMATION_EX);
partitions = (PDRIVE_LAYOUT_INFORMATION_EX)malloc(partitionsSize);

HANDLE h = CreateFile(L"\\\\.\\PhysicalDrive0", FILE_ANY_ACCESS , 
                      FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, 
                      OPEN_EXISTING, 0, 0);
if (h == INVALID_HANDLE_VALUE)
{
   // handle error and exit
}
if (DeviceIoControl(h, IOCTL_DISK_GET_DRIVE_LAYOUT_EX, NULL, 0, partitions, 
                    partitionsSize, 0, NULL) != 0)
{
   // do stuff with partitions here
}

它在Windows10上运行良好,但在Windows7上失败(在DeviceIoControl呼叫中)。调试器输出为:Exception at 0x7fefcc3b2b2, code: 0xc0000005: write access violation at: 0x1, flags=0x0

我尝试过:以管理员身份运行,在CreateFile、谷歌上更改文件访问参数(可能还不够好)

我使用: Microsoft Visual Studio 14.0

EN

回答 1

Stack Overflow用户

发布于 2018-06-21 15:54:11

我漫不经心地阅读文档。答案在评论中(由@RbMm回答)

最后两个参数之一(lpBytesReturned或lpOverlapped)不能为0。和visual studio版本,以管理员身份运行,更改CreateFile上的文件访问参数-不能影响

上的访问冲突

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50961969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档