77 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C++
		
	
	
	
| //////////////////////////////////////////////////////////////////////////////
 | |
| //
 | |
| //  Detour Test Program (sleepnew.cpp of sleepnew.exe)
 | |
| //
 | |
| //  Microsoft Research Detours Package
 | |
| //
 | |
| //  Copyright (c) Microsoft Corporation.  All rights reserved.
 | |
| //
 | |
| 
 | |
| #include <windows.h>
 | |
| #include <stdio.h>
 | |
| #include "slept.h"
 | |
| 
 | |
| #include "verify.cpp"
 | |
| 
 | |
| int __cdecl main(void)
 | |
| {
 | |
|     printf("sleepnew.exe: Starting.\n");
 | |
|     Verify("SleepEx", (PBYTE)SleepEx);
 | |
|     printf("\n");
 | |
|     fflush(stdout);
 | |
| 
 | |
|     printf("sleepnew.exe: Calling Sleep for 1 second.\n");
 | |
|     Sleep(1000);
 | |
|     printf("sleepnew.exe: Calling SleepEx for 1 second.\n");
 | |
|     SleepEx(1000, true);
 | |
|     printf("sleepnew.exe: Calling Sleep again for 1 second.\n");
 | |
|     Sleep(1000);
 | |
|     printf("sleepnew.exe: Calling TimedSleep for 1 second.\n");
 | |
|     TimedSleepEx(1000, FALSE);
 | |
|     printf("sleepnew.exe: Calling UntimedSleep for 1 second.\n");
 | |
|     UntimedSleepEx(1000, FALSE);
 | |
|     printf("sleepnew.exe: Done sleeping.\n\n");
 | |
| 
 | |
| #if 0
 | |
|     // This code enumerates the virtual address space and attempts to reserve
 | |
|     // all unused space below 8GB.
 | |
|     //
 | |
|     for (PBYTE pbTry = (PBYTE)0x10000; pbTry < (PBYTE)0x200000000;) {
 | |
|         MEMORY_BASIC_INFORMATION mbi;
 | |
| 
 | |
|         if (!VirtualQuery(pbTry, &mbi, sizeof(mbi))) {
 | |
|             break;
 | |
|         }
 | |
| 
 | |
|         if (mbi.State == MEM_FREE && mbi.RegionSize > 0x10000) {
 | |
|             PBYTE pbBase = (PBYTE)((((ULONG_PTR)pbTry) + 0xffff) & 0xffffffffffff0000);
 | |
|             SIZE_T cbTry = mbi.RegionSize & 0xffffffffffff0000;
 | |
|             if (cbTry > 0x40000000) {
 | |
|                 cbTry = 0x40000000;
 | |
|             }
 | |
|             PVOID pvRegion = VirtualAlloc(pbBase, cbTry,
 | |
|                                           MEM_RESERVE,
 | |
|                                           PAGE_NOACCESS);
 | |
|             if (pvRegion == NULL) {
 | |
|                 printf("---%p..%p failed.\n", pbBase, mbi.RegionSize - 0x10000);
 | |
|             }
 | |
|             else {
 | |
|                 continue;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         printf("   %p..%p %6x [%p]\n",
 | |
|                mbi.BaseAddress, (PBYTE)mbi.BaseAddress + mbi.RegionSize - 1,
 | |
|                mbi.State,
 | |
|                pbTry);
 | |
| 
 | |
|         pbTry = (PBYTE)mbi.BaseAddress + mbi.RegionSize;
 | |
|     }
 | |
| #endif
 | |
| 
 | |
|     printf("sleepnew.exe: GetSleptTicks() = %ld\n\n", GetSleptTicks());
 | |
|     return 0;
 | |
| }
 | |
| //
 | |
| ///////////////////////////////////////////////////////////////// End of File.
 |