阅读:1996回复:4
我这样用IoCreateSymbolicLink对吗?
NTSTATUS Wdm1AddDevice(IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT pdo)
{ DebugPrint(\"Add Device By MyDriver\"); NTSTATUS status; PDEVICE_OBJECT fdo; UNICODE_STRING DevName; status = IoCreateDevice (DriverObject, sizeof(WDM1_DEVICE_EXTENSION), NULL, FILE_DEVICE_UNKNOWN, 0, FALSE, &fdo); if( !NT_SUCCESS(status)) return status; PWDM1_DEVICE_EXTENSION dx = (PWDM1_DEVICE_EXTENSION)fdo->DeviceExtension; dx->fdo = fdo; status = IoRegisterDeviceInterface(pdo, &WDM1_GUID, NULL, &dx->ifSymLinkName); if( !NT_SUCCESS(status)) { IoDeleteDevice(fdo); return status; } IoSetDeviceInterfaceState(&dx->ifSymLinkName, TRUE); RtlInitUnicodeString(&DevName, L\"\\\\DosDevice\\\\SZMDev0\"); status = IoCreateSymbolicLink( &DevName, &dx->ifSymLinkName ); if (NT_SUCCESS(status)) { DebugPrint(\" ERROR! cannot creat a symboliclink name \"); } else DebugPrint(\"success create a symboliclink name\"); DebugPrint(\"the devname is %T\",&DevName); DebugPrint(\"ifSymbolicLinkName is %T\",&dx->ifSymLinkName); dx->NextStackDevice = IoAttachDeviceToDeviceStack(fdo,pdo); fdo->Flags |= DO_BUFFERED_IO|DO_POWER_PAGABLE; fdo->Flags &= ~DO_DEVICE_INITIALIZING; return STATUS_SUCCESS; } status = IoCreateSymbolicLink( &DevName, &dx->ifSymLinkName ); 运行结果status没有返回STATUS_SUCCESS。这是为什么呢?我这样用对吗? |
|
沙发#
发布于:2003-05-03 23:32
status = IoCreateDevice (DriverObject, |
|
板凳#
发布于:2003-05-05 23:52
WDM不使用IOCREATESYMBOLICLINK. 符合WDM规范的DRIVER使用PNP MANAGER的IoRegisterDeviceInterface/IoSetDeviceInterfaceState来处理SYMBOLIC LINK.
|
|
|
地板#
发布于:2003-05-06 09:26
感谢arthurtu的帮助,程序现在已经可以正常工作。主要原因在于我对有些概念的理解不对。表示感谢!
也感谢lu0老大的提示!我是初学,两种方法都想试试。以后肯定用你说的那种方法。 |
|
地下室#
发布于:2003-05-16 00:17
这对我们这些初学者很有提示
|
|