Как скопировать файл?

Тема в разделе "WASM.NT.KERNEL", создана пользователем 2FED, 16 мар 2008.

  1. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    Как узнать где конец файла?
    как узнать сколько байт реально прочитано функцией ZwReadFile?
    А может в ядре уже готовая функция есть =)?
    Код (Text):
    1.     InitializeObjectAttributes addr oa, addr l_filein, \
    2.         OBJ_CASE_INSENSITIVE + OBJ_KERNEL_HANDLE, NULL, NULL
    3.  
    4.     invoke ZwCreateFile, addr hFileRead, FILE_READ_DATA+SYNCHRONIZE, addr oa, addr iosb, \
    5.         0, 0, FILE_SHARE_READ, FILE_OPEN, FILE_SYNCHRONOUS_IO_NONALERT, NULL, 0
    6.  
    7.     InitializeObjectAttributes addr oa, addr l_fileout, \
    8.         OBJ_CASE_INSENSITIVE + OBJ_KERNEL_HANDLE, NULL, NULL
    9.  
    10.     invoke ZwCreateFile, addr hFileWrite, FILE_WRITE_DATA+SYNCHRONIZE, addr oa, addr iosb, \
    11.         0, 0, FILE_SHARE_READ, FILE_CREATE, FILE_SYNCHRONOUS_IO_NONALERT, NULL, 0
    12.  
    13.  
    14.      invoke ZwReadFile, hFileRead, 0, NULL, NULL, addr iosb,addr buf, 1024,0, NULL
    15.      invoke ZwWriteFile, hFileWrite, 0, NULL, NULL, addr iosb,addr buf, 1024,0, NULL
     
  2. Hmm

    Hmm New Member

    Публикаций:
    0
    Регистрация:
    22 ноя 2006
    Сообщения:
    162
    Извиняюсь , я в r0 пока не очень . Но в r3 для этого вроде есть
    GetFileSize . Разве в ядре нет аналога ?
     
  3. 0x56

    0x56 New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2008
    Сообщения:
    63
    Прямого аналога функции CopyFile точно нет.
    А получить размер файла пожалуйста - ZwQueryInformationFile(FileStandardInformation).
    Насчёт сколько прочитано:
     
  4. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    Спасибо, как то про IoStatusBlock не подумал
     
  5. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    Код (Text):
    1. next:
    2.      invoke ZwReadFile, hFileRead, 0, NULL, NULL, addr iosb,addr buf, 1024,0, NULL
    3.      invoke ZwWriteFile, hFileWrite, 0, NULL, NULL, addr iosb,addr buf, iosb.Information,0, NULL
    4.      cmp iosb.Information,0
    5.      jnz next
    Во вот так всё работает :)