Add dxapi.sys, most api are stub.

Implemnt GsDriverEntry, DxApiGetVersion, DxApi.
All DxApi that are callbacks are stub.
 

svn path=/branches/reactx/; revision=30117
This commit is contained in:
Magnus Olsen 2007-11-04 14:57:57 +00:00
parent 8dce1974ed
commit 44e6f014a9
7 changed files with 428 additions and 1 deletions

View file

@ -1,6 +1,9 @@
<?xml version="1.0"?>
<!DOCTYPE group SYSTEM "../tools/rbuild/project.dtd">
<group xmlns:xi="http://www.w3.org/2001/XInclude">
<directory name="dxapi">
<xi:include href="dxapi/dxapi.rbuild" />
</directory>
<directory name="dxg">
<xi:include href="dxg/dxg.rbuild" />
</directory>

View file

@ -0,0 +1,15 @@
; $Id: videoprt.def 27062 2007-06-07 21:13:06Z greatlrd $
;
; dxapi.def - export definition file for ReactOS
;
EXPORTS
DxApi@20
DxApiGetVersion@0
;DxApiInitialize@32
;DxAutoflipUpdate@20
;DxEnableIRQ@8
;DxLoseObject@8
;DxUpdateCapture@12
GsDriverEntry@8

View file

@ -0,0 +1,14 @@
<?xml version="1.0"?>
<!DOCTYPE module SYSTEM "../../../../tools/rbuild/project.dtd">
<module name="dxapi" type="kernelmodedriver"
installbase="system32/drivers" installname="dxapi.sys">
<importlibrary definition="dxapi.def" />
<include base="dxapi">.</include>
<define name="__USE_W32API" />
<define name="_DXAPI_" />
<library>ntoskrnl</library>
<library>hal</library>
<library>videoport</library>
<file>main.c</file>
<file>dxapi.rc</file>
</module>

View file

@ -0,0 +1,7 @@
#define REACTOS_VERSION_DLL
#define REACTOS_STR_FILE_DESCRIPTION "DirectX API Driver\0"
#define REACTOS_STR_INTERNAL_NAME "dxgapi\0"
#define REACTOS_STR_ORIGINAL_FILENAME "dxgapi\0"
#include <reactos/version.rc>

View file

@ -0,0 +1,156 @@
/* DDK/NDK/SDK Headers */
/* DDK/NDK/SDK Headers */
#include <ddk/ntddk.h>
#include <ddk/ntddmou.h>
#include <ddk/ntifs.h>
#include <ddk/tvout.h>
#include <ndk/ntndk.h>
#include <stdarg.h>
#include <windef.h>
#include <winerror.h>
#include <wingdi.h>
#include <winddi.h>
#include <winuser.h>
#include <prntfont.h>
#include <dde.h>
#include <wincon.h>
#include <ddk/ddkmapi.h>
/* Prototypes */
VOID DxGetVersionNumber(PVOID lpvInBuffer, PVOID lpvOutBuffer);
VOID DxCloseHandle(PVOID lpvInBuffer, PVOID lpvOutBuffer);
VOID DxOpenDirectDraw(PVOID lpvInBuffer, PVOID lpvOutBuffer);
VOID DxOpenSurface(PVOID lpvInBuffer, PVOID lpvOutBuffer);
VOID DxOpenVideoPort(PVOID lpvInBuffer, PVOID lpvOutBuffer);
VOID DxGetKernelCaps(PVOID lpvInBuffer, PVOID lpvOutBuffer);
VOID DxGetFieldNumber(PVOID lpvInBuffer, PVOID lpvOutBuffer);
VOID DxSetFieldNumber(PVOID lpvInBuffer, PVOID lpvOutBuffer);
VOID DxSetSkipPattern(PVOID lpvInBuffer, PVOID lpvOutBuffer);
VOID DxGetSurfaceState(PVOID lpvInBuffer, PVOID lpvOutBuffer);
VOID DxSetSurfaceState(PVOID lpvInBuffer, PVOID lpvOutBuffer);
VOID DxLock(PVOID lpvInBuffer, PVOID lpvOutBuffer);
VOID DxFlipOverlay(PVOID lpvInBuffer, PVOID lpvOutBuffer);
VOID DxFlipVideoPort(PVOID lpvInBuffer, PVOID lpvOutBuffer);
VOID DxGetCurrentAutoflip(PVOID lpvInBuffer, PVOID lpvOutBuffer);
VOID DxGetPreviousAutoflip(PVOID lpvInBuffer, PVOID lpvOutBuffer);
VOID DxRegisterEvent(PVOID lpvInBuffer, PVOID lpvOutBuffer);
VOID DxUnregisterEvent(PVOID lpvInBuffer, PVOID lpvOutBuffer);
VOID DxGetPolarity(PVOID lpvInBuffer, PVOID lpvOutBuffer);
VOID DxOpenVpCatureDevice(PVOID lpvInBuffer, PVOID lpvOutBuffer);
VOID DxAddVpCaptureBuffer(PVOID lpvInBuffer, PVOID lpvOutBuffer);
VOID DxFlushVpCaptureBuffs(PVOID lpvInBuffer, PVOID lpvOutBuffer);
/* Internal driver table being use as looking up table for correct size of structs */
DWORD tblCheckInBuffer [] =
{
/* DD_DXAPI_GETVERSIONNUMBER */
0,
/* DD_DXAPI_CLOSEHANDLE */
sizeof(DDCLOSEHANDLE),
0, // DD_DXAPI_OPENDIRECTDRAW
0, // DD_DXAPI_OPENSURFACE
0, // DD_DXAPI_OPENVIDEOPORT
0, // DD_DXAPI_GETKERNELCAPS
0, // DD_DXAPI_GET_VP_FIELD_NUMBER
0, // DD_DXAPI_SET_VP_FIELD_NUMBER
0, // DD_DXAPI_SET_VP_SKIP_FIELD
0, // DD_DXAPI_GET_SURFACE_STATE
0, // DD_DXAPI_SET_SURFACE_STATE
0, // DD_DXAPI_LOCK
/* DD_DXAPI_FLIP_OVERLAY */
sizeof(DDFLIPOVERLAY),
/* DD_DXAPI_FLIP_VP */
sizeof(DDFLIPVIDEOPORT),
/* DD_DXAPI_GET_CURRENT_VP_AUTOFLIP_SURFACE */
sizeof(DDGETAUTOFLIPIN),
/* DD_DXAPI_GET_LAST_VP_AUTOFLIP_SURFACE */
sizeof(DDGETAUTOFLIPIN),
/* DD_DXAPI_REGISTER_CALLBACK */
sizeof(DDREGISTERCALLBACK),
/* DD_DXAPI_UNREGISTER_CALLBACK */
sizeof(DDREGISTERCALLBACK),
/* DD_DXAPI_GET_POLARITY */
sizeof(DDGETPOLARITYIN),
/* DD_DXAPI_OPENVPCAPTUREDEVICE */
sizeof(DDOPENVPCAPTUREDEVICEIN),
/* DD_DXAPI_ADDVPCAPTUREBUFFER */
sizeof(DDADDVPCAPTUREBUFF),
/* DD_DXAPI_FLUSHVPCAPTUREBUFFERS */
sizeof(HANDLE)
};
DWORD tblCheckOutBuffer [] =
{
/* DD_DXAPI_GETVERSIONNUMBER */
sizeof(DDGETVERSIONNUMBER),
/* DD_DXAPI_CLOSEHANDLE */
sizeof(DWORD),
0, // DD_DXAPI_OPENDIRECTDRAW
0, // DD_DXAPI_OPENSURFACE
0, // DD_DXAPI_OPENVIDEOPORT
0, // DD_DXAPI_GETKERNELCAPS
0, // DD_DXAPI_GET_VP_FIELD_NUMBER
0, // DD_DXAPI_SET_VP_FIELD_NUMBER
0, // DD_DXAPI_SET_VP_SKIP_FIELD
0, // DD_DXAPI_GET_SURFACE_STATE
0, // DD_DXAPI_SET_SURFACE_STATE
0, // DD_DXAPI_LOCK
/* DD_DXAPI_FLIP_OVERLAY */
sizeof(DWORD),
/* DD_DXAPI_FLIP_VP */
sizeof(DWORD),
/* DD_DXAPI_GET_CURRENT_VP_AUTOFLIP_SURFACE */
sizeof(DDGETAUTOFLIPOUT),
/* DD_DXAPI_GET_LAST_VP_AUTOFLIP_SURFACE */
sizeof(DDGETAUTOFLIPOUT),
/* DD_DXAPI_REGISTER_CALLBACK */
sizeof(DWORD),
/* DD_DXAPI_UNREGISTER_CALLBACK */
sizeof(DWORD),
/* DD_DXAPI_GET_POLARITY */
sizeof(DDGETPOLARITYOUT),
/* DD_DXAPI_OPENVPCAPTUREDEVICE */
sizeof(DDOPENVPCAPTUREDEVICEOUT),
/* DD_DXAPI_ADDVPCAPTUREBUFFER */
sizeof(DWORD),
/* DD_DXAPI_FLUSHVPCAPTUREBUFFERS */
sizeof(DWORD)
};
/* Internal driver function */
DRVFN gDxApiEntryPoint [] =
{
{DD_DXAPI_GETVERSIONNUMBER - DD_FIRST_DXAPI, (PFN) DxGetVersionNumber},
{DD_DXAPI_CLOSEHANDLE - DD_FIRST_DXAPI, (PFN) DxCloseHandle},
{DD_DXAPI_OPENDIRECTDRAW - DD_FIRST_DXAPI, (PFN) DxOpenDirectDraw},
{DD_DXAPI_OPENSURFACE - DD_FIRST_DXAPI, (PFN) DxOpenSurface},
{DD_DXAPI_OPENVIDEOPORT - DD_FIRST_DXAPI, (PFN) DxOpenVideoPort},
{DD_DXAPI_GETKERNELCAPS - DD_FIRST_DXAPI, (PFN) DxGetKernelCaps},
{DD_DXAPI_GET_VP_FIELD_NUMBER - DD_FIRST_DXAPI, (PFN) DxGetFieldNumber},
{DD_DXAPI_SET_VP_FIELD_NUMBER - DD_FIRST_DXAPI, (PFN) DxSetFieldNumber},
{DD_DXAPI_SET_VP_SKIP_FIELD - DD_FIRST_DXAPI, (PFN) DxSetSkipPattern},
{DD_DXAPI_GET_SURFACE_STATE - DD_FIRST_DXAPI, (PFN) DxGetSurfaceState},
{DD_DXAPI_SET_SURFACE_STATE - DD_FIRST_DXAPI, (PFN) DxSetSurfaceState},
{DD_DXAPI_LOCK - DD_FIRST_DXAPI, (PFN) DxLock},
{DD_DXAPI_FLIP_OVERLAY - DD_FIRST_DXAPI, (PFN) DxFlipOverlay},
{DD_DXAPI_FLIP_VP - DD_FIRST_DXAPI, (PFN) DxFlipVideoPort},
{DD_DXAPI_GET_CURRENT_VP_AUTOFLIP_SURFACE - DD_FIRST_DXAPI, (PFN) DxGetCurrentAutoflip},
{DD_DXAPI_GET_LAST_VP_AUTOFLIP_SURFACE - DD_FIRST_DXAPI, (PFN) DxGetPreviousAutoflip},
{DD_DXAPI_REGISTER_CALLBACK - DD_FIRST_DXAPI, (PFN) DxRegisterEvent},
{DD_DXAPI_UNREGISTER_CALLBACK - DD_FIRST_DXAPI, (PFN) DxUnregisterEvent},
{DD_DXAPI_GET_POLARITY - DD_FIRST_DXAPI, (PFN) DxGetPolarity},
{DD_DXAPI_OPENVPCAPTUREDEVICE - DD_FIRST_DXAPI, (PFN) DxOpenVpCatureDevice},
{DD_DXAPI_ADDVPCAPTUREBUFFER - DD_FIRST_DXAPI, (PFN) DxAddVpCaptureBuffer},
{DD_DXAPI_FLUSHVPCAPTUREBUFFERS - DD_FIRST_DXAPI, (PFN) DxFlushVpCaptureBuffs}
};

View file

@ -0,0 +1,232 @@
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
* PURPOSE: Native driver for dxg implementation
* FILE: drivers/directx/dxg/main.c
* PROGRAMER: Magnus olsen (magnus@greatlord.com)
* REVISION HISTORY:
* 15/10-2007 Magnus Olsen
*/
/* DDK/NDK/SDK Headers */
/* DDK/NDK/SDK Headers */
#include <ddk/ntddk.h>
#include <ddk/ntddmou.h>
#include <ddk/ntifs.h>
#include <ddk/tvout.h>
#include <ndk/ntndk.h>
#include <stdarg.h>
#include <windef.h>
#include <winerror.h>
#include <wingdi.h>
#include <winddi.h>
#include <winuser.h>
#include <prntfont.h>
#include <dde.h>
#include <wincon.h>
#include <ddk/ddkmapi.h>
#include "dxapi_driver.h"
NTSTATUS
DriverEntry(IN PVOID Context1,
IN PVOID Context2)
{
/*
* NOTE this driver will never be load, it only contain export list
* to win32k eng functions
*/
return STATUS_SUCCESS;
}
NTSTATUS
GsDriverEntry(IN PVOID Context1,
IN PVOID Context2)
{
return DriverEntry(Context1, Context2);
}
ULONG
DxApiGetVersion()
{
/* MSDN say this always return Direct Sound version 4.02 */
return 0x402;
}
/* protype from dxapi.h and ddkmapi.h from ddk, MSDN does not provide protype for this api, only which
* functions it support, if u search in msdn you found full documations for each function
* for each functions.
*/
DWORD
DxApi(ULONG dwFunctionNum,
PVOID lpvInBuffer,
ULONG cbInBuffer,
PVOID lpvOutBuffer,
ULONG cbOutBuffer)
{
dwFunctionNum -= DD_FIRST_DXAPI;
if ((lpvOutBuffer == NULL) ||
(dwFunctionNum < (DD_FIRST_DXAPI - DD_FIRST_DXAPI)) ||
(dwFunctionNum > (DD_DXAPI_FLUSHVPCAPTUREBUFFERS - DD_FIRST_DXAPI)) ||
(gDxApiEntryPoint[dwFunctionNum].pfn == NULL) ||
(cbInBuffer != tblCheckInBuffer[dwFunctionNum]) ||
(cbOutBuffer != tblCheckOutBuffer[dwFunctionNum]))
{
return 0;
}
gDxApiEntryPoint[dwFunctionNum].pfn(lpvInBuffer, lpvOutBuffer);
return 0;
}
VOID
DxGetVersionNumber(PVOID lpvInBuffer, PVOID lpvOutBuffer)
{
/* FIXME Unimplement */
}
VOID
DxCloseHandle(PVOID lpvInBuffer, PVOID lpvOutBuffer)
{
/* FIXME Unimplement */
}
VOID
DxOpenDirectDraw(PVOID lpvInBuffer, PVOID lpvOutBuffer)
{
/* FIXME Unimplement */
}
VOID
DxOpenSurface(PVOID lpvInBuffer, PVOID lpvOutBuffer)
{
/* FIXME Unimplement */
}
VOID
DxOpenVideoPort(PVOID lpvInBuffer, PVOID lpvOutBuffer)
{
/* FIXME Unimplement */
}
VOID
DxGetKernelCaps(PVOID lpvInBuffer, PVOID lpvOutBuffer)
{
/* FIXME Unimplement */
}
VOID
DxGetFieldNumber(PVOID lpvInBuffer, PVOID lpvOutBuffer)
{
/* FIXME Unimplement */
}
VOID
DxSetFieldNumber(PVOID lpvInBuffer, PVOID lpvOutBuffer)
{
/* FIXME Unimplement */
}
VOID
DxSetSkipPattern(PVOID lpvInBuffer, PVOID lpvOutBuffer)
{
/* FIXME Unimplement */
}
VOID
DxGetSurfaceState(PVOID lpvInBuffer, PVOID lpvOutBuffer)
{
/* FIXME Unimplement */
}
VOID
DxSetSurfaceState(PVOID lpvInBuffer, PVOID lpvOutBuffer)
{
/* FIXME Unimplement */
}
VOID
DxLock(PVOID lpvInBuffer, PVOID lpvOutBuffer)
{
/* FIXME Unimplement */
}
VOID
DxFlipOverlay(PVOID lpvInBuffer, PVOID lpvOutBuffer)
{
/* FIXME Unimplement */
}
VOID
DxFlipVideoPort(PVOID lpvInBuffer, PVOID lpvOutBuffer)
{
/* FIXME Unimplement */
}
VOID
DxGetCurrentAutoflip(PVOID lpvInBuffer, PVOID lpvOutBuffer)
{
/* FIXME Unimplement */
}
VOID
DxGetPreviousAutoflip(PVOID lpvInBuffer, PVOID lpvOutBuffer)
{
/* FIXME Unimplement */
}
VOID
DxRegisterEvent(PVOID lpvInBuffer, PVOID lpvOutBuffer)
{
/* FIXME Unimplement */
}
VOID
DxUnregisterEvent(PVOID lpvInBuffer, PVOID lpvOutBuffer)
{
/* FIXME Unimplement */
}
VOID
DxGetPolarity(PVOID lpvInBuffer, PVOID lpvOutBuffer)
{
/* FIXME Unimplement */
}
VOID
DxOpenVpCatureDevice(PVOID lpvInBuffer, PVOID lpvOutBuffer)
{
/* FIXME Unimplement */
}
VOID
DxAddVpCaptureBuffer(PVOID lpvInBuffer, PVOID lpvOutBuffer)
{
/* FIXME Unimplement */
}
VOID
DxFlushVpCaptureBuffs(PVOID lpvInBuffer, PVOID lpvOutBuffer)
{
/* FIXME Unimplement */
}

View file

@ -20,7 +20,7 @@ DriverEntry(IN PVOID Context1,
* NOTE this driver will never be load, it only contain export list
* to win32k eng functions
*/
return 0;
return STATUS_SUCCESS;
}