Invalidate physical memory passed to NtReadFile.

This commit is contained in:
gibbed 2016-06-18 18:26:04 -05:00
parent 23b72e4888
commit 85e38b7657
1 changed files with 8 additions and 0 deletions

View File

@ -194,6 +194,14 @@ dword_result_t NtReadFile(dword_t file_handle, dword_t event_handle,
if (XSUCCEEDED(result)) { if (XSUCCEEDED(result)) {
if (true || file->is_synchronous()) { if (true || file->is_synchronous()) {
// some games NtReadFile() directly into texture memory
// TODO(rick): better checking of physical address
if (buffer.guest_address() >= 0xA0000000) {
auto heap = kernel_memory()->LookupHeap(buffer.guest_address());
cpu::MMIOHandler::global_handler()->InvalidateRange(
heap->GetPhysicalAddress(buffer.guest_address()), buffer_length);
}
// Synchronous. // Synchronous.
size_t bytes_read = 0; size_t bytes_read = 0;
result = file->Read( result = file->Read(