Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenvideoprt.h
Go to the documentation of this file.
00001 /* 00002 * VideoPort driver 00003 * 00004 * Copyright (C) 2002, 2003, 2004 ReactOS Team 00005 * 00006 * This library is free software; you can redistribute it and/or 00007 * modify it under the terms of the GNU Lesser General Public 00008 * License as published by the Free Software Foundation; either 00009 * version 2.1 of the License, or (at your option) any later version. 00010 * 00011 * This library is distributed in the hope that it will be useful, 00012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00014 * Lesser General Public License for more details. 00015 * 00016 * You should have received a copy of the GNU Lesser General Public 00017 * License along with this library; if not, write to the Free Software 00018 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 00019 * 00020 */ 00021 00022 #ifndef VIDEOPRT_H 00023 #define VIDEOPRT_H 00024 00025 #include <stdio.h> 00026 00027 #include <ntifs.h> 00028 #include <ndk/exfuncs.h> 00029 #include <ndk/halfuncs.h> 00030 #include <ndk/inbvfuncs.h> 00031 #include <ndk/kefuncs.h> 00032 #include <ndk/rtlfuncs.h> 00033 00034 #define __BROKEN__ 00035 #include <miniport.h> 00036 #include <video.h> 00037 #include <ntagp.h> 00038 #include <dderror.h> 00039 #include <windef.h> 00040 #include <initguid.h> 00041 #include <wdmguid.h> 00042 00043 #include <debug.h> 00044 00045 #define TAG_VIDEO_PORT 'PDIV' 00046 #define TAG_VIDEO_PORT_BUFFER '\0mpV' 00047 00048 typedef struct _VIDEO_PORT_ADDRESS_MAPPING 00049 { 00050 LIST_ENTRY List; 00051 PVOID MappedAddress; 00052 ULONG NumberOfUchars; 00053 PHYSICAL_ADDRESS IoAddress; 00054 ULONG SystemIoBusNumber; 00055 UINT MappingCount; 00056 } VIDEO_PORT_ADDRESS_MAPPING, *PVIDEO_PORT_ADDRESS_MAPPING; 00057 00058 struct _VIDEO_PORT_AGP_VIRTUAL_MAPPING; 00059 00060 typedef struct _VIDEO_PORT_AGP_MAPPING 00061 { 00062 ULONG NumberOfPages; 00063 PVOID MapHandle; 00064 PHYSICAL_ADDRESS PhysicalAddress; 00065 } VIDEO_PORT_AGP_MAPPING, *PVIDEO_PORT_AGP_MAPPING; 00066 00067 typedef struct _VIDEO_PORT_AGP_VIRTUAL_MAPPING 00068 { 00069 PVIDEO_PORT_AGP_MAPPING AgpMapping; 00070 HANDLE ProcessHandle; 00071 PVOID MappedAddress; 00072 } VIDEO_PORT_AGP_VIRTUAL_MAPPING, *PVIDEO_PORT_AGP_VIRTUAL_MAPPING; 00073 00074 typedef struct _VIDEO_PORT_DRIVER_EXTENSION 00075 { 00076 VIDEO_HW_INITIALIZATION_DATA InitializationData; 00077 PVOID HwContext; 00078 UNICODE_STRING RegistryPath; 00079 } VIDEO_PORT_DRIVER_EXTENSION, *PVIDEO_PORT_DRIVER_EXTENSION; 00080 00081 typedef struct _VIDEO_PORT_COMMON_EXTENSION 00082 { 00083 BOOLEAN Fdo; 00084 } VIDEO_PORT_COMMON_EXTENSION, *PVIDEO_PORT_COMMON_EXTENSION; 00085 00086 typedef struct _VIDEO_PORT_DEVICE_EXTENSTION 00087 { 00088 VIDEO_PORT_COMMON_EXTENSION Common; 00089 ULONG DeviceNumber; 00090 PDRIVER_OBJECT DriverObject; 00091 PDEVICE_OBJECT PhysicalDeviceObject; 00092 PDEVICE_OBJECT FunctionalDeviceObject; 00093 PDEVICE_OBJECT NextDeviceObject; 00094 UNICODE_STRING RegistryPath; 00095 PKINTERRUPT InterruptObject; 00096 KSPIN_LOCK InterruptSpinLock; 00097 PCM_RESOURCE_LIST AllocatedResources; 00098 ULONG InterruptVector; 00099 ULONG InterruptLevel; 00100 BOOLEAN InterruptShared; 00101 INTERFACE_TYPE AdapterInterfaceType; 00102 ULONG SystemIoBusNumber; 00103 ULONG SystemIoSlotNumber; 00104 LIST_ENTRY AddressMappingListHead; 00105 KDPC DpcObject; 00106 VIDEO_PORT_DRIVER_EXTENSION *DriverExtension; 00107 ULONG DeviceOpened; 00108 AGP_BUS_INTERFACE_STANDARD AgpInterface; 00109 KMUTEX DeviceLock; 00110 LIST_ENTRY DmaAdapterList, ChildDeviceList; 00111 CHAR MiniPortDeviceExtension[1]; 00112 } VIDEO_PORT_DEVICE_EXTENSION, *PVIDEO_PORT_DEVICE_EXTENSION; 00113 00114 typedef struct _VIDEO_PORT_CHILD_EXTENSION 00115 { 00116 VIDEO_PORT_COMMON_EXTENSION Common; 00117 00118 ULONG ChildId; 00119 VIDEO_CHILD_TYPE ChildType; 00120 UCHAR ChildDescriptor[256]; 00121 00122 BOOLEAN EdidValid; 00123 00124 PDRIVER_OBJECT DriverObject; 00125 PDEVICE_OBJECT PhysicalDeviceObject; 00126 00127 LIST_ENTRY ListEntry; 00128 00129 CHAR ChildDeviceExtension[1]; 00130 } VIDEO_PORT_CHILD_EXTENSION, *PVIDEO_PORT_CHILD_EXTENSION; 00131 00132 #define VIDEO_PORT_GET_CHILD_EXTENSION(MiniportExtension) \ 00133 CONTAINING_RECORD( \ 00134 MiniportExtension, \ 00135 VIDEO_PORT_CHILD_EXTENSION, \ 00136 ChildDeviceExtension) 00137 00138 #define VIDEO_PORT_GET_DEVICE_EXTENSION(MiniportExtension) \ 00139 CONTAINING_RECORD( \ 00140 MiniportExtension, \ 00141 VIDEO_PORT_DEVICE_EXTENSION, \ 00142 MiniPortDeviceExtension) 00143 00144 typedef struct _VIDEO_PORT_EVENT 00145 { 00146 ENG_EVENT; 00147 } VIDEO_PORT_EVENT, *PVIDEO_PORT_EVENT; 00148 00149 /* agp.c */ 00150 00151 NTSTATUS 00152 IopInitiatePnpIrp( 00153 PDEVICE_OBJECT DeviceObject, 00154 PIO_STATUS_BLOCK IoStatusBlock, 00155 UCHAR MinorFunction, 00156 PIO_STACK_LOCATION Stack OPTIONAL); 00157 00158 NTSTATUS NTAPI 00159 IntAgpGetInterface( 00160 IN PVOID HwDeviceExtension, 00161 IN OUT PINTERFACE Interface); 00162 00163 /* child.c */ 00164 00165 NTSTATUS NTAPI 00166 IntVideoPortDispatchPdoPnp( 00167 IN PDEVICE_OBJECT DeviceObject, 00168 IN PIRP Irp); 00169 00170 /* dispatch.c */ 00171 00172 NTSTATUS NTAPI 00173 IntVideoPortAddDevice( 00174 IN PDRIVER_OBJECT DriverObject, 00175 IN PDEVICE_OBJECT PhysicalDeviceObject); 00176 00177 NTSTATUS NTAPI 00178 IntVideoPortDispatchOpen( 00179 IN PDEVICE_OBJECT DeviceObject, 00180 IN PIRP Irp); 00181 00182 NTSTATUS NTAPI 00183 IntVideoPortDispatchClose( 00184 IN PDEVICE_OBJECT DeviceObject, 00185 IN PIRP Irp); 00186 00187 NTSTATUS NTAPI 00188 IntVideoPortDispatchCleanup( 00189 IN PDEVICE_OBJECT DeviceObject, 00190 IN PIRP Irp); 00191 00192 NTSTATUS NTAPI 00193 IntVideoPortDispatchDeviceControl( 00194 IN PDEVICE_OBJECT DeviceObject, 00195 IN PIRP Irp); 00196 00197 NTSTATUS NTAPI 00198 IntVideoPortDispatchPnp( 00199 IN PDEVICE_OBJECT DeviceObject, 00200 IN PIRP Irp); 00201 00202 NTSTATUS NTAPI 00203 IntVideoPortDispatchPower( 00204 IN PDEVICE_OBJECT DeviceObject, 00205 IN PIRP Irp); 00206 00207 NTSTATUS NTAPI 00208 IntVideoPortDispatchSystemControl( 00209 IN PDEVICE_OBJECT DeviceObject, 00210 IN PIRP Irp); 00211 00212 NTSTATUS NTAPI 00213 IntVideoPortDispatchWrite( 00214 IN PDEVICE_OBJECT DeviceObject, 00215 IN PIRP Irp); 00216 00217 VOID NTAPI 00218 IntVideoPortUnload(PDRIVER_OBJECT DriverObject); 00219 00220 /* timer.c */ 00221 00222 BOOLEAN NTAPI 00223 IntVideoPortSetupTimer( 00224 IN PDEVICE_OBJECT DeviceObject, 00225 IN PVIDEO_PORT_DRIVER_EXTENSION DriverExtension); 00226 00227 /* interrupt.c */ 00228 00229 BOOLEAN NTAPI 00230 IntVideoPortSetupInterrupt( 00231 IN PDEVICE_OBJECT DeviceObject, 00232 IN PVIDEO_PORT_DRIVER_EXTENSION DriverExtension, 00233 IN PVIDEO_PORT_CONFIG_INFO ConfigInfo); 00234 00235 /* resource.c */ 00236 00237 NTSTATUS NTAPI 00238 IntVideoPortFilterResourceRequirements( 00239 IN PDEVICE_OBJECT DeviceObject, 00240 IN PIRP Irp); 00241 00242 NTSTATUS NTAPI 00243 IntVideoPortMapPhysicalMemory( 00244 IN HANDLE Process, 00245 IN PHYSICAL_ADDRESS PhysicalAddress, 00246 IN ULONG SizeInBytes, 00247 IN ULONG Protect, 00248 IN OUT PVOID *VirtualAddress OPTIONAL); 00249 00250 /* videoprt.c */ 00251 00252 extern ULONG CsrssInitialized; 00253 extern PKPROCESS Csrss; 00254 extern ULONG VideoPortDeviceNumber; 00255 00256 VOID FASTCALL 00257 IntAttachToCSRSS(PKPROCESS *CallingProcess, PKAPC_STATE ApcState); 00258 00259 VOID FASTCALL 00260 IntDetachFromCSRSS(PKPROCESS *CallingProcess, PKAPC_STATE ApcState); 00261 00262 NTSTATUS NTAPI 00263 IntVideoPortCreateAdapterDeviceObject( 00264 IN PDRIVER_OBJECT DriverObject, 00265 IN PVIDEO_PORT_DRIVER_EXTENSION DriverExtension, 00266 IN PDEVICE_OBJECT PhysicalDeviceObject OPTIONAL, 00267 OUT PDEVICE_OBJECT *DeviceObject OPTIONAL); 00268 00269 NTSTATUS NTAPI 00270 IntVideoPortFindAdapter( 00271 IN PDRIVER_OBJECT DriverObject, 00272 IN PVIDEO_PORT_DRIVER_EXTENSION DriverExtension, 00273 IN PDEVICE_OBJECT DeviceObject); 00274 00275 PVOID NTAPI 00276 IntVideoPortGetProcAddress( 00277 IN PVOID HwDeviceExtension, 00278 IN PUCHAR FunctionName); 00279 00280 /* int10.c */ 00281 00282 VP_STATUS NTAPI 00283 IntInt10AllocateBuffer( 00284 IN PVOID Context, 00285 OUT PUSHORT Seg, 00286 OUT PUSHORT Off, 00287 IN OUT PULONG Length); 00288 00289 VP_STATUS NTAPI 00290 IntInt10FreeBuffer( 00291 IN PVOID Context, 00292 IN USHORT Seg, 00293 IN USHORT Off); 00294 00295 VP_STATUS NTAPI 00296 IntInt10ReadMemory( 00297 IN PVOID Context, 00298 IN USHORT Seg, 00299 IN USHORT Off, 00300 OUT PVOID Buffer, 00301 IN ULONG Length); 00302 00303 VP_STATUS NTAPI 00304 IntInt10WriteMemory( 00305 IN PVOID Context, 00306 IN USHORT Seg, 00307 IN USHORT Off, 00308 IN PVOID Buffer, 00309 IN ULONG Length); 00310 00311 VP_STATUS NTAPI 00312 IntInt10CallBios( 00313 IN PVOID Context, 00314 IN OUT PINT10_BIOS_ARGUMENTS BiosArguments); 00315 00316 #endif /* VIDEOPRT_H */ Generated on Sat May 26 2012 04:36:59 for ReactOS by
1.7.6.1
|