- C/C++ code
#pragma INITCODENTSTATUS CreateDevice(IN PDRIVER_OBJECT pDriverObject){ //创建设备名称 UNICODE_STRING devName; RtlInitUnicodeString(&devName,L"\\Device\\MyFileDevice");//这里据我了解是初始化局部内存,然后#pragma INITCODE会因为这段卸载局部内存。IoCreateDevice书上都是这么写,那就是正常工作,但我新手,如果遇到别的函数如何区别下呢。。。 //创建设备 status = IoCreateDevice(pDriverObject,sizeof(DEVICE_EXTENSION),&devName, FILE_DEVICE_UNKNOWN, 0,TRUE, &pDevObj); ...... pDevExt = (PDEVICE_EXTENSION)pDevObj->DeviceExtension; pDevExt->pDevice = pDevObj; pDevExt->ustrDeviceName = devName; //创建符号链接 UNICODE_STRING symLinkName; RtlInitUnicodeString(&symLinkName,L"\\??\\HelloDDK"); //这里是局部内存,一会儿难道不会释放吗? pDevExt->ustrSymLinkName = symLinkName;我看的是张帆的<<Windows驱动开发技术详解>>求大神指导。。。
------解决方案--------------------
因为字符串常量是存储在静态存储区的 在程序运行阶段是不会改变的
结贴吧
------解决方案--------------------