VirtualAlloc在某些hdd配置上失败

时间:2009-06-30 10:36:01

标签: c++ windows virtualalloc

出于某些原因,在我的应用程序上运行某些硬盘配置(RAID,随机分区,通过单独的IDE控制器,而不是在操作系统分区上)时,VirtualAlloc会返回null GetLastError代码ERROR_INVALID_PARAMETER

除了传入的标志(MEM_COMMIT | MEM_TOP_DOWN, PAGE_READWRITE)之外,唯一的参数是计算为从磁盘几何体获得的扇区大小的倍数的大小(遗憾的是由于NDA等原因我无法发布代码)。

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

1 个答案:

答案 0 :(得分:0)

问题与DeviceIoControl有关,当尝试返回IOCTL_DISK_GET_DRIVE_GEOMETRY似乎在使用除主要硬盘之外的任何东西时返回完全垃圾,我通过使用GetDiskFreeSpace来解决这个问题而不是获取扇区信息并且一切正常

明显地发现为什么IOCTL_DISK_GET_DRIVE_GEOMETRY是垃圾是理想的,但我很高兴它有效!