ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

videoprt.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.