VirtualBox

Ignore:
Timestamp:
Oct 5, 2010 8:12:46 PM (14 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
66416
Message:

wddm: bugfix

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/WINNT/Graphics/Miniport/wddm/VBoxVideoMisc.cpp

    r32889 r32930  
    511511    const WCHAR* pKeyPrefix;
    512512    UINT cbKeyPrefix;
     513    UNICODE_STRING* pVGuid = vboxWddmVGuidGet(pDevExt);
     514    Assert(pVGuid);
     515    if (!pVGuid)
     516        return STATUS_UNSUCCESSFUL;
     517
    513518    winVersion_t ver = vboxQueryWinVersion();
    514519    if (ver == WINVISTA)
     
    524529    }
    525530
    526     ULONG cbResult = cbKeyPrefix + pDevExt->VideoGuid.Length + 2 + 8; // L"\\" + "XXXX"
     531    ULONG cbResult = cbKeyPrefix + pVGuid->Length + 2 + 8; // L"\\" + "XXXX"
    527532    if (cbBuf >= cbResult)
    528533    {
    529534        wcscpy(pBuf, pKeyPrefix);
    530535        pSuffix = pBuf + (cbKeyPrefix-2)/2;
    531         memcpy(pSuffix, pDevExt->VideoGuid.Buffer, pDevExt->VideoGuid.Length);
    532         pSuffix += pDevExt->VideoGuid.Length/2;
     536        memcpy(pSuffix, pVGuid->Buffer, pVGuid->Length);
     537        pSuffix += pVGuid->Length/2;
    533538        pSuffix[0] = L'\\';
    534539        pSuffix += 1;
     
    757762            sizeof(val));
    758763}
     764
     765UNICODE_STRING* vboxWddmVGuidGet(PDEVICE_EXTENSION pDevExt)
     766{
     767    if (pDevExt->VideoGuid.Buffer)
     768        return &pDevExt->VideoGuid;
     769
     770    Assert(KeGetCurrentIrql() == PASSIVE_LEVEL);
     771    WCHAR VideoGuidBuf[512];
     772    ULONG cbVideoGuidBuf = sizeof (VideoGuidBuf);
     773    NTSTATUS Status = vboxWddmRegQueryVideoGuidString(cbVideoGuidBuf, VideoGuidBuf, &cbVideoGuidBuf);
     774    Assert(Status == STATUS_SUCCESS);
     775    if (Status == STATUS_SUCCESS)
     776    {
     777        PWCHAR pBuf = (PWCHAR)vboxWddmMemAllocZero(cbVideoGuidBuf);
     778        Assert(pBuf);
     779        if (pBuf)
     780        {
     781            memcpy(pBuf, VideoGuidBuf, cbVideoGuidBuf);
     782            RtlInitUnicodeString(&pDevExt->VideoGuid, pBuf);
     783            return &pDevExt->VideoGuid;
     784        }
     785    }
     786
     787    return NULL;
     788}
     789
     790VOID vboxWddmVGuidFree(PDEVICE_EXTENSION pDevExt)
     791{
     792    if (pDevExt->VideoGuid.Buffer)
     793    {
     794        vboxWddmMemFree(pDevExt->VideoGuid.Buffer);
     795        pDevExt->VideoGuid.Buffer = NULL;
     796    }
     797}
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette