阅读:1149回复:6
问个驱动程序的初级问题
在sfilter中,写了以下代码:
UNICODE_STRING str; RtlInitUnicodeString(&str, FileObj->FileName.Buffer); ... RtlFreeUnicodeString(&str); 怎么一进windows就蓝屏?我把上面几句去掉就正常了。难道这样初始化和释放unicode string 有问题吗? |
|
沙发#
发布于:2005-05-18 14:03
不能使用RtlFreeUnicodeString。
|
|
|
板凳#
发布于:2005-05-18 16:45
那应该怎么释放空间啊?
|
|
地板#
发布于:2005-05-18 16:59
FileObj!!!!!
你要确保这个东西不是NULL,前面加个判断。 因为不是每次里面都有的 |
|
地下室#
发布于:2005-05-18 17:04
应该不是FileObj的问题,我用DbgPrint输出FileObj->FileName.Buffer没有出现蓝屏。
|
|
5楼#
发布于:2005-05-18 17:21
RtlInitUnicodeString (&str, FileObj->FileName.Buffer);
并没有实际分配新的内存,实际上只是FileObj->FileName.Buffer 赋予str.Buffer 不是你分配的内存,自然 用不着调用 RtlFreeUnicodeString(&str)来释放了; 象RtlAnsiStringToUnicodeString涉及到分配新的内存,才需要 调用RtlFreeUnicodeString了 |
|
6楼#
发布于:2005-05-18 17:34
哦。回去试试。谢谢。:)怎么给分?
|
|