4 * Copyright (C) 2007 ReactOS Team
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
27 typedef struct _VIDEO_PORT_FUNCTION_TABLE
{
30 } *PVIDEO_PORT_FUNCTION_TABLE
, VIDEO_PORT_FUNCTION_TABLE
;
32 /* GLOBAL VARIABLES ***********************************************************/
34 /* Create an array of entries with pfn, psz, for IntVideoPortGetProcAddress */
35 #define MAKE_ENTRY(FUNCTIONNAME) { FUNCTIONNAME, #FUNCTIONNAME }
36 const VIDEO_PORT_FUNCTION_TABLE VideoPortExports
[] = {
37 MAKE_ENTRY(VideoPortDDCMonitorHelper
),
38 MAKE_ENTRY(VideoPortDoDma
),
39 MAKE_ENTRY(VideoPortGetCommonBuffer
),
40 MAKE_ENTRY(VideoPortGetMdl
),
41 MAKE_ENTRY(VideoPortLockPages
),
42 MAKE_ENTRY(VideoPortSignalDmaComplete
),
43 MAKE_ENTRY(VideoPortUnlockPages
),
44 MAKE_ENTRY(VideoPortAssociateEventsWithDmaHandle
),
45 MAKE_ENTRY(VideoPortGetBytesUsed
),
46 MAKE_ENTRY(VideoPortSetBytesUsed
),
47 MAKE_ENTRY(VideoPortGetDmaContext
),
48 MAKE_ENTRY(VideoPortSetDmaContext
),
49 MAKE_ENTRY(VideoPortMapDmaMemory
),
50 MAKE_ENTRY(VideoPortUnmapDmaMemory
),
51 MAKE_ENTRY(VideoPortGetAgpServices
),
52 MAKE_ENTRY(VideoPortAllocateContiguousMemory
),
53 MAKE_ENTRY(VideoPortGetRomImage
),
54 MAKE_ENTRY(VideoPortGetAssociatedDeviceExtension
),
55 MAKE_ENTRY(VideoPortGetAssociatedDeviceID
),
56 MAKE_ENTRY(VideoPortAcquireDeviceLock
),
57 MAKE_ENTRY(VideoPortReleaseDeviceLock
),
58 MAKE_ENTRY(VideoPortAllocateBuffer
),
59 MAKE_ENTRY(VideoPortFreeCommonBuffer
),
60 MAKE_ENTRY(VideoPortReleaseBuffer
),
61 MAKE_ENTRY(VideoPortInterlockedIncrement
),
62 MAKE_ENTRY(VideoPortInterlockedDecrement
),
63 MAKE_ENTRY(VideoPortInterlockedExchange
),
64 MAKE_ENTRY(VideoPortGetVgaStatus
),
65 MAKE_ENTRY(VideoPortQueueDpc
),
66 MAKE_ENTRY(VideoPortEnumerateChildren
),
67 MAKE_ENTRY(VideoPortQueryServices
),
68 MAKE_ENTRY(VideoPortGetDmaAdapter
),
69 MAKE_ENTRY(VideoPortPutDmaAdapter
),
70 MAKE_ENTRY(VideoPortAllocateCommonBuffer
),
71 MAKE_ENTRY(VideoPortReleaseCommonBuffer
),
72 MAKE_ENTRY(VideoPortLockBuffer
),
73 MAKE_ENTRY(VideoPortUnlockBuffer
),
74 MAKE_ENTRY(VideoPortStartDma
),
75 MAKE_ENTRY(VideoPortCompleteDma
),
76 MAKE_ENTRY(VideoPortCreateEvent
),
77 MAKE_ENTRY(VideoPortDeleteEvent
),
78 MAKE_ENTRY(VideoPortSetEvent
),
79 MAKE_ENTRY(VideoPortClearEvent
),
80 MAKE_ENTRY(VideoPortReadStateEvent
),
81 MAKE_ENTRY(VideoPortWaitForSingleObject
),
82 MAKE_ENTRY(VideoPortAllocatePool
),
83 MAKE_ENTRY(VideoPortFreePool
),
84 MAKE_ENTRY(VideoPortCreateSpinLock
),
85 MAKE_ENTRY(VideoPortDeleteSpinLock
),
86 MAKE_ENTRY(VideoPortAcquireSpinLock
),
87 MAKE_ENTRY(VideoPortAcquireSpinLockAtDpcLevel
),
88 MAKE_ENTRY(VideoPortReleaseSpinLock
),
89 MAKE_ENTRY(VideoPortReleaseSpinLockFromDpcLevel
),
90 MAKE_ENTRY(VideoPortCheckForDeviceExistence
),
91 MAKE_ENTRY(VideoPortCreateSecondaryDisplay
),
92 MAKE_ENTRY(VideoPortFlushRegistry
),
93 MAKE_ENTRY(VideoPortQueryPerformanceCounter
),
94 MAKE_ENTRY(VideoPortGetVersion
),
95 MAKE_ENTRY(VideoPortRegisterBugcheckCallback
),
100 IntVideoPortGetProcAddress(
101 IN PVOID HwDeviceExtension
,
102 IN PUCHAR FunctionName
)
106 TRACE_(VIDEOPRT
, "VideoPortGetProcAddress(%s)\n", FunctionName
);
109 for (i
= 0; i
< ARRAYSIZE(VideoPortExports
); i
++)
111 if (!strcmp((PCHAR
)FunctionName
, VideoPortExports
[i
].Name
))
113 return (PVOID
)VideoPortExports
[i
].Address
;
117 ERR_(VIDEOPRT
, "VideoPortGetProcAddress: Can't resolve symbol %s\n", FunctionName
);