DeviceIoControl传递文件路径给驱动,驱动中打开此路径的文件,失败报错STATUS_OBJECT_NAME_INVALID 0xc0000033
DeviceIoControl传递文件路径给驱动,驱动中打开此路径的文件,失败报错STATUS_OBJECT_NAME_INVALID 0xc0000033
查了好久,最后发现,居然是应用层传递路径和长度时,使用了 (DWORD)((_tcslen(szPath)+1) * sizeof(TCHAR)),想着把后面的\0也传递过去,结果就尴尬了。好像很久以前也遇到过这个问题。
驱动层根据长度创建了UNICODE_STRING,但是这个字符串是错误的,因为其长度计算了最后一个\0,于是创建文件是的路径成了 正确路径 + \0,所以每次创建都失败,报“文件名称错误”。
转载请注明来源,谢谢。
有偿解决C++编程问题,承接项目定制开发;寻一份全职或兼职Windows C++开发工作。联系邮箱:jishurizhi@outlook.com。