VirtualBox

Ignore:
Timestamp:
May 19, 2009 11:12:55 PM (16 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
47505
Message:

HGSMI: post host VBVA commands to display; Video HW Accel: mechanism for passing/processing commands to framebuffer

File:
1 edited

Legend:

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

    r19711 r19844  
    18751875            break;
    18761876        }
     1877        case IOCTL_VIDEO_HGSMI_QUERY_CALLBACKS:
     1878        {
     1879            dprintf(("VBoxVideo::VBoxVideoStartIO: IOCTL_VIDEO_HGSMI_QUERY_CALLBACKS\n"));
     1880
     1881            if (RequestPacket->OutputBufferLength < sizeof(HGSMIQUERYCALLBACKS))
     1882            {
     1883                dprintf(("VBoxVideo::VBoxVideoStartIO: Output buffer too small: %d needed: %d!!!\n",
     1884                         RequestPacket->OutputBufferLength, sizeof(HGSMIQUERYCALLBACKS)));
     1885                RequestPacket->StatusBlock->Status = ERROR_INSUFFICIENT_BUFFER;
     1886                return FALSE;
     1887            }
     1888
     1889            if (!pDevExt->pPrimary->u.primary.bHGSMI)
     1890            {
     1891                RequestPacket->StatusBlock->Status = ERROR_INVALID_FUNCTION;
     1892                return FALSE;
     1893            }
     1894
     1895            HGSMIQUERYCALLBACKS *pInfo = (HGSMIQUERYCALLBACKS *)RequestPacket->OutputBuffer;
     1896
     1897            pInfo->hContext = pDevExt->pPrimary;
     1898            pInfo->pfnCompletionHandler = hgsmiHostCmdHandlerComplete;
     1899
     1900            RequestPacket->StatusBlock->Information = sizeof(HGSMIQUERYCALLBACKS);
     1901            Result = TRUE;
     1902            break;
     1903        }
     1904        case IOCTL_VIDEO_HGSMI_HANDLER_REGISTER:
     1905        {
     1906            dprintf(("VBoxVideo::VBoxVideoStartIO: IOCTL_VIDEO_HGSMI_HANDLER_REGISTER\n"));
     1907
     1908            if (RequestPacket->InputBufferLength< sizeof(HGSMIHANDLERREGISTER))
     1909            {
     1910                dprintf(("VBoxVideo::VBoxVideoStartIO: Output buffer too small: %d needed: %d!!!\n",
     1911                         RequestPacket->InputBufferLength, sizeof(HGSMIHANDLERREGISTER)));
     1912                RequestPacket->StatusBlock->Status = ERROR_INSUFFICIENT_BUFFER;
     1913                return FALSE;
     1914            }
     1915
     1916            if (!pDevExt->pPrimary->u.primary.bHGSMI)
     1917            {
     1918                RequestPacket->StatusBlock->Status = ERROR_INVALID_FUNCTION;
     1919                return FALSE;
     1920            }
     1921
     1922            HGSMIHANDLERREGISTER *pInfo = (HGSMIHANDLERREGISTER *)RequestPacket->InputBuffer;
     1923
     1924            int rc = vboxHGSMIChannelDisplayRegister (pDevExt->pPrimary,
     1925                    pDevExt->iDevice, /* negative would mean this is a miniport handler */
     1926                    pInfo->u8Channel,
     1927                    pInfo->pfnHandler,
     1928                    pInfo->pvHandler);
     1929            if(RT_FAILURE(rc))
     1930            {
     1931                RequestPacket->StatusBlock->Status = ERROR_INVALID_NAME;
     1932            }
     1933            Result = TRUE;
     1934            break;
     1935        }
     1936        case IOCTL_VIDEO_HGSMI_HANDLER_DEREGISTER:
     1937        {
     1938            /* TODO: implement */
     1939            if (!pDevExt->pPrimary->u.primary.bHGSMI)
     1940            {
     1941                RequestPacket->StatusBlock->Status = ERROR_INVALID_FUNCTION;
     1942                return FALSE;
     1943            }
     1944            break;
     1945        }
    18771946#endif /* VBOX_WITH_HGSMI */
    18781947
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