Changeset 19844 in vbox for trunk/src/VBox/Additions/WINNT/Graphics/Miniport
- Timestamp:
- May 19, 2009 11:12:55 PM (16 years ago)
- Location:
- trunk/src/VBox/Additions/WINNT/Graphics/Miniport
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/WINNT/Graphics/Miniport/VBoxVideo.cpp
r19711 r19844 1875 1875 break; 1876 1876 } 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 } 1877 1946 #endif /* VBOX_WITH_HGSMI */ 1878 1947 -
trunk/src/VBox/Additions/WINNT/Graphics/Miniport/VBoxVideo.h
r19711 r19844 29 29 #include <VBox/HGSMI/HGSMI.h> 30 30 #include <VBox/HGSMI/HGSMIChSetup.h> 31 #include "VBoxHGSMI.h" 31 32 #endif /* VBOX_WITH_HGSMI */ 32 33 … … 256 257 PVIDEO_POINTER_ATTRIBUTES pointerAttr, 257 258 uint32_t cbLength); 259 260 DECLCALLBACK(void) hgsmiHostCmdHandlerComplete (HVBOXVIDEOHGSMI hHGSMI, void * pvMem); 261 262 int vboxHGSMIChannelDisplayRegister (PDEVICE_EXTENSION PrimaryExtension, 263 int iDisplay, /* negative would mean this is a miniport handler */ 264 uint8_t u8Channel, 265 PFNHGSMICHANNELHANDLER pfnChannelHandler, 266 void *pvChannelHandler); 258 267 #endif /* VBOX_WITH_HGSMI */ 259 268 } /* extern "C" */ -
trunk/src/VBox/Additions/WINNT/Graphics/Miniport/vboxioctl.h
r17704 r19844 27 27 #ifdef VBOX_WITH_HGSMI 28 28 #include <VBox/HGSMI/HGSMI.h> 29 #include "VBoxHGSMI.h" 29 30 #endif /* VBOX_WITH_HGSMI */ 30 31 … … 48 49 #define IOCTL_VIDEO_QUERY_HGSMI_INFO \ 49 50 CTL_CODE(FILE_DEVICE_VIDEO, 0x430, METHOD_BUFFERED, FILE_ANY_ACCESS) 51 52 #define IOCTL_VIDEO_HGSMI_QUERY_CALLBACKS \ 53 CTL_CODE(FILE_DEVICE_VIDEO, 0x431, METHOD_BUFFERED, FILE_ANY_ACCESS) 54 55 #define IOCTL_VIDEO_HGSMI_HANDLER_REGISTER \ 56 CTL_CODE(FILE_DEVICE_VIDEO, 0x432, METHOD_BUFFERED, FILE_ANY_ACCESS) 57 58 #define IOCTL_VIDEO_HGSMI_HANDLER_DEREGISTER \ 59 CTL_CODE(FILE_DEVICE_VIDEO, 0x433, METHOD_BUFFERED, FILE_ANY_ACCESS) 60 50 61 #endif /* VBOX_WITH_HGSMI */ 51 62 … … 109 120 uint32_t u32MinVBVABufferSize; 110 121 } QUERYHGSMIRESULT; 122 123 /** 124 * Data returned by IOCTL_VIDEO_HGSMI_QUERY_CALLBACKS. 125 * 126 */ 127 typedef struct _HGSMIQUERYCALLBACKS 128 { 129 HVBOXVIDEOHGSMI hContext; 130 PFNVBOXVIDEOHGSMICOMPLETION pfnCompletionHandler; 131 } HGSMIQUERYCALLBACKS; 132 133 /** 134 * Data returned by IOCTL_VIDEO_HGSMI_HANDLER_REGISTER. 135 * 136 */ 137 typedef struct _HGSMIHANDLERREGISTER 138 { 139 PFNHGSMICHANNELHANDLER pfnHandler; 140 void * pvHandler; 141 uint8_t u8Channel; 142 } HGSMIHANDLERREGISTER; 143 144 /** 145 * Data passed by IOCTL_VIDEO_HGSMI_HANDLER_DEREGISTER. 146 * 147 */ 148 typedef struct _HGSMIHANDLERDEREGISTER 149 { 150 PFNHGSMICHANNELHANDLER pfnHandler; 151 uint8_t u8Channel; 152 } HGSMIHANDLERDEREGISTER; 153 111 154 #endif /* VBOX_WITH_HGSMI */ 112 155 #pragma pack()
Note:
See TracChangeset
for help on using the changeset viewer.