Нужно распаковать сжатый zlib'ом массив на MASM, возможно есть API в системе для этого? http://www.winimage.com/zLibDll/index.html http://www.winimage.com/zLibDll/zlib125_masm_obj.zip Как эти объектники использовать в своем проекте? В общем подскажите самый оптимальный вариант.
Как вариант? imho так проще всего вообще зиповать (ну и раззиповать) их через vbs - скрипты. Может покажется несерьезным, но вот так работает. ))) Код (Text): ; from fakedminded/berniee [EOF-Project] .586 .model flat,stdcall option casemap:none include \masm32\include\kernel32.inc include \masm32\include\user32.inc include \masm32\include\windows.inc includelib \masm32\lib\kernel32.lib includelib \masm32\lib\user32.lib .data vbs db 'Dim oApp',13,10 db 'FileName = WScript.Arguments(0)',13,10 db 'ToBeZipped =WScript.Arguments(1)',13,10 db 'Set oApp = CreateObject("Shell.Application")',13,10 db 'oApp.NameSpace(FileName).CopyHere ToBeZipped',13,10 db 'Do Until oApp.NameSpace(FileName).items.Count = 1',13,10 db 'wScript.Sleep(100)',13,10,'Loop',13,10,0 zip_header db 80, 75, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 q_t db ' "',0 command db "wscript zip.vbs",0 vbs_file db "zip.vbs",0 zip_file db "packed.zip",0 slash db "\",0 .data? bwr dd ? buffer db 256 dup(?) buffer_ db 256 dup(?) .code start: invoke CreateFile,offset vbs_file,40000000h,0,0,2,0,0 push eax invoke lstrlen,offset vbs mov edx,[esp] invoke WriteFile,edx,offset vbs,eax,offset bwr,0 pop eax invoke CloseHandle,eax invoke CreateFile,offset zip_file,40000000h,0,0,2,0,0 push eax invoke WriteFile,eax,offset zip_header,22,offset bwr,0 pop eax invoke CloseHandle,eax invoke lstrcat,offset buffer,offset command ;lots of lstrcat() :/ invoke lstrcat,offset buffer,offset q_t invoke GetCurrentDirectory,256,offset buffer_ invoke lstrcat,offset buffer_,offset slash invoke lstrcat,offset buffer_,offset zip_file invoke lstrcat,offset buffer,offset buffer_ invoke lstrcat,offset buffer,offset q_t invoke lstrcat,offset buffer,offset q_t invoke RtlZeroMemory,offset buffer_,256 invoke GetModuleFileName,0,offset buffer_,256 invoke lstrcat,offset buffer,offset buffer_ invoke lstrcat,offset buffer,offset q_t invoke WinExec,offset buffer,0 invoke Sleep,1000 ;time for the script to start invoke DeleteFile,offset vbs_file invoke MessageBox,0,offset zip_header,offset buffer,0 exit: invoke ExitProcess,0 end start Но на машине нужно разрешить выполнение vbs - предварительно. )))
Есть LZInit, LZOpenFile, LZClose и LZRead, но они умеют только распаковку и никакого отношения к zlib не имеют. Зато присутствуют во всех версиях винды как минимум с 98 года прошлого тысячелетия и при том до сих пор не помечены как "obsolete". Архиватор тоже идёт с виндой и ныне называется cabarc.exe.