出于某些原因,在我的应用程序上运行某些硬盘配置(RAID,随机分区,通过单独的IDE控制器,而不是在操作系统分区上)时,VirtualAlloc
会返回null
GetLastError
代码ERROR_INVALID_PARAMETER
。
除了传入的标志(MEM_COMMIT | MEM_TOP_DOWN, PAGE_READWRITE)
之外,唯一的参数是计算为从磁盘几何体获得的扇区大小的倍数的大小(遗憾的是由于NDA等原因我无法发布代码)。
只是想知道是否有人有这方面的经验?或者如果有人知道为什么Windows可能会在raid或分区的磁盘上以不同方式处理页面大小的任何原因?非常感谢任何帮助!谢谢!
答案 0 :(得分:0)
问题与DeviceIoControl有关,当尝试返回IOCTL_DISK_GET_DRIVE_GEOMETRY似乎在使用除主要硬盘之外的任何东西时返回完全垃圾,我通过使用GetDiskFreeSpace来解决这个问题而不是获取扇区信息并且一切正常
明显地发现为什么IOCTL_DISK_GET_DRIVE_GEOMETRY是垃圾是理想的,但我很高兴它有效!