[ros-diffs] [greatlrd] 29725: Add documentations : how NtGdiDdCreateD3DBuffer works, did nott add full docs, but egunt for people start using it if they read msdn as well Optimize : NtGdiDdCreateD3DBuffer

greatlrd at svn.reactos.org greatlrd at svn.reactos.org
Sun Oct 21 03:25:26 CEST 2007


Author: greatlrd
Date: Sun Oct 21 05:25:26 2007
New Revision: 29725

URL: http://svn.reactos.org/svn/reactos?rev=29725&view=rev
Log:
Add documentations : how NtGdiDdCreateD3DBuffer works, did nott add full docs, but egunt for people start using it if they read msdn as well
Optimize : NtGdiDdCreateD3DBuffer

Modified:
    branches/reactx/reactos/subsystems/win32/win32k/ntddraw/d3d.c

Modified: branches/reactx/reactos/subsystems/win32/win32k/ntddraw/d3d.c
URL: http://svn.reactos.org/svn/reactos/branches/reactx/reactos/subsystems/win32/win32k/ntddraw/d3d.c?rev=29725&r1=29724&r2=29725&view=diff
==============================================================================
--- branches/reactx/reactos/subsystems/win32/win32k/ntddraw/d3d.c (original)
+++ branches/reactx/reactos/subsystems/win32/win32k/ntddraw/d3d.c Sun Oct 21 05:25:26 2007
@@ -48,6 +48,7 @@
 * for the ddRVal will other wise be unchange if some error happen inside the driver. 
 * puCanCreateSurfaceData->lpDD  is pointer to DDRAWI_DIRECTDRAW_GBL, MSDN say it is PDD_DIRECTDRAW_GLOBAL it is not.
 * puCanCreateSurfaceData->lpDD->hDD need also be fill in with the handle we got from NtGdiDdCreateDirectDrawObject
+* puCreateSurfaceData->CanCreateSurface pointer to the real functions the HAL or HEL, that u need fill in
 *
 *--*/
 
@@ -195,9 +196,57 @@
     return pfnD3dContextDestroyAll(pdcad);
 }
 
-/************************************************************************/
-/* NtGdiDdCreateD3DBuffer                                               */
-/************************************************************************/
+/*++
+* @name NtGdiDdCreateD3DBuffer
+* @implemented
+*
+* The function NtGdiDdCreateD3DBuffer create a 
+* surface for DirectX. It is redirected to dxg.sys.
+*
+* @param HANDLE hDirectDraw
+* The handle we got from NtGdiDdCreateDirectDrawObject
+*
+* @param  HANDLE *hSurface
+* <FILMEIN>
+*
+* @param DDSURFACEDESC puSurfaceDescription
+* surface desc what kind of surface it should be, example rgb, compress, deep, and more,
+* see DDSURFACEDESC for more infomations
+*
+* @param DD_SURFACE_GLOBAL *puSurfaceGlobalData
+* <FILMEIN>
+*
+* @param DD_SURFACE_LOCAL *puSurfaceLocalData
+* <FILMEIN>
+*
+* @param DD_SURFACE_MORE *puSurfaceMoreData
+* <FILMEIN>
+*
+* @param PDD_CREATESURFACEDATA puCreateSurfaceData
+* <FILMEIN>
+*
+* @param HANDLE *puhSurface
+* <FILMEIN>
+*
+* @return 
+* Depending on if the driver supports this API or not, DDHAL_DRIVER_HANDLED 
+* or DDHAL_DRIVER_NOTHANDLED is returned.
+* To check if the function has been successful, do a full check. 
+* A full check is done by checking if the return value is DDHAL_DRIVER_HANDLED 
+* and puCanCreateSurfaceData->ddRVal is set to DD_OK.
+*
+* @remarks.
+* dxg.sys NtGdiDdCreateD3DBuffer and NtGdiDdCreateSurface call are redirect to dxg.sys
+* inside the dxg.sys they ar redirect to same functions. examine the driver list functions
+* table, the memory address you will see they are pointed to same memory address.
+*
+* Before call to this api please set the puCreateSurfaceData->ddRVal to a error value example DDERR_NOTUSPORTED.
+* for the ddRVal will other wise be unchange if some error happen inside the driver. 
+* puCreateSurfaceData->lpDD  is pointer to DDRAWI_DIRECTDRAW_GBL, MSDN say it is PDD_DIRECTDRAW_GLOBAL it is not.
+* puCreateSurfaceData->lpDD->hDD need also be fill in with the handle we got from NtGdiDdCreateDirectDrawObject
+* puCreateSurfaceData->CreateSurface pointer to the real functions the HAL or HEL, that u need fill in
+*
+*--*/
 DWORD
 STDCALL
 NtGdiDdCreateD3DBuffer(HANDLE hDirectDraw,
@@ -209,10 +258,7 @@
                        PDD_CREATESURFACEDATA puCreateSurfaceData,
                        HANDLE *puhSurface)
 {
-    PGD_DDCREATED3DBUFFER pfnDdCreateD3DBuffer = NULL;
-    INT i;
-
-    DXG_GET_INDEX_FUNCTION(DXG_INDEX_DxDdCreateD3DBuffer, pfnDdCreateD3DBuffer);
+    PGD_DDCREATED3DBUFFER pfnDdCreateD3DBuffer = (PGD_D3DCONTEXTDESTROYALL)gpDxFuncs[DXG_INDEX_DxDdCreateD3DBuffer].pfn;
 
     if (pfnDdCreateD3DBuffer == NULL)
     {




More information about the Ros-diffs mailing list