xiabl
驱动牛犊
驱动牛犊
  • 注册日期2005-10-24
  • 最后登录2010-05-20
  • 粉丝0
  • 关注0
  • 积分221分
  • 威望77点
  • 贡献值0点
  • 好评度71点
  • 原创分0分
  • 专家分0分
阅读:1108回复:1

SfAttachToMountedVolume

楼主#
更多 发布于:2007-03-15 12:30
  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:\\";
有什么区别么?
小桥流水人家
xiabl
驱动牛犊
驱动牛犊
  • 注册日期2005-10-24
  • 最后登录2010-05-20
  • 粉丝0
  • 关注0
  • 积分221分
  • 威望77点
  • 贡献值0点
  • 好评度71点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-03-15 16:43
没人关注么?
小桥流水人家
游客

返回顶部