VBoxMPMisc.h revision eb2d4958f7faf812c3bdb2d7587d815022f0bd55
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync * VBox WDDM Miniport driver
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync * Copyright (C) 2011 Oracle Corporation
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync * available from http://www.virtualbox.org. This file is free software;
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync * you can redistribute it and/or modify it under the terms of the GNU
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync * General Public License (GPL) as published by the Free Software
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncDECLINLINE(void) vboxVideoLeDetach(LIST_ENTRY *pList, LIST_ENTRY *pDstList)
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync /* pDstList->Flink & pDstList->Blink point to the "real| entries, never to pList
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync * since we've checked IsListEmpty(pList) above */
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync} VBOXWDDM_HTABLE_ITERATOR, *PVBOXWDDM_HTABLE_ITERATOR;
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncVOID vboxWddmHTableIterInit(PVBOXWDDM_HTABLE pTbl, PVBOXWDDM_HTABLE_ITERATOR pIter);
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncPVOID vboxWddmHTableIterNext(PVBOXWDDM_HTABLE_ITERATOR pIter, VBOXWDDM_HANDLE *phHandle);
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncBOOL vboxWddmHTableIterHasNext(PVBOXWDDM_HTABLE_ITERATOR pIter);
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncPVOID vboxWddmHTableIterRemoveCur(PVBOXWDDM_HTABLE_ITERATOR pIter);
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncNTSTATUS vboxWddmHTableCreate(PVBOXWDDM_HTABLE pTbl, uint32_t cSize);
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncNTSTATUS vboxWddmHTableRealloc(PVBOXWDDM_HTABLE pTbl, uint32_t cNewSize);
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncVBOXWDDM_HANDLE vboxWddmHTablePut(PVBOXWDDM_HTABLE pTbl, PVOID pvData);
376b92d26cc4fad78e813cf33afcc0784adc9b19vboxsyncPVOID vboxWddmHTableRemove(PVBOXWDDM_HTABLE pTbl, VBOXWDDM_HANDLE hHandle);
89aedeb1d8af54aba6ae46dbbd256281315c1be6vboxsyncPVOID vboxWddmHTableGet(PVBOXWDDM_HTABLE pTbl, VBOXWDDM_HANDLE hHandle);
89aedeb1d8af54aba6ae46dbbd256281315c1be6vboxsyncDECLINLINE(BOOLEAN) vboxWddmSwapchainRetain(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_SWAPCHAIN pSwapchain);
89aedeb1d8af54aba6ae46dbbd256281315c1be6vboxsyncDECLINLINE(VOID) vboxWddmSwapchainRelease(PVBOXWDDM_SWAPCHAIN pSwapchain);
89aedeb1d8af54aba6ae46dbbd256281315c1be6vboxsyncPVBOXWDDM_SWAPCHAIN vboxWddmSwapchainRetainByAlloc(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_ALLOCATION pAlloc);
89aedeb1d8af54aba6ae46dbbd256281315c1be6vboxsyncVOID vboxWddmSwapchainAllocRemove(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_SWAPCHAIN pSwapchain, PVBOXWDDM_ALLOCATION pAlloc);
89aedeb1d8af54aba6ae46dbbd256281315c1be6vboxsyncBOOLEAN vboxWddmSwapchainAllocAdd(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_SWAPCHAIN pSwapchain, PVBOXWDDM_ALLOCATION pAlloc);
89aedeb1d8af54aba6ae46dbbd256281315c1be6vboxsyncVOID vboxWddmSwapchainAllocRemoveAll(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_SWAPCHAIN pSwapchain);
89aedeb1d8af54aba6ae46dbbd256281315c1be6vboxsyncVOID vboxWddmSwapchainDestroy(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_SWAPCHAIN pSwapchain);
376b92d26cc4fad78e813cf33afcc0784adc9b19vboxsyncVOID vboxWddmSwapchainCtxDestroyAll(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_CONTEXT pContext);
89aedeb1d8af54aba6ae46dbbd256281315c1be6vboxsyncNTSTATUS vboxWddmSwapchainCtxEscape(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_CONTEXT pContext, PVBOXDISPIFESCAPE_SWAPCHAININFO pSwapchainInfo, UINT cbSize);
89aedeb1d8af54aba6ae46dbbd256281315c1be6vboxsyncNTSTATUS vboxWddmSwapchainCtxInit(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_CONTEXT pContext);
89aedeb1d8af54aba6ae46dbbd256281315c1be6vboxsyncVOID vboxWddmSwapchainCtxTerm(PVBOXMP_DEVEXT pDevExt, PVBOXWDDM_CONTEXT pContext);
89aedeb1d8af54aba6ae46dbbd256281315c1be6vboxsyncNTSTATUS vboxWddmRegQueryDisplaySettingsKeyName(PVBOXMP_DEVEXT pDevExt, D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId,
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncNTSTATUS vboxWddmRegOpenDisplaySettingsKey(IN PVBOXMP_DEVEXT pDeviceExtension, D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId, OUT PHANDLE phKey);
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncNTSTATUS vboxWddmRegDisplaySettingsQueryRelX(HANDLE hKey, int * pResult);
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncNTSTATUS vboxWddmRegDisplaySettingsQueryRelY(HANDLE hKey, int * pResult);
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncNTSTATUS vboxWddmDisplaySettingsQueryPos(IN PVBOXMP_DEVEXT pDeviceExtension, D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId, POINT * pPos);
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncNTSTATUS vboxWddmRegQueryVideoGuidString(ULONG cbBuf, PWCHAR pBuf, PULONG pcbResult);
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncNTSTATUS vboxWddmRegQueryDrvKeyName(PVBOXMP_DEVEXT pDevExt, ULONG cbBuf, PWCHAR pBuf, PULONG pcbResult);
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncNTSTATUS vboxWddmRegOpenKey(OUT PHANDLE phKey, IN PWCHAR pName, IN ACCESS_MASK fAccess);
508452243fd3328f7b9e0405d39fb9dc004e31b8vboxsyncNTSTATUS vboxWddmRegQueryValueDword(IN HANDLE hKey, IN PWCHAR pName, OUT PDWORD pDword);
508452243fd3328f7b9e0405d39fb9dc004e31b8vboxsyncNTSTATUS vboxWddmRegSetValueDword(IN HANDLE hKey, IN PWCHAR pName, OUT DWORD val);
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncUNICODE_STRING* vboxWddmVGuidGet(PVBOXMP_DEVEXT pDevExt);
4328e87247f4a96449677e199c7e99ef516fc1cevboxsynctypedef struct VBOXWDDM_MM
4328e87247f4a96449677e199c7e99ef516fc1cevboxsyncVOID vboxMmFree(PVBOXWDDM_MM pMm, UINT iPage, UINT cPages);
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync /* synch lock */
4328e87247f4a96449677e199c7e99ef516fc1cevboxsync// PHYSICAL_ADDRESS PhData;
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync /* synch lock */
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsync} VBOXVIDEOCM_ALLOC_CONTEXT, *PVBOXVIDEOCM_ALLOC_CONTEXT;
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsyncNTSTATUS vboxVideoAMgrCreate(PVBOXMP_DEVEXT pDevExt, PVBOXVIDEOCM_ALLOC_MGR pMgr, uint32_t offData, uint32_t cbData);
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsyncNTSTATUS vboxVideoAMgrDestroy(PVBOXMP_DEVEXT pDevExt, PVBOXVIDEOCM_ALLOC_MGR pMgr);
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsyncNTSTATUS vboxVideoAMgrCtxCreate(PVBOXVIDEOCM_ALLOC_MGR pMgr, PVBOXVIDEOCM_ALLOC_CONTEXT pCtx);
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsyncNTSTATUS vboxVideoAMgrCtxDestroy(PVBOXVIDEOCM_ALLOC_CONTEXT pCtx);
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsyncNTSTATUS vboxVideoAMgrCtxAllocCreate(PVBOXVIDEOCM_ALLOC_CONTEXT pContext, PVBOXVIDEOCM_UM_ALLOC pUmAlloc);
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsyncNTSTATUS vboxVideoAMgrCtxAllocDestroy(PVBOXVIDEOCM_ALLOC_CONTEXT pContext, VBOXDISP_KMHANDLE hSesionHandle);
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsyncNTSTATUS vboxVideoAMgrCtxAllocSubmit(PVBOXMP_DEVEXT pDevExt, PVBOXVIDEOCM_ALLOC_CONTEXT pContext, UINT cBuffers, VBOXWDDM_UHGSMI_BUFFER_UI_INFO_ESCAPE *paBuffers);
6e12ccc60ac657fb87e27b7a2b26e0a63bebe024vboxsyncVOID vboxWddmCounterU32Wait(uint32_t volatile * pu32, uint32_t u32Val);
657b2c9f6d33f08001e5fa6f6e0572dcf0391013vboxsync#endif /* #ifndef ___VBoxMPMisc_h__ */