IRP_MJ_SCSI -> Имя файла
От: cppboris  
Дата: 27.06.06 12:56
Оценка:
Привет!

Возник вопрос, надеюсь Вы поможете найти на него ответ

Короче говоря, есть Lower Filter Driver для DiskDrive class.
В фильтре обрабатывается запрос IRP_MJ_SCSI, и в зависимости от того, что происходит, чтение или запись, выполняются некоторые действия:
NTSTATUS STDCALL
ScsiHandler(IN PDEVICE_OBJECT DeviceObject,
            IN PIRP Irp)
{
   PDEVICE_EXTENSION DeviceExtension;
   PIO_STACK_LOCATION Stack;
   PSCSI_REQUEST_BLOCK Srb;
   NTSTATUS Status;

   DeviceExtension = DeviceObject->DeviceExtension;

   Stack = IoGetCurrentIrpStackLocation(Irp);
   Srb = Stack->Parameters.Scsi.Srb;

   if (Srb->Function == SRB_FUNCTION_EXECUTE_SCSI)
   {
      PCDB Cdb = (PCDB)Srb->Cdb;

      switch (Cdb->CDB10.OperationCode)
      {
         case SCSIOP_READ:
            ...
            break;

         case SCSIOP_WRITE:
            ...
            break;

         default:
            DPRINT("Cdb->CDB10.OperationCode = %x", Cdb->CDB10.OperationCode);
            IoSkipCurrentIrpStackLocation(Irp);    
            Status = IoCallDriver(DeviceExtension->TargetDeviceObject, Irp);
      }
   }

   return Status;
}


Так вот вопрос заключается в том, можно ли (и если можно то как) здесь узнать имя файла, данные которого сейчас читают?
Или пишут

IO_STACK_LOCATION::FileObject нулевой, насколько я понял этот указатель используется только в случае Upper Filter (?)

Спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.