gpt4 book ai didi

c++ - VirtualAlloc 在某些硬盘配置上失败

转载 作者:太空宇宙 更新时间:2023-11-04 14:28:35 27 4
gpt4 key购买 nike

出于某种原因,当我的应用程序在某些配置的硬盘上运行时(RAID、随机分区、通过单独的 IDE Controller ,而不是在操作系统分区上),VirtualAlloc 返回 null ERROR_INVALID_PARAMETERGetLastError 代码。

除了标志 (MEM_COMMIT | MEM_TOP_DOWN, PAGE_READWRITE) 传入的唯一参数是大小计算为从磁盘几何中获得的扇区大小的倍数(不幸的是我不能发布代码,因为保密协议(protocol)等)。

只是想知道是否有人有这方面的经验?或者如果有人知道 Windows 可能会以不同方式处理属于 raid 或分区的磁盘上的页面大小的任何原因?非常感谢任何帮助,谢谢!

最佳答案

问题与 DeviceIoControl 有关,当尝试返回 IOCTL_DISK_GET_DRIVE_GEOMETRY 时似乎在使用主硬盘以外的任何其他设备时返回完全垃圾,我通过使用 GetDiskFreeSpace 来获取扇区信息解决了这个问题并且一切正常

很明显找出为什么 IOCTL_DISK_GET_DRIVE_GEOMETRY 是垃圾是理想的,但我很高兴它能工作!

关于c++ - VirtualAlloc 在某些硬盘配置上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1062965/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com