Changeset 9582 in vbox for trunk/src/VBox/Runtime/r0drv
- Timestamp:
- Jun 10, 2008 11:38:18 PM (17 years ago)
- Location:
- trunk/src/VBox/Runtime/r0drv/nt
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/r0drv/nt/initterm-r0drv-nt.cpp
r9563 r9582 53 53 RTCPUSET g_rtMpNtCpuSet; 54 54 55 /** ExSetTimerResolution, introduced in W2K. */ 56 PFNMYEXSETTIMERRESOLUTION g_pfnrtNtExSetTimerResolution; 57 /** KeFlushQueuedDpcs, introduced in XP. */ 58 PFNMYKEFLUSHQUEUEDDPCS g_pfnrtNtKeFlushQueuedDpcs; 59 55 60 56 61 int rtR0InitNative(void) … … 62 67 RTCpuSetEmpty(&g_rtMpNtCpuSet); 63 68 RTCpuSetFromU64(&g_rtMpNtCpuSet, ActiveProcessors); 69 70 /* 71 * Initialize the function pointers. 72 */ 73 UNICODE_STRING RoutineName; 74 RtlInitUnicodeString(&RoutineName, L"ExSetTimerResolution"); 75 g_pfnrtNtExSetTimerResolution = (PFNMYEXSETTIMERRESOLUTION)MmGetSystemRoutineAddress(&RoutineName); 76 77 RtlInitUnicodeString(&RoutineName, L"KeFlushQueuedDpcs"); 78 g_pfnrtNtKeFlushQueuedDpcs = (PFNMYKEFLUSHQUEUEDDPCS)MmGetSystemRoutineAddress(&RoutineName); 79 64 80 65 81 #if 0 /* W2K8 support */ -
trunk/src/VBox/Runtime/r0drv/nt/internal-r0drv-nt.h
r9563 r9582 36 36 __BEGIN_DECLS 37 37 38 /******************************************************************************* 39 * Structures and Typedefs * 40 *******************************************************************************/ 41 typedef ULONG (__stdcall *PFNMYEXSETTIMERRESOLUTION)(ULONG, BOOLEAN); 42 typedef VOID (__stdcall *PFNMYKEFLUSHQUEUEDDPCS)(VOID); 43 38 44 39 45 /******************************************************************************* … … 41 47 *******************************************************************************/ 42 48 extern RTCPUSET g_rtMpNtCpuSet; 49 extern PFNMYEXSETTIMERRESOLUTION g_pfnrtNtExSetTimerResolution; 50 extern PFNMYKEFLUSHQUEUEDDPCS g_pfnrtNtKeFlushQueuedDpcs; 43 51 44 52 -
trunk/src/VBox/Runtime/r0drv/nt/mp-r0drv-nt.cpp
r9563 r9582 188 188 189 189 /* KeFlushQueuedDpcs is not present in Windows 2000; import it dynamically so we can just fail this call. */ 190 UNICODE_STRING RoutineName; 191 RtlInitUnicodeString(&RoutineName, L"KeFlushQueuedDpcs"); 192 VOID (*pfnKeFlushQueuedDpcs)(VOID) = (VOID (*)(VOID))MmGetSystemRoutineAddress(&RoutineName); 193 if (!pfnKeFlushQueuedDpcs) 190 if (!g_pfnrtNtKeFlushQueuedDpcs) 194 191 return VERR_NOT_SUPPORTED; 195 192 … … 258 255 259 256 /* Flush all DPCs and wait for completion. (can take long!) */ 260 pfnKeFlushQueuedDpcs();257 g_pfnrtNtKeFlushQueuedDpcs(); 261 258 262 259 ExFreePool(pArgs);
Note:
See TracChangeset
for help on using the changeset viewer.