Как узнать где конец файла? как узнать сколько байт реально прочитано функцией ZwReadFile? А может в ядре уже готовая функция есть =)? Код (Text): InitializeObjectAttributes addr oa, addr l_filein, \ OBJ_CASE_INSENSITIVE + OBJ_KERNEL_HANDLE, NULL, NULL invoke ZwCreateFile, addr hFileRead, FILE_READ_DATA+SYNCHRONIZE, addr oa, addr iosb, \ 0, 0, FILE_SHARE_READ, FILE_OPEN, FILE_SYNCHRONOUS_IO_NONALERT, NULL, 0 InitializeObjectAttributes addr oa, addr l_fileout, \ OBJ_CASE_INSENSITIVE + OBJ_KERNEL_HANDLE, NULL, NULL invoke ZwCreateFile, addr hFileWrite, FILE_WRITE_DATA+SYNCHRONIZE, addr oa, addr iosb, \ 0, 0, FILE_SHARE_READ, FILE_CREATE, FILE_SYNCHRONOUS_IO_NONALERT, NULL, 0 invoke ZwReadFile, hFileRead, 0, NULL, NULL, addr iosb,addr buf, 1024,0, NULL invoke ZwWriteFile, hFileWrite, 0, NULL, NULL, addr iosb,addr buf, 1024,0, NULL
Извиняюсь , я в r0 пока не очень . Но в r3 для этого вроде есть GetFileSize . Разве в ядре нет аналога ?
Прямого аналога функции CopyFile точно нет. А получить размер файла пожалуйста - ZwQueryInformationFile(FileStandardInformation). Насчёт сколько прочитано:
Код (Text): next: invoke ZwReadFile, hFileRead, 0, NULL, NULL, addr iosb,addr buf, 1024,0, NULL invoke ZwWriteFile, hFileWrite, 0, NULL, NULL, addr iosb,addr buf, iosb.Information,0, NULL cmp iosb.Information,0 jnz next Во вот так всё работает