BOOL APIENTRY DrvDeleteContext(HGLRC hglrc) { #if defined(VBOX_WITH_CRHGSMI) && defined(IN_GUEST) ContextInfo *pContext; PVBOXUHGSMI pHgsmi = NULL; #endif CR_DDI_PROLOGUE(); crDebug( "DrvDeleteContext(0x%x) called", hglrc ); #if defined(VBOX_WITH_CRHGSMI) && defined(IN_GUEST) crHashtableLock(stub.contextTable); pContext = (ContextInfo *) crHashtableSearch(stub.contextTable, (unsigned long) hglrc); if (pContext) pHgsmi = pContext->pHgsmi; crHashtableUnlock(stub.contextTable); #endif stubDestroyContext( (unsigned long) hglrc ); #if defined(VBOX_WITH_CRHGSMI) && defined(IN_GUEST) if (pHgsmi) VBoxCrHgsmiDestroy(pHgsmi); #endif return true; }
static bool isVBoxWDDMCrHgsmi(void) { #if defined(VBOX_WITH_CRHGSMI) && defined(IN_GUEST) PVBOXUHGSMI pHgsmi = VBoxCrHgsmiCreate(); if (pHgsmi) { VBoxCrHgsmiDestroy(pHgsmi); return true; } #endif return false; }
static int vboxCrHgsmiInitPerform(VBOXDISPKMT_CALLBACKS *pCallbacks) { HRESULT hr = vboxDispKmtCallbacksInit(pCallbacks); /*Assert(hr == S_OK);*/ if (hr == S_OK) { /* check if we can create the hgsmi */ PVBOXUHGSMI pHgsmi = VBoxCrHgsmiCreate(); if (pHgsmi) { /* yes, we can, so this is wddm mode */ VBoxCrHgsmiDestroy(pHgsmi); Log(("CrHgsmi: WDDM mode supported\n")); return 1; } vboxDispKmtCallbacksTerm(pCallbacks); } Log(("CrHgsmi: unsupported\n")); return -1; }