Сделать большой файл

Тема в разделе "WASM.WIN32", создана пользователем Entropy, 3 фев 2023.

  1. Entropy

    Entropy Member

    Публикаций:
    0
    Регистрация:
    23 авг 2020
    Сообщения:
    185
    Я хотел бы сгенерировать большой файл размером 250 мб,я планирую сделать с помощью цикличного использования функции WriteFile,но проблема втом что функция отрабатывает один раз,у функции есть последний аргумент указатель на структуру OVERLAPPED может с ним нужно что то сделать

    Код (ASM):
    1. format PE64 gui
    2.  
    3. include 'win64a.inc'
    4.  
    5.  
    6.  
    7. section '.text' code readable executable
    8.  
    9. sub rsp,8
    10.  
    11. invoke CreateFileA,addr namef,GENERIC_ALL,FILE_SHARE_WRITE,0,CREATE_NEW,FILE_ATTRIBUTE_NORMAL,0
    12.  
    13. invoke,WriteFile,rax,addr bff,1024,addr sb,0
    14.  
    15. invoke,WriteFile,rax,addr bff,1024,addr sb,0
    16.  
    17.  
    18. invoke ExitProcess,0
    19.  
    20.  
    21. section '.data' data readable writeable
    22.  
    23.  
    24. bff  db 1024 dup(0)
    25. namef db 'def.bin',0
    26. sb dd 0
    27.  
    28. section '.idata' import data readable writeable
    29.  
    30. library kernel32,'kernel32.dll',\
    31.         user32,'user32.dll'
    32.  
    33.  
    34.  
    35. include 'api\kernel32.inc'
    36. include 'api\user32.inc'
     
  2. aa_dav

    aa_dav Active Member

    Публикаций:
    0
    Регистрация:
    24 дек 2008
    Сообщения:
    457
    Файл еще как минимум закрывать надо.
     
  3. Prober

    Prober Member

    Публикаций:
    0
    Регистрация:
    4 дек 2008
    Сообщения:
    43
    RAX вообще-то надо сохранить перед первым вызовом WriteFile() для использования в последующих.
     
  4. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    875
    Если нужен пустой файл с нулевыми байтами то не нужно писать в цикле, а нужно использовать SetEndOfFile:
    Код (ASM):
    1. invoke CreateFileA,addr namef,GENERIC_ALL,FILE_SHARE_WRITE,0,CREATE_NEW,FILE_ATTRIBUTE_NORMAL,0
    2. mov r13, rax
    3. invoke SetFilePointer, rax, 0xFA00000, 0, 0
    4. invoke SetEndOfFile, r13
    5. invoke CloseHandle, r13
     
    Entropy и R81... нравится это.
  5. Entropy

    Entropy Member

    Публикаций:
    0
    Регистрация:
    23 авг 2020
    Сообщения:
    185
    Prober, хорошо,я это учту