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。


老刀的技术日志 » DeviceIoControl传递文件路径给驱动,驱动中打开此路径的文件,失败报错STATUS_OBJECT_NAME_INVALID 0xc0000033

发表评论