Reactos
at master 140 lines 5.7 kB view raw
1#include <wdm.h> 2 3#include <windef.h> 4#include <winerror.h> 5#include <wingdi.h> 6#include <winddi.h> 7 8#include <ddkmapi.h> 9 10/* Prototypes */ 11VOID DxGetVersionNumber(PVOID lpvInBuffer, LPDDGETVERSIONNUMBER lpvOutBuffer); 12VOID DxCloseHandle(PVOID lpvInBuffer, PVOID lpvOutBuffer); 13VOID DxOpenDirectDraw(PVOID lpvInBuffer, PVOID lpvOutBuffer); 14VOID DxOpenSurface(PVOID lpvInBuffer, PVOID lpvOutBuffer); 15VOID DxOpenVideoPort(PVOID lpvInBuffer, PVOID lpvOutBuffer); 16VOID DxGetKernelCaps(PVOID lpvInBuffer, PVOID lpvOutBuffer); 17VOID DxGetFieldNumber(PVOID lpvInBuffer, PVOID lpvOutBuffer); 18VOID DxSetFieldNumber(PVOID lpvInBuffer, PVOID lpvOutBuffer); 19VOID DxSetSkipPattern(PVOID lpvInBuffer, PVOID lpvOutBuffer); 20VOID DxGetSurfaceState(PVOID lpvInBuffer, PVOID lpvOutBuffer); 21VOID DxSetSurfaceState(PVOID lpvInBuffer, PVOID lpvOutBuffer); 22VOID DxLock(PVOID lpvInBuffer, PVOID lpvOutBuffer); 23VOID DxFlipOverlay(PVOID lpvInBuffer, PVOID lpvOutBuffer); 24VOID DxFlipVideoPort(PVOID lpvInBuffer, PVOID lpvOutBuffer); 25VOID DxGetCurrentAutoflip(PVOID lpvInBuffer, PVOID lpvOutBuffer); 26VOID DxGetPreviousAutoflip(PVOID lpvInBuffer, PVOID lpvOutBuffer); 27VOID DxRegisterEvent(PVOID lpvInBuffer, PVOID lpvOutBuffer); 28VOID DxUnregisterEvent(PVOID lpvInBuffer, PVOID lpvOutBuffer); 29VOID DxGetPolarity(PVOID lpvInBuffer, PVOID lpvOutBuffer); 30VOID DxOpenVpCatureDevice(PVOID lpvInBuffer, PVOID lpvOutBuffer); 31VOID DxAddVpCaptureBuffer(PVOID lpvInBuffer, PVOID lpvOutBuffer); 32VOID DxFlushVpCaptureBuffs(PVOID lpvInBuffer, PVOID lpvOutBuffer); 33 34/* Internal driver table being use as looking up table for correct size of structs */ 35DWORD tblCheckInBuffer [] = 36{ 37 /* DD_DXAPI_GETVERSIONNUMBER */ 38 0, 39 /* DD_DXAPI_CLOSEHANDLE */ 40 sizeof(DDCLOSEHANDLE), 41 0, // DD_DXAPI_OPENDIRECTDRAW 42 0, // DD_DXAPI_OPENSURFACE 43 0, // DD_DXAPI_OPENVIDEOPORT 44 /* DD_DXAPI_GETKERNELCAPS */ 45 sizeof(HANDLE), 46 /* DD_DXAPI_GET_VP_FIELD_NUMBER */ 47 sizeof(DDGETFIELDNUMIN), 48 0, // DD_DXAPI_SET_VP_FIELD_NUMBER 49 0, // DD_DXAPI_SET_VP_SKIP_FIELD 50 0, // DD_DXAPI_GET_SURFACE_STATE 51 0, // DD_DXAPI_SET_SURFACE_STATE 52 0, // DD_DXAPI_LOCK 53 /* DD_DXAPI_FLIP_OVERLAY */ 54 sizeof(DDFLIPOVERLAY), 55 /* DD_DXAPI_FLIP_VP */ 56 sizeof(DDFLIPVIDEOPORT), 57 /* DD_DXAPI_GET_CURRENT_VP_AUTOFLIP_SURFACE */ 58 sizeof(DDGETAUTOFLIPIN), 59 /* DD_DXAPI_GET_LAST_VP_AUTOFLIP_SURFACE */ 60 sizeof(DDGETAUTOFLIPIN), 61 /* DD_DXAPI_REGISTER_CALLBACK */ 62 sizeof(DDREGISTERCALLBACK), 63 /* DD_DXAPI_UNREGISTER_CALLBACK */ 64 sizeof(DDREGISTERCALLBACK), 65 /* DD_DXAPI_GET_POLARITY */ 66 sizeof(DDGETPOLARITYIN), 67 /* DD_DXAPI_OPENVPCAPTUREDEVICE */ 68 sizeof(DDOPENVPCAPTUREDEVICEIN), 69 /* DD_DXAPI_ADDVPCAPTUREBUFFER */ 70 sizeof(DDADDVPCAPTUREBUFF), 71 /* DD_DXAPI_FLUSHVPCAPTUREBUFFERS */ 72 sizeof(HANDLE) 73}; 74 75DWORD tblCheckOutBuffer [] = 76{ 77 /* DD_DXAPI_GETVERSIONNUMBER */ 78 sizeof(DDGETVERSIONNUMBER), 79 /* DD_DXAPI_CLOSEHANDLE */ 80 sizeof(DWORD), 81 0, // DD_DXAPI_OPENDIRECTDRAW 82 0, // DD_DXAPI_OPENSURFACE 83 0, // DD_DXAPI_OPENVIDEOPORT 84 /* DD_DXAPI_GETKERNELCAPS */ 85 sizeof(DDGETKERNELCAPSOUT), 86 /* DD_DXAPI_GET_VP_FIELD_NUMBER */ 87 sizeof(DDGETFIELDNUMOUT), 88 0, // DD_DXAPI_SET_VP_FIELD_NUMBER 89 0, // DD_DXAPI_SET_VP_SKIP_FIELD 90 0, // DD_DXAPI_GET_SURFACE_STATE 91 0, // DD_DXAPI_SET_SURFACE_STATE 92 0, // DD_DXAPI_LOCK 93 /* DD_DXAPI_FLIP_OVERLAY */ 94 sizeof(DWORD), 95 /* DD_DXAPI_FLIP_VP */ 96 sizeof(DWORD), 97 /* DD_DXAPI_GET_CURRENT_VP_AUTOFLIP_SURFACE */ 98 sizeof(DDGETAUTOFLIPOUT), 99 /* DD_DXAPI_GET_LAST_VP_AUTOFLIP_SURFACE */ 100 sizeof(DDGETAUTOFLIPOUT), 101 /* DD_DXAPI_REGISTER_CALLBACK */ 102 sizeof(DWORD), 103 /* DD_DXAPI_UNREGISTER_CALLBACK */ 104 sizeof(DWORD), 105 /* DD_DXAPI_GET_POLARITY */ 106 sizeof(DDGETPOLARITYOUT), 107 /* DD_DXAPI_OPENVPCAPTUREDEVICE */ 108 sizeof(DDOPENVPCAPTUREDEVICEOUT), 109 /* DD_DXAPI_ADDVPCAPTUREBUFFER */ 110 sizeof(DWORD), 111 /* DD_DXAPI_FLUSHVPCAPTUREBUFFERS */ 112 sizeof(DWORD) 113}; 114 115/* Internal driver function */ 116DRVFN gDxApiEntryPoint [] = 117{ 118 {DD_DXAPI_GETVERSIONNUMBER - DD_FIRST_DXAPI, (PFN) DxGetVersionNumber}, 119 {DD_DXAPI_CLOSEHANDLE - DD_FIRST_DXAPI, (PFN) DxCloseHandle}, 120 {DD_DXAPI_OPENDIRECTDRAW - DD_FIRST_DXAPI, (PFN) DxOpenDirectDraw}, 121 {DD_DXAPI_OPENSURFACE - DD_FIRST_DXAPI, (PFN) DxOpenSurface}, 122 {DD_DXAPI_OPENVIDEOPORT - DD_FIRST_DXAPI, (PFN) DxOpenVideoPort}, 123 {DD_DXAPI_GETKERNELCAPS - DD_FIRST_DXAPI, (PFN) DxGetKernelCaps}, 124 {DD_DXAPI_GET_VP_FIELD_NUMBER - DD_FIRST_DXAPI, (PFN) DxGetFieldNumber}, 125 {DD_DXAPI_SET_VP_FIELD_NUMBER - DD_FIRST_DXAPI, (PFN) DxSetFieldNumber}, 126 {DD_DXAPI_SET_VP_SKIP_FIELD - DD_FIRST_DXAPI, (PFN) DxSetSkipPattern}, 127 {DD_DXAPI_GET_SURFACE_STATE - DD_FIRST_DXAPI, (PFN) DxGetSurfaceState}, 128 {DD_DXAPI_SET_SURFACE_STATE - DD_FIRST_DXAPI, (PFN) DxSetSurfaceState}, 129 {DD_DXAPI_LOCK - DD_FIRST_DXAPI, (PFN) DxLock}, 130 {DD_DXAPI_FLIP_OVERLAY - DD_FIRST_DXAPI, (PFN) DxFlipOverlay}, 131 {DD_DXAPI_FLIP_VP - DD_FIRST_DXAPI, (PFN) DxFlipVideoPort}, 132 {DD_DXAPI_GET_CURRENT_VP_AUTOFLIP_SURFACE - DD_FIRST_DXAPI, (PFN) DxGetCurrentAutoflip}, 133 {DD_DXAPI_GET_LAST_VP_AUTOFLIP_SURFACE - DD_FIRST_DXAPI, (PFN) DxGetPreviousAutoflip}, 134 {DD_DXAPI_REGISTER_CALLBACK - DD_FIRST_DXAPI, (PFN) DxRegisterEvent}, 135 {DD_DXAPI_UNREGISTER_CALLBACK - DD_FIRST_DXAPI, (PFN) DxUnregisterEvent}, 136 {DD_DXAPI_GET_POLARITY - DD_FIRST_DXAPI, (PFN) DxGetPolarity}, 137 {DD_DXAPI_OPENVPCAPTUREDEVICE - DD_FIRST_DXAPI, (PFN) DxOpenVpCatureDevice}, 138 {DD_DXAPI_ADDVPCAPTUREBUFFER - DD_FIRST_DXAPI, (PFN) DxAddVpCaptureBuffer}, 139 {DD_DXAPI_FLUSHVPCAPTUREBUFFERS - DD_FIRST_DXAPI, (PFN) DxFlushVpCaptureBuffs} 140};