Changeset 25980 in vbox
- Timestamp:
- Jan 22, 2010 5:38:13 PM (15 years ago)
- Location:
- trunk/src/VBox/Additions/WINNT/Graphics/Miniport
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/WINNT/Graphics/Miniport/Makefile.kmk
r23452 r25980 66 66 endif 67 67 68 ifdef VBOXWDDM 69 SYSMODS += VBoxVideoWddm 70 VBoxVideoWddm_TEMPLATE = VBOXGUESTR0 71 ifdef VBOX_SIGN_ADDITIONS # (See the parent makefile.) 72 VBoxVideoWddm_NOINST = true 73 endif 74 VBoxVideoWddm_SDKS=WINDDKWLH 75 VBoxVideoWddm_DEFS += LOG_TO_BACKDOOR VBOX_WITH_8BPP_MODES 76 #VBoxVideoWddm_DEFS += LOG_ENABLED 77 VBoxVideoWddm_INCS += ../../include 78 VBoxVideoWddm_LDFLAGS.x86 += /Entry:DriverEntry@8 79 VBoxVideoWddm_LDFLAGS.amd64 += /Entry:DriverEntry 80 VBoxVideoWddm_SOURCES = \ 81 VBoxVideoHGSMI.cpp \ 82 VBoxVideo.cpp \ 83 wddm/VBoxVideoWddm.cpp \ 84 wddm/VBoxVideoWddm.def \ 85 wddm/VBoxVideoWddm.rc 86 #VBoxVideoWddm_LIBS.x86 += \ 87 # $(PATH_SDK_WINDDKWLH_LIB)/exsup.lib 88 VBoxVideoWddm_LIBS.x86 += \ 89 $(PATH_SDK_WINDDKWLH_LIB)/bufferoverflowu.lib 90 VBoxVideoWddm_LIBS = \ 91 $(PATH_SDK_WINDDKWLH_LIB)/ntoskrnl.lib \ 92 $(PATH_SDK_WINDDKWLH_LIB)/hal.lib \ 93 $(PATH_SDK_WINDDKWLH_LIB)/displib.lib \ 94 $(VBOX_LIB_VBGL_R0) \ 95 $(VBOX_LIB_IPRT_GUEST_R0_NT4) \ 96 $(VBOX_PATH_ADDITIONS_LIB)/HGSMIGuestR0Lib$(VBOX_SUFF_LIB) 97 98 VBoxVideoWddm_DEFS += VBOX_WITH_HGSMI VBOXWDDM 99 100 ifdef VBOX_WITH_VIDEOHWACCEL 101 VBoxVideoWddm_DEFS += VBOX_WITH_VIDEOHWACCEL 102 endif 103 104 endif 105 68 106 include $(KBUILD_PATH)/subfooter.kmk 69 107 -
trunk/src/VBox/Additions/WINNT/Graphics/Miniport/VBoxVideo.cpp
r24709 r25980 55 55 int vboxVbvaEnable (PDEVICE_EXTENSION pDevExt, ULONG ulEnable, VBVAENABLERESULT *pVbvaResult); 56 56 57 #ifndef VBOXWDDM 57 58 ULONG DriverEntry(IN PVOID Context1, IN PVOID Context2) 58 59 { … … 861 862 } 862 863 864 #endif 865 863 866 /* Computes the size of a framebuffer. DualView has a few framebuffers of the computed size. */ 864 867 void VBoxComputeFrameBufferSizes (PDEVICE_EXTENSION PrimaryExtension) … … 942 945 943 946 PVOID VideoRamBase = NULL; 947 ULONG VideoRamLength = ulSize; 948 VP_STATUS Status; 949 #ifndef VBOXWDDM 944 950 ULONG inIoSpace = 0; 945 ULONG VideoRamLength = ulSize; 946 947 VP_STATUS Status = VideoPortMapMemory (PrimaryExtension, FrameBuffer, 951 952 Status = VideoPortMapMemory (PrimaryExtension, FrameBuffer, 948 953 &VideoRamLength, &inIoSpace, 949 954 &VideoRamBase); 955 #else 956 VideoRamBase = MmMapIoSpace(FrameBuffer, 957 VideoRamLength, 958 MmNonCached); 959 Status = VideoRamBase ? NO_ERROR : ERROR_INVALID_PARAMETER; /*<- this is what VideoPortMapMemory returns according to the docs */ 960 #endif 950 961 951 962 if (Status == NO_ERROR) … … 959 970 } 960 971 961 void VBoxUnmapAdapterMemory (PDEVICE_EXTENSION PrimaryExtension, void **ppv )972 void VBoxUnmapAdapterMemory (PDEVICE_EXTENSION PrimaryExtension, void **ppv, ULONG ulSize) 962 973 { 963 974 dprintf(("VBoxVideo::VBoxMapAdapterMemory\n")); … … 965 976 if (*ppv) 966 977 { 978 #ifndef VBOXWDDM 967 979 VideoPortUnmapMemory(PrimaryExtension, *ppv, NULL); 980 #else 981 MmUnmapIoSpace(*ppv, ulSize); 982 #endif 968 983 } 969 984 … … 972 987 973 988 #ifndef VBOX_WITH_HGSMI 989 990 # ifdef VBOXWDDM 991 /* sanity check */ 992 # error WDDM is supported only for HGSMI-based driver 993 # endif 994 974 995 static void vboxQueryConf (PDEVICE_EXTENSION PrimaryExtension, uint32_t u32Index, ULONG *pulValue) 975 996 { … … 1247 1268 { 1248 1269 /* Unmap the memory if VBoxVideo is not supported. */ 1249 VBoxUnmapAdapterMemory (PrimaryExtension, &PrimaryExtension->u.primary.pvMiniportHeap );1250 VBoxUnmapAdapterMemory (PrimaryExtension, &PrimaryExtension->u.primary.pvAdapterInformation );1270 VBoxUnmapAdapterMemory (PrimaryExtension, &PrimaryExtension->u.primary.pvMiniportHeap, PrimaryExtension->u.primary.cbMiniportHeap); 1271 VBoxUnmapAdapterMemory (PrimaryExtension, &PrimaryExtension->u.primary.pvAdapterInformation, VBOX_VIDEO_ADAPTER_INFORMATION_SIZE); 1251 1272 } 1252 1273 … … 1254 1275 } 1255 1276 #endif /* !VBOX_WITH_HGSMI */ 1277 1278 #ifndef VBOXWDDM 1256 1279 1257 1280 VP_STATUS VBoxVideoFindAdapter(IN PVOID HwDeviceExtension, … … 1462 1485 } 1463 1486 1464 # if defined(VBOX_WITH_HGSMI) && defined(VBOX_WITH_VIDEOHWACCEL)1487 # if defined(VBOX_WITH_HGSMI) && defined(VBOX_WITH_VIDEOHWACCEL) 1465 1488 1466 1489 BOOLEAN VBoxVideoInterrupt(PVOID HwDeviceExtension) … … 1489 1512 return FALSE; 1490 1513 } 1491 # endif1492 1514 # endif /* #if defined(VBOX_WITH_HGSMI) && defined(VBOX_WITH_VIDEOHWACCEL) */ 1515 #endif /* #ifndef VBOXWDDM */ 1493 1516 /** 1494 1517 * Send a request to the host to make the absolute pointer visible … … 1522 1545 } 1523 1546 1547 #ifndef VBOXWDDM 1524 1548 /** 1525 1549 * VBoxVideoStartIO … … 2234 2258 VbglTerminate (); 2235 2259 2236 VBoxUnmapAdapterMemory (pDevExt, &pDevExt->u.primary.pvMiniportHeap );2237 VBoxUnmapAdapterMemory (pDevExt, &pDevExt->u.primary.pvAdapterInformation );2260 VBoxUnmapAdapterMemory (pDevExt, &pDevExt->u.primary.pvMiniportHeap, pDevExt->u.primary.cbMiniportHeap); 2261 VBoxUnmapAdapterMemory (pDevExt, &pDevExt->u.primary.pvAdapterInformation, VBVA_ADAPTER_INFORMATION_SIZE); 2238 2262 2239 2263 return TRUE; … … 2263 2287 return NO_ERROR; 2264 2288 } 2289 #endif /* #ifndef VBOXWDDM */ 2265 2290 2266 2291 /** … … 2297 2322 } 2298 2323 2324 #ifndef VBOXWDDM 2325 2299 2326 /** 2300 2327 * VBoxVideoSetCurrentMode … … 2326 2353 2327 2354 /* set the mode characteristics */ 2328 V ideoPortWritePortUshort((PUSHORT)VBE_DISPI_IOPORT_INDEX, VBE_DISPI_INDEX_XRES);2329 V ideoPortWritePortUshort((PUSHORT)VBE_DISPI_IOPORT_DATA, (USHORT)ModeInfo->VisScreenWidth);2330 V ideoPortWritePortUshort((PUSHORT)VBE_DISPI_IOPORT_INDEX, VBE_DISPI_INDEX_YRES);2331 V ideoPortWritePortUshort((PUSHORT)VBE_DISPI_IOPORT_DATA, (USHORT)ModeInfo->VisScreenHeight);2332 V ideoPortWritePortUshort((PUSHORT)VBE_DISPI_IOPORT_INDEX, VBE_DISPI_INDEX_BPP);2333 V ideoPortWritePortUshort((PUSHORT)VBE_DISPI_IOPORT_DATA, (USHORT)ModeInfo->BitsPerPlane);2355 VBoxVideoCmnPortWriteUshort((PUSHORT)VBE_DISPI_IOPORT_INDEX, VBE_DISPI_INDEX_XRES); 2356 VBoxVideoCmnPortWriteUshort((PUSHORT)VBE_DISPI_IOPORT_DATA, (USHORT)ModeInfo->VisScreenWidth); 2357 VBoxVideoCmnPortWriteUshort((PUSHORT)VBE_DISPI_IOPORT_INDEX, VBE_DISPI_INDEX_YRES); 2358 VBoxVideoCmnPortWriteUshort((PUSHORT)VBE_DISPI_IOPORT_DATA, (USHORT)ModeInfo->VisScreenHeight); 2359 VBoxVideoCmnPortWriteUshort((PUSHORT)VBE_DISPI_IOPORT_INDEX, VBE_DISPI_INDEX_BPP); 2360 VBoxVideoCmnPortWriteUshort((PUSHORT)VBE_DISPI_IOPORT_DATA, (USHORT)ModeInfo->BitsPerPlane); 2334 2361 /* enable the mode */ 2335 V ideoPortWritePortUshort((PUSHORT)VBE_DISPI_IOPORT_INDEX, VBE_DISPI_INDEX_ENABLE);2336 V ideoPortWritePortUshort((PUSHORT)VBE_DISPI_IOPORT_DATA, VBE_DISPI_ENABLED | VBE_DISPI_LFB_ENABLED);2362 VBoxVideoCmnPortWriteUshort((PUSHORT)VBE_DISPI_IOPORT_INDEX, VBE_DISPI_INDEX_ENABLE); 2363 VBoxVideoCmnPortWriteUshort((PUSHORT)VBE_DISPI_IOPORT_DATA, VBE_DISPI_ENABLED | VBE_DISPI_LFB_ENABLED); 2337 2364 /** @todo read from the port to see if the mode switch was successful */ 2338 2365 … … 2508 2535 return TRUE; 2509 2536 } 2510 2537 #endif /* ifndef VBOXWDDM */ 2511 2538 /* 2512 2539 * VBoxVideoSetColorRegisters … … 2534 2561 Entry++) 2535 2562 { 2536 V ideoPortWritePortUchar((PUCHAR)0x03c8, (UCHAR)Entry);2537 V ideoPortWritePortUchar((PUCHAR)0x03c9, ColorLookUpTable->LookupTable[Entry].RgbArray.Red);2538 V ideoPortWritePortUchar((PUCHAR)0x03c9, ColorLookUpTable->LookupTable[Entry].RgbArray.Green);2539 V ideoPortWritePortUchar((PUCHAR)0x03c9, ColorLookUpTable->LookupTable[Entry].RgbArray.Blue);2563 VBoxVideoCmnPortWriteUchar((PUCHAR)0x03c8, (UCHAR)Entry); 2564 VBoxVideoCmnPortWriteUchar((PUCHAR)0x03c9, ColorLookUpTable->LookupTable[Entry].RgbArray.Red); 2565 VBoxVideoCmnPortWriteUchar((PUCHAR)0x03c9, ColorLookUpTable->LookupTable[Entry].RgbArray.Green); 2566 VBoxVideoCmnPortWriteUchar((PUCHAR)0x03c9, ColorLookUpTable->LookupTable[Entry].RgbArray.Blue); 2540 2567 } 2541 2568 … … 2625 2652 else 2626 2653 { 2627 V ideoPortZeroMemory(&pVbvaResult, sizeof(VBVAENABLERESULT));2654 VBoxVideoCmnMemZero(&pVbvaResult, sizeof(VBVAENABLERESULT)); 2628 2655 } 2629 2656 … … 2694 2721 else 2695 2722 { 2696 V ideoPortZeroMemory(&pVbvaResult, sizeof(VBVAENABLERESULT));2723 VBoxVideoCmnMemZero(&pVbvaResult, sizeof(VBVAENABLERESULT)); 2697 2724 } 2698 2725 -
trunk/src/VBox/Additions/WINNT/Graphics/Miniport/VBoxVideo.h
r24709 r25980 25 25 26 26 #ifdef VBOX_WITH_HGSMI 27 #include <iprt/thread.h>27 //#include <iprt/thread.h> 28 28 29 29 #include <VBox/HGSMI/HGSMI.h> … … 33 33 34 34 RT_C_DECLS_BEGIN 35 #ifndef VBOXWDDM 35 36 #include "dderror.h" 36 37 #include "devioctl.h" … … 38 39 #include "ntddvdeo.h" 39 40 #include "video.h" 41 #else 42 # define VBOX_WITH_WORKAROUND_MISSING_PACK 43 # if (_MSC_VER >= 1400) && !defined(VBOX_WITH_PATCHED_DDK) 44 # define _InterlockedExchange _InterlockedExchange_StupidDDKVsCompilerCrap 45 # define _InterlockedExchangeAdd _InterlockedExchangeAdd_StupidDDKVsCompilerCrap 46 # define _InterlockedCompareExchange _InterlockedCompareExchange_StupidDDKVsCompilerCrap 47 # define _InterlockedAddLargeStatistic _InterlockedAddLargeStatistic_StupidDDKVsCompilerCrap 48 # define _interlockedbittestandset _interlockedbittestandset_StupidDDKVsCompilerCrap 49 # define _interlockedbittestandreset _interlockedbittestandreset_StupidDDKVsCompilerCrap 50 # define _interlockedbittestandset64 _interlockedbittestandset64_StupidDDKVsCompilerCrap 51 # define _interlockedbittestandreset64 _interlockedbittestandreset64_StupidDDKVsCompilerCrap 52 # pragma warning(disable : 4163) 53 # ifdef VBOX_WITH_WORKAROUND_MISSING_PACK 54 # pragma warning(disable : 4103) 55 # endif 56 # include <ntddk.h> 57 # pragma warning(default : 4163) 58 # ifdef VBOX_WITH_WORKAROUND_MISSING_PACK 59 # pragma pack() 60 # pragma warning(default : 4103) 61 # endif 62 # undef _InterlockedExchange 63 # undef _InterlockedExchangeAdd 64 # undef _InterlockedCompareExchange 65 # undef _InterlockedAddLargeStatistic 66 # undef _interlockedbittestandset 67 # undef _interlockedbittestandreset 68 # undef _interlockedbittestandset64 69 # undef _interlockedbittestandreset64 70 # else 71 # include <ntddk.h> 72 # endif 73 #include "dispmprt.h" 74 #include "ntddvdeo.h" 75 #include "dderror.h" 76 #endif 40 77 RT_C_DECLS_END 41 78 … … 70 107 #endif /* VBOX_WITH_HGSMI */ 71 108 109 /* common API types */ 110 #ifndef VBOXWDDM 111 typedef PSPIN_LOCK VBOXVCMNSPIN_LOCK, *PVBOXVCMNSPIN_LOCK; 112 typedef UCHAR VBOXVCMNIRQL, *PVBOXVCMNIRQL; 113 114 typedef PEVENT VBOXVCMNEVENT, *PVBOXVCMNEVENT; 115 #else 116 typedef KSPIN_LOCK VBOXVCMNSPIN_LOCK, *PVBOXVCMNSPIN_LOCK; 117 typedef KIRQL VBOXVCMNIRQL, *PVBOXVCMNIRQL; 118 119 typedef KEVENT VBOXVCMNEVENT, *PVBOXVCMNEVENT; 120 #endif 121 72 122 typedef struct _DEVICE_EXTENSION 73 123 { … … 117 167 volatile HGSMIHOSTFLAGS * pHostFlags; /* HGSMI host flags */ 118 168 volatile bool bHostCmdProcessing; 119 PSPIN_LOCK pSynchLock;169 VBOXVCMNSPIN_LOCK pSynchLock; 120 170 #endif 121 171 … … 148 198 /* The IO Port Number for guest commands. */ 149 199 RTIOPORT IOPortGuest; 150 200 # ifndef VBOXWDDM 151 201 /* Video Port API dynamically picked up at runtime for binary backwards compatibility with older NT versions */ 152 202 VBOXVIDEOPORTPROCS VideoPortProcs; 203 # endif 153 204 #endif /* VBOX_WITH_HGSMI */ 154 205 } primary; … … 177 228 extern "C" 178 229 { 230 #ifndef VBOXWDDM 231 /* XPDM-WDDM common API */ 232 233 typedef PEVENT VBOXVCMNEVENT, *PVBOXVCMNEVENT; 234 235 DECLINLINE(VOID) VBoxVideoCmnPortWriteUchar(IN PUCHAR Port, IN UCHAR Value) 236 { 237 VideoPortWritePortUchar(Port,Value); 238 } 239 240 DECLINLINE(VOID) VBoxVideoCmnPortWriteUshort(IN PUSHORT Port, IN USHORT Value) 241 { 242 VideoPortWritePortUshort(Port,Value); 243 } 244 245 DECLINLINE(VOID) VBoxVideoCmnPortWriteUlong(IN PULONG Port, IN ULONG Value) 246 { 247 VideoPortWritePortUlong(Port,Value); 248 } 249 250 DECLINLINE(UCHAR) VBoxVideoCmnPortReadUchar(IN PUCHAR Port) 251 { 252 return VideoPortReadPortUchar(Port); 253 } 254 255 DECLINLINE(USHORT) VBoxVideoCmnPortReadUshort(IN PUSHORT Port) 256 { 257 return VideoPortReadPortUshort(Port); 258 } 259 260 DECLINLINE(ULONG) VBoxVideoCmnPortReadUlong(IN PULONG Port) 261 { 262 return VideoPortReadPortUlong(Port); 263 } 264 265 DECLINLINE(VOID) VBoxVideoCmnMemZero(PVOID pvMem, ULONG cbMem) 266 { 267 VideoPortZeroMemory(pvMem, cbMem); 268 } 269 270 DECLINLINE(VOID) VBoxVideoCmnSpinLockAcquire(IN PDEVICE_EXTENSION pDeviceExtension, IN PVBOXVCMNSPIN_LOCK SpinLock, OUT PVBOXVCMNIRQL OldIrql) 271 { 272 pDeviceExtension->u.primary.VideoPortProcs.pfnAcquireSpinLock(pDeviceExtension, *SpinLock, OldIrql); 273 } 274 275 DECLINLINE(VOID) VBoxVideoCmnSpinLockAcquireAtDpcLevel(IN PDEVICE_EXTENSION pDeviceExtension, IN PVBOXVCMNSPIN_LOCK SpinLock) 276 { 277 pDeviceExtension->u.primary.VideoPortProcs.pfnAcquireSpinLockAtDpcLevel(pDeviceExtension, *SpinLock); 278 } 279 280 DECLINLINE(VOID) VBoxVideoCmnSpinLockRelease(IN PDEVICE_EXTENSION pDeviceExtension, IN PVBOXVCMNSPIN_LOCK SpinLock, IN VBOXVCMNIRQL NewIrql) 281 { 282 pDeviceExtension->u.primary.VideoPortProcs.pfnReleaseSpinLock(pDeviceExtension, *SpinLock, NewIrql); 283 } 284 285 DECLINLINE(VOID) VBoxVideoCmnSpinLockReleaseFromDpcLevel(IN PDEVICE_EXTENSION pDeviceExtension, IN PVBOXVCMNSPIN_LOCK SpinLock) 286 { 287 pDeviceExtension->u.primary.VideoPortProcs.pfnReleaseSpinLockFromDpcLevel(pDeviceExtension, *SpinLock); 288 } 289 290 DECLINLINE(VP_STATUS) VBoxVideoCmnSpinLockCreate(IN PDEVICE_EXTENSION pDeviceExtension, IN PVBOXVCMNSPIN_LOCK SpinLock) 291 { 292 return pDeviceExtension->u.primary.VideoPortProcs.pfnCreateSpinLock(pDeviceExtension, SpinLock); 293 } 294 295 DECLINLINE(VP_STATUS) VBoxVideoCmnSpinLockDelete(IN PDEVICE_EXTENSION pDeviceExtension, IN PVBOXVCMNSPIN_LOCK SpinLock) 296 { 297 return pDeviceExtension->u.primary.VideoPortProcs.pfnDeleteSpinLock(pDeviceExtension, *SpinLock); 298 } 299 300 DECLINLINE(LONG) VBoxVideoCmnEventSet(IN PDEVICE_EXTENSION pDeviceExtension, IN PVBOXVCMNEVENT pEvent) 301 { 302 return pDeviceExtension->u.primary.VideoPortProcs.pfnSetEvent(pDeviceExtension, *pEvent); 303 } 304 305 DECLINLINE(VP_STATUS) VBoxVideoCmnEventCreateNotification(IN PDEVICE_EXTENSION pDeviceExtension, IN PVBOXVCMNEVENT pEvent, IN BOOLEAN bSignaled) 306 { 307 ULONG fFlags = NOTIFICATION_EVENT; 308 if(bSignaled) 309 fFlags |= INITIAL_EVENT_SIGNALED; 310 311 return pDeviceExtension->u.primary.VideoPortProcs.pfnCreateEvent(pDeviceExtension, fFlags, NULL, pEvent); 312 } 313 314 DECLINLINE(VP_STATUS) VBoxVideoCmnEventDelete(IN PDEVICE_EXTENSION pDeviceExtension, IN PVBOXVCMNEVENT pEvent) 315 { 316 return pDeviceExtension->u.primary.VideoPortProcs.pfnDeleteEvent(pDeviceExtension, *pEvent); 317 } 318 319 DECLINLINE(PVOID) VBoxVideoCmnMemAllocNonPaged(IN PDEVICE_EXTENSION pDeviceExtension, IN SIZE_T NumberOfBytes, IN ULONG Tag) 320 { 321 return pDeviceExtension->u.primary.VideoPortProcs.pfnAllocatePool(pDeviceExtension, (VBOXVP_POOL_TYPE)VpNonPagedPool, NumberOfBytes, Tag); 322 } 323 324 DECLINLINE(VOID) VBoxVideoCmnMemFree(IN PDEVICE_EXTENSION pDeviceExtension, IN PVOID Ptr) 325 { 326 pDeviceExtension->u.primary.VideoPortProcs.pfnFreePool(pDeviceExtension, Ptr); 327 } 328 /* */ 179 329 180 330 RT_C_DECLS_BEGIN … … 214 364 ULONG HwId, 215 365 PVIDEO_POWER_MANAGEMENT VideoPowerControl); 216 217 BOOLEAN FASTCALL VBoxVideoSetCurrentMode(218 PDEVICE_EXTENSION DeviceExtension,219 PVIDEO_MODE RequestedMode,220 PSTATUS_BLOCK StatusBlock);221 222 BOOLEAN FASTCALL VBoxVideoResetDevice(223 PDEVICE_EXTENSION DeviceExtension,224 PSTATUS_BLOCK StatusBlock);225 226 BOOLEAN FASTCALL VBoxVideoMapVideoMemory(227 PDEVICE_EXTENSION DeviceExtension,228 PVIDEO_MEMORY RequestedAddress,229 PVIDEO_MEMORY_INFORMATION MapInformation,230 PSTATUS_BLOCK StatusBlock);231 232 BOOLEAN FASTCALL VBoxVideoUnmapVideoMemory(233 PDEVICE_EXTENSION DeviceExtension,234 PVIDEO_MEMORY VideoMemory,235 PSTATUS_BLOCK StatusBlock);236 237 BOOLEAN FASTCALL VBoxVideoQueryNumAvailModes(238 PDEVICE_EXTENSION DeviceExtension,239 PVIDEO_NUM_MODES Modes,240 PSTATUS_BLOCK StatusBlock);241 242 BOOLEAN FASTCALL VBoxVideoQueryAvailModes(243 PDEVICE_EXTENSION DeviceExtension,244 PVIDEO_MODE_INFORMATION ReturnedModes,245 PSTATUS_BLOCK StatusBlock);246 247 BOOLEAN FASTCALL VBoxVideoQueryCurrentMode(248 PDEVICE_EXTENSION DeviceExtension,249 PVIDEO_MODE_INFORMATION VideoModeInfo,250 PSTATUS_BLOCK StatusBlock);251 252 BOOLEAN FASTCALL VBoxVideoSetColorRegisters(253 PDEVICE_EXTENSION DeviceExtension,254 PVIDEO_CLUT ColorLookUpTable,255 PSTATUS_BLOCK StatusBlock);256 366 257 367 VP_STATUS VBoxVideoGetChildDescriptor( … … 263 373 PULONG pUnused); 264 374 375 376 void VBoxSetupVideoPortFunctions(PDEVICE_EXTENSION PrimaryExtension, 377 VBOXVIDEOPORTPROCS *pCallbacks, 378 PVIDEO_PORT_CONFIG_INFO pConfigInfo); 379 380 #else 381 382 /* XPDM-WDDM common API */ 383 DECLINLINE(VOID) VBoxVideoCmnPortWriteUchar(IN PUCHAR Port, IN UCHAR Value) 384 { 385 WRITE_PORT_UCHAR(Port,Value); 386 } 387 388 DECLINLINE(VOID) VBoxVideoCmnPortWriteUshort(IN PUSHORT Port, IN USHORT Value) 389 { 390 WRITE_PORT_USHORT(Port,Value); 391 } 392 393 DECLINLINE(VOID) VBoxVideoCmnPortWriteUlong(IN PULONG Port, IN ULONG Value) 394 { 395 WRITE_PORT_ULONG(Port,Value); 396 } 397 398 DECLINLINE(UCHAR) VBoxVideoCmnPortReadUchar(IN PUCHAR Port) 399 { 400 return READ_PORT_UCHAR(Port); 401 } 402 403 DECLINLINE(USHORT) VBoxVideoCmnPortReadUshort(IN PUSHORT Port) 404 { 405 return READ_PORT_USHORT(Port); 406 } 407 408 DECLINLINE(ULONG) VBoxVideoCmnPortReadUlong(IN PULONG Port) 409 { 410 return READ_PORT_ULONG(Port); 411 } 412 413 DECLINLINE(VOID) VBoxVideoCmnMemZero(PVOID pvMem, ULONG cbMem) 414 { 415 memset(pvMem, 0, cbMem); 416 } 417 418 DECLINLINE(VOID) VBoxVideoCmnSpinLockAcquire(IN PDEVICE_EXTENSION pDeviceExtension, IN PVBOXVCMNSPIN_LOCK SpinLock, OUT PVBOXVCMNIRQL OldIrql) 419 { 420 KeAcquireSpinLock(SpinLock, OldIrql); 421 } 422 423 DECLINLINE(VOID) VBoxVideoCmnSpinLockAcquireAtDpcLevel(IN PDEVICE_EXTENSION pDeviceExtension, IN PVBOXVCMNSPIN_LOCK SpinLock) 424 { 425 KeAcquireSpinLockAtDpcLevel(SpinLock); 426 } 427 428 DECLINLINE(VOID) VBoxVideoCmnSpinLockRelease(IN PDEVICE_EXTENSION pDeviceExtension, IN PVBOXVCMNSPIN_LOCK SpinLock, IN VBOXVCMNIRQL NewIrql) 429 { 430 KeReleaseSpinLock(SpinLock, NewIrql); 431 } 432 433 DECLINLINE(VOID) VBoxVideoCmnSpinLockReleaseFromDpcLevel(IN PDEVICE_EXTENSION pDeviceExtension, IN PVBOXVCMNSPIN_LOCK SpinLock) 434 { 435 KeReleaseSpinLockFromDpcLevel(SpinLock); 436 } 437 438 DECLINLINE(VP_STATUS) VBoxVideoCmnSpinLockCreate(IN PDEVICE_EXTENSION pDeviceExtension, IN PVBOXVCMNSPIN_LOCK SpinLock) 439 { 440 KeInitializeSpinLock(SpinLock); 441 return NO_ERROR; 442 } 443 444 DECLINLINE(VP_STATUS) VBoxVideoCmnSpinLockDelete(IN PDEVICE_EXTENSION pDeviceExtension, IN PVBOXVCMNSPIN_LOCK SpinLock) 445 { 446 return NO_ERROR; 447 } 448 449 DECLINLINE(LONG) VBoxVideoCmnEventSet(IN PDEVICE_EXTENSION pDeviceExtension, IN PVBOXVCMNEVENT pEvent) 450 { 451 return KeSetEvent(pEvent, 0, FALSE); 452 } 453 454 DECLINLINE(VP_STATUS) VBoxVideoCmnEventCreateNotification(IN PDEVICE_EXTENSION pDeviceExtension, IN PVBOXVCMNEVENT pEvent, IN BOOLEAN bSignaled) 455 { 456 KeInitializeEvent(pEvent, NotificationEvent, bSignaled); 457 return NO_ERROR; 458 } 459 460 DECLINLINE(VP_STATUS) VBoxVideoCmnEventDelete(IN PDEVICE_EXTENSION pDeviceExtension, IN PVBOXVCMNEVENT pEvent) 461 { 462 return NO_ERROR; 463 } 464 465 DECLINLINE(PVOID) VBoxVideoCmnMemAllocNonPaged(IN PDEVICE_EXTENSION pDeviceExtension, IN SIZE_T NumberOfBytes, IN ULONG Tag) 466 { 467 return ExAllocatePoolWithTag(NonPagedPool, NumberOfBytes, Tag); 468 } 469 470 DECLINLINE(VOID) VBoxVideoCmnMemFree(IN PDEVICE_EXTENSION pDeviceExtension, IN PVOID Ptr) 471 { 472 ExFreePool(Ptr); 473 } 474 475 /* */ 476 477 RT_C_DECLS_BEGIN 478 NTSTATUS 479 DriverEntry( 480 IN PDRIVER_OBJECT DriverObject, 481 IN PUNICODE_STRING RegistryPath 482 ); 483 RT_C_DECLS_END 484 #endif 485 486 BOOLEAN FASTCALL VBoxVideoSetCurrentMode( 487 PDEVICE_EXTENSION DeviceExtension, 488 PVIDEO_MODE RequestedMode, 489 PSTATUS_BLOCK StatusBlock); 490 491 BOOLEAN FASTCALL VBoxVideoResetDevice( 492 PDEVICE_EXTENSION DeviceExtension, 493 PSTATUS_BLOCK StatusBlock); 494 495 BOOLEAN FASTCALL VBoxVideoMapVideoMemory( 496 PDEVICE_EXTENSION DeviceExtension, 497 PVIDEO_MEMORY RequestedAddress, 498 PVIDEO_MEMORY_INFORMATION MapInformation, 499 PSTATUS_BLOCK StatusBlock); 500 501 BOOLEAN FASTCALL VBoxVideoUnmapVideoMemory( 502 PDEVICE_EXTENSION DeviceExtension, 503 PVIDEO_MEMORY VideoMemory, 504 PSTATUS_BLOCK StatusBlock); 505 506 BOOLEAN FASTCALL VBoxVideoQueryNumAvailModes( 507 PDEVICE_EXTENSION DeviceExtension, 508 PVIDEO_NUM_MODES Modes, 509 PSTATUS_BLOCK StatusBlock); 510 511 BOOLEAN FASTCALL VBoxVideoQueryAvailModes( 512 PDEVICE_EXTENSION DeviceExtension, 513 PVIDEO_MODE_INFORMATION ReturnedModes, 514 PSTATUS_BLOCK StatusBlock); 515 516 BOOLEAN FASTCALL VBoxVideoQueryCurrentMode( 517 PDEVICE_EXTENSION DeviceExtension, 518 PVIDEO_MODE_INFORMATION VideoModeInfo, 519 PSTATUS_BLOCK StatusBlock); 520 521 BOOLEAN FASTCALL VBoxVideoSetColorRegisters( 522 PDEVICE_EXTENSION DeviceExtension, 523 PVIDEO_CLUT ColorLookUpTable, 524 PSTATUS_BLOCK StatusBlock); 525 265 526 int VBoxMapAdapterMemory (PDEVICE_EXTENSION PrimaryExtension, 266 527 void **ppv, … … 269 530 270 531 void VBoxUnmapAdapterMemory (PDEVICE_EXTENSION PrimaryExtension, 271 void **ppv );532 void **ppv, ULONG ulSize); 272 533 273 534 void VBoxComputeFrameBufferSizes (PDEVICE_EXTENSION PrimaryExtension); … … 280 541 DECLINLINE(void) VBoxHGSMIHostWrite(PDEVICE_EXTENSION PrimaryExtension, ULONG data) 281 542 { 282 V ideoPortWritePortUlong((PULONG)PrimaryExtension->pPrimary->u.primary.IOPortHost, data);543 VBoxVideoCmnPortWriteUlong((PULONG)PrimaryExtension->pPrimary->u.primary.IOPortHost, data); 283 544 } 284 545 285 546 DECLINLINE(ULONG) VBoxHGSMIHostRead(PDEVICE_EXTENSION PrimaryExtension) 286 547 { 287 return V ideoPortReadPortUlong((PULONG)PrimaryExtension->pPrimary->u.primary.IOPortHost);548 return VBoxVideoCmnPortReadUlong((PULONG)PrimaryExtension->pPrimary->u.primary.IOPortHost); 288 549 } 289 550 290 551 DECLINLINE(void) VBoxHGSMIGuestWrite(PDEVICE_EXTENSION PrimaryExtension, ULONG data) 291 552 { 292 V ideoPortWritePortUlong((PULONG)PrimaryExtension->pPrimary->u.primary.IOPortGuest, data);553 VBoxVideoCmnPortWriteUlong((PULONG)PrimaryExtension->pPrimary->u.primary.IOPortGuest, data); 293 554 } 294 555 295 556 DECLINLINE(ULONG) VBoxHGSMIGuestRead(PDEVICE_EXTENSION PrimaryExtension) 296 557 { 297 return V ideoPortReadPortUlong((PULONG)PrimaryExtension->pPrimary->u.primary.IOPortGuest);558 return VBoxVideoCmnPortReadUlong((PULONG)PrimaryExtension->pPrimary->u.primary.IOPortGuest); 298 559 } 299 560 300 561 BOOLEAN VBoxHGSMIIsSupported (PDEVICE_EXTENSION PrimaryExtension); 301 302 void VBoxSetupVideoPortFunctions(PDEVICE_EXTENSION PrimaryExtension,303 VBOXVIDEOPORTPROCS *pCallbacks,304 PVIDEO_PORT_CONFIG_INFO pConfigInfo);305 562 306 563 VOID VBoxSetupDisplaysHGSMI (PDEVICE_EXTENSION PrimaryExtension, -
trunk/src/VBox/Additions/WINNT/Graphics/Miniport/VBoxVideoHGSMI.cpp
r25062 r25980 89 89 #define VBOX_HGSMI_LOCK(_pe, _plock, _dpc, _pold) \ 90 90 do { \ 91 if(_dpc) { \ 92 (_pe)->u.primary.VideoPortProcs.pfnAcquireSpinLockAtDpcLevel(_pe, _plock); \ 91 if(_dpc) \ 92 { \ 93 VBoxVideoCmnSpinLockAcquireAtDpcLevel(_pe, _plock); \ 93 94 } \ 94 else {\ 95 (_pe)->u.primary.VideoPortProcs.pfnAcquireSpinLock(_pe, _plock, _pold); \ 95 else \ 96 {\ 97 VBoxVideoCmnSpinLockAcquire(_pe, _plock, _pold); \ 96 98 }\ 97 99 } while(0) … … 99 101 #define VBOX_HGSMI_UNLOCK(_pe, _plock, _dpc, _pold) \ 100 102 do { \ 101 if(_dpc) { \ 102 (_pe)->u.primary.VideoPortProcs.pfnReleaseSpinLockFromDpcLevel(_pe, _plock); \ 103 if(_dpc) \ 104 { \ 105 VBoxVideoCmnSpinLockReleaseFromDpcLevel(_pe, _plock); \ 103 106 } \ 104 else {\ 105 (_pe)->u.primary.VideoPortProcs.pfnReleaseSpinLock(_pe, _plock, _pold); \ 107 else \ 108 {\ 109 VBoxVideoCmnSpinLockRelease(_pe, _plock, _pold); \ 106 110 }\ 107 111 } while(0) … … 115 119 uint32_t flags = (uint32_t)Context; 116 120 bool bProcessing = false; 117 UCHAROldIrql;121 VBOXVCMNIRQL OldIrql; 118 122 /* we check if another thread is processing the queue and exit if so */ 119 123 do … … 126 130 break; 127 131 } 128 VBOX_HGSMI_LOCK(PrimaryExtension, PrimaryExtension->u.primary.pSynchLock, flags, &OldIrql);132 VBOX_HGSMI_LOCK(PrimaryExtension, &PrimaryExtension->u.primary.pSynchLock, flags, &OldIrql); 129 133 if(!(PrimaryExtension->u.primary.pHostFlags->u32HostFlags & HGSMIHOSTFLAGS_COMMANDS_PENDING)) 130 134 { 131 135 Assert(PrimaryExtension->u.primary.bHostCmdProcessing); 132 136 PrimaryExtension->u.primary.bHostCmdProcessing = false; 133 VBOX_HGSMI_UNLOCK(PrimaryExtension, PrimaryExtension->u.primary.pSynchLock, flags, OldIrql);137 VBOX_HGSMI_UNLOCK(PrimaryExtension, &PrimaryExtension->u.primary.pSynchLock, flags, OldIrql); 134 138 break; 135 139 } 136 VBOX_HGSMI_UNLOCK(PrimaryExtension, PrimaryExtension->u.primary.pSynchLock, flags, OldIrql);140 VBOX_HGSMI_UNLOCK(PrimaryExtension, &PrimaryExtension->u.primary.pSynchLock, flags, OldIrql); 137 141 } 138 142 else … … 140 144 if(!bProcessing) 141 145 { 142 VBOX_HGSMI_LOCK(PrimaryExtension, PrimaryExtension->u.primary.pSynchLock, flags, &OldIrql);146 VBOX_HGSMI_LOCK(PrimaryExtension, &PrimaryExtension->u.primary.pSynchLock, flags, &OldIrql); 143 147 if(!(PrimaryExtension->u.primary.pHostFlags->u32HostFlags & HGSMIHOSTFLAGS_COMMANDS_PENDING) 144 148 || PrimaryExtension->u.primary.bHostCmdProcessing) 145 149 { 146 VBOX_HGSMI_UNLOCK(PrimaryExtension, PrimaryExtension->u.primary.pSynchLock, flags, OldIrql);150 VBOX_HGSMI_UNLOCK(PrimaryExtension, &PrimaryExtension->u.primary.pSynchLock, flags, OldIrql); 147 151 break; 148 152 } 149 153 Assert(!PrimaryExtension->u.primary.bHostCmdProcessing); 150 154 PrimaryExtension->u.primary.bHostCmdProcessing = true; 151 VBOX_HGSMI_UNLOCK(PrimaryExtension, PrimaryExtension->u.primary.pSynchLock, flags, OldIrql);155 VBOX_HGSMI_UNLOCK(PrimaryExtension, &PrimaryExtension->u.primary.pSynchLock, flags, OldIrql); 152 156 bProcessing = true; 153 157 } … … 168 172 USHORT DispiId; 169 173 170 V ideoPortWritePortUshort((PUSHORT)VBE_DISPI_IOPORT_INDEX, VBE_DISPI_INDEX_ID);171 V ideoPortWritePortUshort((PUSHORT)VBE_DISPI_IOPORT_DATA, VBE_DISPI_ID_HGSMI);172 173 DispiId = V ideoPortReadPortUshort((PUSHORT)VBE_DISPI_IOPORT_DATA);174 VBoxVideoCmnPortWriteUshort((PUSHORT)VBE_DISPI_IOPORT_INDEX, VBE_DISPI_INDEX_ID); 175 VBoxVideoCmnPortWriteUshort((PUSHORT)VBE_DISPI_IOPORT_DATA, VBE_DISPI_ID_HGSMI); 176 177 DispiId = VBoxVideoCmnPortReadUshort((PUSHORT)VBE_DISPI_IOPORT_DATA); 174 178 175 179 return (DispiId == VBE_DISPI_ID_HGSMI); … … 411 415 } 412 416 417 #ifndef VBOXWDDM 413 418 VP_STATUS vboxWaitForSingleObjectVoid(IN PVOID HwDeviceExtension, IN PVOID Object, IN PLARGE_INTEGER Timeout OPTIONAL) 414 419 { … … 630 635 #endif 631 636 } 637 #endif 632 638 633 639 /** … … 663 669 PrimaryExtension->u.primary.ulMaxFrameBufferSize = 0; 664 670 PrimaryExtension->u.primary.bHGSMI = VBoxHGSMIIsSupported (PrimaryExtension); 665 V ideoPortZeroMemory(&PrimaryExtension->u.primary.areaHostHeap, sizeof(HGSMIAREA));666 V ideoPortZeroMemory(&PrimaryExtension->areaDisplay, sizeof(HGSMIAREA));671 VBoxVideoCmnMemZero(&PrimaryExtension->u.primary.areaHostHeap, sizeof(HGSMIAREA)); 672 VBoxVideoCmnMemZero(&PrimaryExtension->areaDisplay, sizeof(HGSMIAREA)); 667 673 668 674 if (PrimaryExtension->u.primary.IOPortGuest == 0) … … 781 787 if (PrimaryExtension->u.primary.bHGSMI) 782 788 { 789 #ifndef VBOXWDDM 783 790 typedef VP_STATUS (*PFNCREATESECONDARYDISPLAY)(PVOID, PVOID *, ULONG); 784 791 PFNCREATESECONDARYDISPLAY pfnCreateSecondaryDisplay = NULL; … … 794 801 795 802 if (pfnCreateSecondaryDisplay != NULL) 803 #endif 796 804 { 797 805 /* Query the configured number of displays. */ … … 808 816 } 809 817 818 #ifndef VBOXWDDM 810 819 PDEVICE_EXTENSION pPrev = PrimaryExtension; 811 820 … … 838 847 PrimaryExtension->u.primary.cDisplays++; 839 848 } 849 #else 850 /* simply store the number of monitors, we will deal with VidPN stuff later */ 851 PrimaryExtension->u.primary.cDisplays = cDisplays; 852 #endif 840 853 } 841 854 … … 863 876 { 864 877 /* Unmap the memory if VBoxVideo is not supported. */ 865 VBoxUnmapAdapterMemory (PrimaryExtension, &PrimaryExtension->u.primary.pvMiniportHeap );866 VBoxUnmapAdapterMemory (PrimaryExtension, &PrimaryExtension->u.primary.pvAdapterInformation );878 VBoxUnmapAdapterMemory (PrimaryExtension, &PrimaryExtension->u.primary.pvMiniportHeap, PrimaryExtension->u.primary.cbMiniportHeap); 879 VBoxUnmapAdapterMemory (PrimaryExtension, &PrimaryExtension->u.primary.pvAdapterInformation, VBVA_ADAPTER_INFORMATION_SIZE); 867 880 868 881 HGSMIHeapDestroy (&PrimaryExtension->u.primary.hgsmiAdapterHeap); … … 871 884 if (PrimaryExtension->u.primary.bHGSMI) 872 885 { 873 PrimaryExtension->u.primary.VideoPortProcs.pfnCreateSpinLock(PrimaryExtension, &PrimaryExtension->u.primary.pSynchLock);886 VBoxVideoCmnSpinLockCreate(PrimaryExtension, &PrimaryExtension->u.primary.pSynchLock); 874 887 } 875 888 … … 1008 1021 struct _VBVAHOSTCMD * pFirstCmd; 1009 1022 struct _VBVAHOSTCMD * pLastCmd; 1010 PSPIN_LOCK pSynchLock;1023 VBOXVCMNSPIN_LOCK pSynchLock; 1011 1024 #ifdef DEBUG 1012 1025 int cCmds; … … 1036 1049 } 1037 1050 1038 void dbgCheckList(PDEVICE_EXTENSION PrimaryExtension, const VBVADISP_CHANNELCONTEXT *pList, struct _VBVAHOSTCMD * pCmd) 1039 { 1040 UCHAR oldIrql; 1041 PrimaryExtension->u.primary.VideoPortProcs.pfnAcquireSpinLock(PrimaryExtension, 1042 pList->pSynchLock, 1043 &oldIrql); 1051 void dbgCheckList(PDEVICE_EXTENSION PrimaryExtension, VBVADISP_CHANNELCONTEXT *pList, struct _VBVAHOSTCMD * pCmd) 1052 { 1053 VBOXVCMNIRQL oldIrql; 1054 VBoxVideoCmnSpinLockAcquire(PrimaryExtension, &pList->pSynchLock, &oldIrql); 1044 1055 1045 1056 dbgCheckListLocked(pList, pCmd); 1046 1057 1047 PrimaryExtension->u.primary.VideoPortProcs.pfnReleaseSpinLock(PrimaryExtension, 1048 pList->pSynchLock, 1049 oldIrql); 1058 VBoxVideoCmnSpinLockRelease(PrimaryExtension, &pList->pSynchLock, oldIrql); 1050 1059 } 1051 1060 … … 1070 1079 static int vboxVBVADeleteChannelContexts(PDEVICE_EXTENSION PrimaryExtension, VBVA_CHANNELCONTEXTS * pContext) 1071 1080 { 1072 PrimaryExtension->u.primary.VideoPortProcs.pfnFreePool(PrimaryExtension,pContext);1081 VBoxVideoCmnMemFree(PrimaryExtension,pContext); 1073 1082 return VINF_SUCCESS; 1074 1083 } … … 1078 1087 uint32_t cDisplays = (uint32_t)PrimaryExtension->u.primary.cDisplays; 1079 1088 const size_t size = RT_OFFSETOF(VBVA_CHANNELCONTEXTS, aContexts[cDisplays]); 1080 VBVA_CHANNELCONTEXTS * pContext = (VBVA_CHANNELCONTEXTS*)PrimaryExtension->u.primary.VideoPortProcs.pfnAllocatePool(PrimaryExtension, 1081 VBoxVpNonPagedPool, 1082 size, 1083 MEM_TAG); 1089 VBVA_CHANNELCONTEXTS * pContext = (VBVA_CHANNELCONTEXTS*)VBoxVideoCmnMemAllocNonPaged(PrimaryExtension, size, MEM_TAG); 1084 1090 if(pContext) 1085 1091 { … … 1134 1140 { 1135 1141 UCHAR oldIrql; 1136 PrimaryExtension->u.primary.VideoPortProcs.pfnAcquireSpinLock(PrimaryExtension, 1137 pDispContext->pSynchLock, 1138 &oldIrql); 1142 VBoxVideoCmnSpinLockAcquire(PrimaryExtension, &pDispContext->pSynchLock, &oldIrql); 1139 1143 1140 1144 DBG_CHECKLIST_LOCKED(pDispContext, NULL); … … 1146 1150 pDispContext->cCmds = 0; 1147 1151 #endif 1148 PrimaryExtension->u.primary.VideoPortProcs.pfnReleaseSpinLock(PrimaryExtension, 1149 pDispContext->pSynchLock, 1150 oldIrql); 1152 VBoxVideoCmnSpinLockRelease(PrimaryExtension, &pDispContext->pSynchLock, oldIrql); 1151 1153 1152 1154 DBG_CHECKLIST(PrimaryExtension, pDispContext, NULL); … … 1206 1208 { 1207 1209 VBVAHOSTCMDEVENT *pEventCmd = VBVAHOSTCMD_BODY(pCur, VBVAHOSTCMDEVENT); 1210 #ifndef VBOXWDDM 1208 1211 PEVENT pEvent = (PEVENT)pEventCmd->pEvent; 1209 1212 pCallbacks->PrimaryExtension->u.primary.VideoPortProcs.pfnSetEvent( 1210 1213 pCallbacks->PrimaryExtension, 1211 1214 pEvent); 1215 #else 1216 PKEVENT pEvent = (PKEVENT)pEventCmd->pEvent; 1217 KeSetEvent(pEvent, 0, FALSE); 1218 #endif 1212 1219 } 1213 1220 default: … … 1244 1251 Assert(pLast); 1245 1252 UCHAR oldIrql; 1246 pCallbacks->PrimaryExtension->u.primary.VideoPortProcs.pfnAcquireSpinLock(pCallbacks->PrimaryExtension,1247 pHandler->pSynchLock,1253 VBoxVideoCmnSpinLockAcquire(pCallbacks->PrimaryExtension, 1254 &pHandler->pSynchLock, 1248 1255 &oldIrql); 1249 1256 … … 1266 1273 DBG_CHECKLIST_LOCKED(pHandler, NULL); 1267 1274 1268 pCallbacks->PrimaryExtension->u.primary.VideoPortProcs.pfnReleaseSpinLock(pCallbacks->PrimaryExtension,1269 pHandler->pSynchLock,1275 VBoxVideoCmnSpinLockRelease(pCallbacks->PrimaryExtension, 1276 &pHandler->pSynchLock, 1270 1277 oldIrql); 1271 1278 } … … 1333 1340 #endif 1334 1341 1335 PrimaryExtension->u.primary.VideoPortProcs.pfnCreateSpinLock(PrimaryExtension, &pDispContext->pSynchLock);1342 VBoxVideoCmnSpinLockCreate(PrimaryExtension, &pDispContext->pSynchLock); 1336 1343 1337 1344 int rc = VINF_SUCCESS;
Note:
See TracChangeset
for help on using the changeset viewer.