(ql: Qiling, address: int, params)
| 79 | return ret |
| 80 | |
| 81 | def _WriteFile(ql: Qiling, address: int, params): |
| 82 | ret = 1 |
| 83 | hFile = params["hFile"] |
| 84 | lpBuffer = params["lpBuffer"] |
| 85 | nNumberOfBytesToWrite = params["nNumberOfBytesToWrite"] |
| 86 | lpNumberOfBytesWritten = params["lpNumberOfBytesWritten"] |
| 87 | #lpOverlapped = params["lpOverlapped"] |
| 88 | |
| 89 | if hFile == 0xfffffff5: |
| 90 | s = ql.mem.read(lpBuffer, nNumberOfBytesToWrite) |
| 91 | ql.os.stdout.write(s) |
| 92 | ql.os.stats.log_string(s.decode()) |
| 93 | ql.mem.write_ptr(lpNumberOfBytesWritten, nNumberOfBytesToWrite) |
| 94 | else: |
| 95 | f = ql.os.handle_manager.get(hFile) |
| 96 | if f is None: |
| 97 | # Invalid handle |
| 98 | ql.os.last_error = 0xffffffff |
| 99 | return 0 |
| 100 | else: |
| 101 | f = f.obj |
| 102 | buffer = ql.mem.read(lpBuffer, nNumberOfBytesToWrite) |
| 103 | f.write(bytes(buffer)) |
| 104 | ql.mem.write_ptr(lpNumberOfBytesWritten, nNumberOfBytesToWrite, 4) |
| 105 | return ret |
| 106 | |
| 107 | @winsdkapi(cc=STDCALL, params={ |
| 108 | 'hFile' : HANDLE, |
no test coverage detected