Как юзать NtNotifyChangeDirectoryFile?

Тема в разделе "WASM.BEGINNERS", создана пользователем Flasher, 9 окт 2009.

  1. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Необходимо проконтролировать директорию чтобы во время работы программы туда никакие файлы не кидали. Не совем понятно как юзать данную функцию.
    Код (Text):
    1. start proc
    2. local hdir:dword
    3. local iosb:IO_STATUS_BLOCK
    4.      invoke CreateFileW,$CTW0("C:\\test"),GENERIC_READ or SYNCHRONIZE,FILE_SHARE_READ,0,OPEN_EXISTING,FILE_FLAG_BACKUP_SEMANTICS or FILE_FLAG_OVERLAPPED,0
    5.      .if eax != -1
    6.         mov hdir,eax
    7.         invoke ZwNotifyChangeDirectoryFile,hdir,0,0,0,addr iosb,addr Bufffer,sizeof Bufffer,FILE_NOTIFY_CHANGE_CREATION,0
    8.         invoke MessageBox,0,0,0,0
    9.         invoke CloseHandle,hdir
    10.      .endif
    11.      invoke ExitProcess,0
    12. start endp
    Что не так делаю?
     
  2. TriX

    TriX Member

    Публикаций:
    0
    Регистрация:
    7 мар 2008
    Сообщения:
    68
    Не в обиду, но для чего все эти лишние телодвижения с недокументированными функциями? ИМХО, ошибки только плодить. Obtaining Directory Change Notifications
     
  3. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Нужно именно на уровне сервисов..
     
  4. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    GetLastError что показывает?
     
  5. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Товарищ уже подсказал.
    Вот, могет кому понадобиться:
    Код (Text):
    1. start proc
    2. local hdir:dword
    3. local iosb:IO_STATUS_BLOCK
    4. local oa:OBJECT_ATTRIBUTES
    5.  
    6.      invoke CreateFileW,$CTW0("C:\\test"),GENERIC_READ or SYNCHRONIZE,FILE_SHARE_READ,0,OPEN_EXISTING,FILE_FLAG_BACKUP_SEMANTICS or FILE_FLAG_OVERLAPPED,0
    7.      .if eax == 0
    8.         mov hdir,eax
    9.         invoke ZwNotifyChangeDirectoryFile,hdir,0,0,0,addr iosb,addr Bufffer,sizeof Bufffer,FILE_NOTIFY_CHANGE_FILE_NAME,0
    10. @@:
    11.         invoke ZwWaitForSingleObject,hdir,INFINITE,0
    12.  
    13.         invoke ZwNotifyChangeDirectoryFile,hdir,0,0,0,addr iosb,addr Bufffer,sizeof Bufffer,3,1
    14.        
    15.         invoke MessageBox,0,0,0,0
    16.        
    17.         jmp @B
    18.         invoke CloseHandle,hdir
    19.      .endif
    20.      invoke ExitProcess,0
    21. start endp