ObReferenceObjectByHandle

Discussion in 'WASM.WIN32' started by dmk, Mar 25, 2006.

  1. dmk

    dmk New Member

    Blog Posts:
    0
    есть такая проблема:

    из user-mode отурывается файл:

    ::CreateFile(lpszFileName, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, 0);



    далее полученный хэндл передается драйверу. в драйвере пытаюсь сделать ObReferenceObjectByHandle, и получаю BSOD.

    но не всегда :dntknw:

    т.е. если в драйвере сделать

    status = ObReferenceObjectByHandle(hFileToAttach,FILE_ALL_ACCESS,*IoFileObjectT ype,UserMode,(PVOID*)&fileObjectAttached,&handleInformation );

    то никакого BSOD не будет. status возвращается STATUS_ACCESS_DENIED и все нормально (т.е. ничего не работает как должно :))



    BSOD получается только при попытке установить права в SYNCHRONIZE или FILE_READ_DATA или FILE_GENERIC_READ



    подскажите плз. где собака порылась...
     
  2. cresta

    cresta Active Member

    Blog Posts:
    0
    ObReferenceObjectByHandle:

    Lower-level drivers should specify KernelMode.
     
  3. dmk

    dmk New Member

    Blog Posts:
    0
    при замене UserMode на KernelMode драйвер валится при любой комбинации прав :dntknw:

    в BSOD ошибка IRQL_NOT_LESS_OR_EQUAL

    KeGetCurrentIrql возвращает 0



    все-таки где-то что-то не так, а вот что и где - не могу найти :dntknw:
     
  4. dmk

    dmk New Member

    Blog Posts:
    0
    спасибо за помощь!



    проблема решена!



    ЗЫ. нужно спать больше, и читать внимательнее документацию :)
     
  5. WaterGhost

    WaterGhost New Member

    Blog Posts:
    0
    Вот народ, нет бы решение вопроса скинуть. А все только "спасибо, вопрос снят" }=|