阅读:1108回复:1
SfAttachToMountedVolume
VOID
SfAttachToMountedVolume( ) { WCHAR filename[] = L"\\DosDevices\\A:\\"; UCHAR index = 2; UNICODE_STRING fileNameUnicodeString; NTSTATUS ntStatus; for( ;index < 26 ; index ++ ) { OBJECT_ATTRIBUTES objectAttributes; IO_STATUS_BLOCK ioStatus; HANDLE ntFileHandle; PFILE_OBJECT f ileObject; PDEVICE_OBJECT volumeDevice; filename[12] = (CHAR) ('A'+index); RtlInitUnicodeString( &fileNameUnicodeString, filename ); InitializeObjectAttributes( &objectAttributes, &fileNameUnicodeString, OBJ_CASE_INSENSITIVE|OBJ_KERNEL_HANDLE , NULL, NULL ); ntStatus = ZwCreateFile( &ntFileHandle, SYNCHRONIZE|FILE_ANY_ACCESS, &objectAttributes, &ioStatus, NULL, 0, FILE_SHARE_READ|FILE_SHARE_WRITE, F ILE_OPEN, FILE_SYNCHRONOUS_IO_NONALERT|FILE_DIRECTORY_FILE, NULL, 0 ); if( !NT_SUCCESS( ntStatus ) ) { continue; } ntStatus = ObReferenceObjectByHandle( ntFileHandle, FILE_READ_DATA, NULL, KernelMode, &fileObject, NULL ); if( !NT_SUCCESS( ntStatus )) { ZwClose( ntFileHandle ); continue; } volumeDevice = IoGetRelatedDeviceObject( fileObject ); if( !volumeDevice ) { ObDereferenceObject( fileObject ); ZwClose( ntFileHandle ); continue; } if( volumeDevice->DeviceType != FILE_DEVICE_DISK_FILE_SYSTEM ) { continue; } SfFsNotification( volumeDevice, TRUE ); } } 用filename[] = L"\\DosDevices\\A:";与 filename[] = L"\\DosDevices\\A:\\"; 有什么区别么? |
|
|
沙发#
发布于:2007-03-15 16:43
没人关注么?
|
|
|