ДрвФильтр: Замапить шару на одном компе на несколько шар на другом...

Тема в разделе "WASM.NT.KERNEL", создана пользователем sasha_s, 31 мар 2009.

  1. sasha_s

    sasha_s New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2005
    Сообщения:
    165
    Адрес:
    Belarus
    Задача собственно такая: Замапить шару на одном компе сразу на несколько шар на другом (именно на несколько).
    Маппинг одной шары на другую не вызывает никаких проблем: подменяем поля в Data->Iopb->TargetFileObject

    Код (Text):
    1.         PFILE_OBJECT FileObject = pData->Iopb->TargetFileObject;
    2.         ...
    3.         FileObject->FileName.Buffer        = Buffer;
    4.         FileObject->FileName.MaximumLength = Real->MaximumLength;
    5.  
    6.         ...
    7.         memCopy(FileObject->FileName.Buffer, FileObject->FileName.MaximumLength, Real->Buffer, Real->Length);
    8.         ...
    9.         pData->IoStatus.Status = STATUS_REPARSE;
    10.         pData->IoStatus.Information = IO_REPARSE;
    где pData -- входной параметр в обработчик IRP_MJ_CREATE,
    Код (Text):
    1. FLT_PREOP_CALLBACK_STATUS OnPreCreate(PFLT_CALLBACK_DATA pData, PCFLT_RELATED_OBJECTS pObjects, PVOID *pPost)
    После сих манипуляций, система сама лезет туда, куда мы ей указали.

    Но вот что делать если нам надо перенаправить шару сразу на несколько других шар?
    Чую я что надо будет обрабатывать все IRP, и когда ситема получит последнюю запись -- то как-то самому получить содержимое остальных шар и выдать далее системе. На этом мои знания заканчиваются. Жду наставлений, нравоучений и прочих советов...