From 502a1b453d18120a9167dc1e975ca2bcc7081d32 Mon Sep 17 00:00:00 2001
From: "U-GER\\rwittman" <rwittman@rwittman-MOBL2.ger.corp.intel.com>
Date: Wed, 29 Jul 2020 14:48:57 +0200
Subject: [PATCH] File changes 1st set

---
 ivshmem/Device.c              |  2 +-
 ivshmem/ivshmem.inf           |  1 +
 ivshmem/test/ivshmem-test.cpp | 21 ++++++++++++++-------
 3 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/ivshmem/Device.c b/ivshmem/Device.c
index 81678ab9..21e8eaad 100755
--- a/ivshmem/Device.c
+++ b/ivshmem/Device.c
@@ -198,7 +198,7 @@ NTSTATUS IVSHMEMEvtDevicePrepareHardware(_In_ WDFDEVICE Device, _In_ WDFCMRESLIS
                     break;
                 }
             }
-            DEBUG_INFO("memIndex = %d va = %p mdl = %p", memIndex, deviceContext->shmemAddr.VirtualAddress, deviceContext->shmemMDL);
+            DEBUG_INFO("memIndex = %d pa = %p mdl = %p", memIndex, deviceContext->shmemAddr.PhysicalAddress, deviceContext->shmemMDL);
             ++memIndex;
             continue;
         }
diff --git a/ivshmem/ivshmem.inf b/ivshmem/ivshmem.inf
index a1925fae..3c479404 100644
--- a/ivshmem/ivshmem.inf
+++ b/ivshmem/ivshmem.inf
@@ -20,6 +20,7 @@ ClassGuid={4d36e97d-e325-11ce-bfc1-08002be10318}
 Provider=%VENDOR%
 CatalogFile=ivshmem.cat
 DriverVer=01/01/2008,0.0.0.1 ; this line will be replaced with stampinf
+PnPLockdown=1
 
 [DestinationDirs]
 DefaultDestDir = 12
diff --git a/ivshmem/test/ivshmem-test.cpp b/ivshmem/test/ivshmem-test.cpp
index b21a50e2..9db4c506 100644
--- a/ivshmem/test/ivshmem-test.cpp
+++ b/ivshmem/test/ivshmem-test.cpp
@@ -2,6 +2,9 @@
 //
 
 #include "stdafx.h"
+#include <string>
+#include <chrono>
+#include <thread>
 
 #define TEST_START(name) printf("Test: %s...", name)
 #define TEST_PASS() printf("PASS\n")
@@ -125,7 +128,7 @@ int main()
 		TEST_PASS();
 
 		TEST_START("Mapping more then once fails");
-		if (DeviceIoControl(devHandle, IOCTL_IVSHMEM_REQUEST_MMAP, NULL, 0, &map, sizeof(IVSHMEM_MMAP), &ulReturnedLength, NULL))
+		if (DeviceIoControl(devHandle, IOCTL_IVSHMEM_REQUEST_MMAP, &config, sizeof(IVSHMEM_MMAP_CONFIG), &map, sizeof(IVSHMEM_MMAP), &ulReturnedLength, NULL))
 		{
 			TEST_FAIL("mapping succeeded, this should not happen!");
 			break;
@@ -139,7 +142,7 @@ int main()
 			TEST_FAIL("Failed to open second handle");
 			break;
 		}
-		if (DeviceIoControl(devHandle, IOCTL_IVSHMEM_REQUEST_MMAP, NULL, 0, &map, sizeof(IVSHMEM_MMAP), &ulReturnedLength, NULL))
+		if (DeviceIoControl(devHandle, IOCTL_IVSHMEM_REQUEST_MMAP, &config, sizeof(IVSHMEM_MMAP_CONFIG), &map, sizeof(IVSHMEM_MMAP), &ulReturnedLength, NULL))
 		{
 			TEST_FAIL("mapping succeeded, this should not happen!");
 			break;
@@ -174,9 +177,10 @@ int main()
 			TEST_FAIL("Failed to re-open handle");
 			break;
 		}
-		if (!DeviceIoControl(devHandle, IOCTL_IVSHMEM_REQUEST_MMAP, NULL, 0, &map, sizeof(IVSHMEM_MMAP), &ulReturnedLength, NULL))
+
+		if (!DeviceIoControl(devHandle, IOCTL_IVSHMEM_REQUEST_MMAP, &config, sizeof(IVSHMEM_MMAP_CONFIG), &map, sizeof(IVSHMEM_MMAP), &ulReturnedLength, NULL))
 		{
-			TEST_FAIL("Mapping failed!");
+			TEST_FAIL("Mapping for new handle failed!");
 			break;
 		}
 		TEST_PASS();
@@ -190,12 +194,16 @@ int main()
 			TEST_FAIL("Failed to re-open handle");
 			break;
 		}
-		if (!DeviceIoControl(devHandle, IOCTL_IVSHMEM_REQUEST_MMAP, NULL, 0, &map, sizeof(IVSHMEM_MMAP), &ulReturnedLength, NULL))
+
+		IVSHMEM_MMAP map2;
+		ZeroMemory(&map2, sizeof(IVSHMEM_MMAP));
+		if (!DeviceIoControl(devHandle, IOCTL_IVSHMEM_REQUEST_MMAP, &config, sizeof(IVSHMEM_MMAP_CONFIG), &map2, sizeof(IVSHMEM_MMAP), &ulReturnedLength, NULL))
 		{
-			TEST_FAIL("Mapping failed!");
+			TEST_FAIL("Mapping after close failed!");
 			break;
 		}
 
+		map = map2;
 		bool fail = false;
 		unsigned char *data = (unsigned char *)map.ptr;
 		for (UINT64 i = 0; i < map.size; ++i)
@@ -237,7 +245,6 @@ int main()
 			CloseHandle(event.event);
 			TEST_PASS();
 		}
-
 		break;
 	}
 
-- 
2.17.0

