* If not, write to the Free Software Foundation,
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
- * $Id: videoprt.h,v 1.12 2004/12/18 22:14:39 blight Exp $
+ * $Id$
*/
#ifndef VIDEOPRT_H
#define VIDEOPRT_H
-#include <ddk/miniport.h>
-#include <ddk/video.h>
-#include <ddk/ntddvdeo.h>
-#include <ddk/ntapi.h>
+#include <stdio.h>
+#include <ntddk.h>
+#include <miniport.h>
+#include <video.h>
+#include <ntddvdeo.h>
+#include <ntagp.h>
+#include <ntifs.h>
+#include <ndk/ntndk.h>
+#include <reactos/helper.h>
+
#define NDEBUG
#include <debug.h>
-int swprintf(wchar_t *buf, const wchar_t *fmt, ...);
-int vsprintf(char *buf, const char *fmt, va_list args);
-
-BOOLEAN STDCALL
-HalDisableSystemInterrupt(ULONG Vector,
- KIRQL Irql);
-
-BOOLEAN STDCALL
-HalEnableSystemInterrupt(ULONG Vector,
- KIRQL Irql,
- KINTERRUPT_MODE InterruptMode);
-
-PIMAGE_NT_HEADERS STDCALL RtlImageNtHeader(IN PVOID BaseAddress);
-
#define TAG_VIDEO_PORT TAG('V', 'I', 'D', 'P')
+#define DPFLTR_IHVVIDEO_ID 0 /* FIXME */
+
typedef struct _VIDEO_PORT_ADDRESS_MAPPING
{
LIST_ENTRY List;
PVOID MappedAddress;
- PVOID MappedUserAddress;
ULONG NumberOfUchars;
PHYSICAL_ADDRESS IoAddress;
ULONG SystemIoBusNumber;
UINT MappingCount;
- UINT UserMappingCount;
} VIDEO_PORT_ADDRESS_MAPPING, *PVIDEO_PORT_ADDRESS_MAPPING;
+struct _VIDEO_PORT_AGP_VIRTUAL_MAPPING;
+
+typedef struct _VIDEO_PORT_AGP_MAPPING
+{
+ ULONG NumberOfPages;
+ PVOID MapHandle;
+ PHYSICAL_ADDRESS PhysicalAddress;
+} VIDEO_PORT_AGP_MAPPING, *PVIDEO_PORT_AGP_MAPPING;
+
+typedef struct _VIDEO_PORT_AGP_VIRTUAL_MAPPING
+{
+ PVIDEO_PORT_AGP_MAPPING AgpMapping;
+ HANDLE ProcessHandle;
+ PVOID MappedAddress;
+} VIDEO_PORT_AGP_VIRTUAL_MAPPING, *PVIDEO_PORT_AGP_VIRTUAL_MAPPING;
+
typedef struct _VIDEO_PORT_DRIVER_EXTENSION
{
VIDEO_HW_INITIALIZATION_DATA InitializationData;
typedef struct _VIDEO_PORT_DEVICE_EXTENSTION
{
+ ULONG DeviceNumber;
+ PDRIVER_OBJECT DriverObject;
PDEVICE_OBJECT PhysicalDeviceObject;
PDEVICE_OBJECT FunctionalDeviceObject;
+ PDEVICE_OBJECT NextDeviceObject;
UNICODE_STRING RegistryPath;
PKINTERRUPT InterruptObject;
KSPIN_LOCK InterruptSpinLock;
+ PCM_RESOURCE_LIST AllocatedResources;
ULONG InterruptVector;
ULONG InterruptLevel;
- ULONG AdapterInterfaceType;
+ BOOLEAN InterruptShared;
+ INTERFACE_TYPE AdapterInterfaceType;
ULONG SystemIoBusNumber;
ULONG SystemIoSlotNumber;
LIST_ENTRY AddressMappingListHead;
KDPC DpcObject;
VIDEO_PORT_DRIVER_EXTENSION *DriverExtension;
ULONG DeviceOpened;
+ AGP_BUS_INTERFACE_STANDARD AgpInterface;
+ KMUTEX DeviceLock;
CHAR MiniPortDeviceExtension[1];
} VIDEO_PORT_DEVICE_EXTENSION, *PVIDEO_PORT_DEVICE_EXTENSION;
VIDEO_PORT_DEVICE_EXTENSION, \
MiniPortDeviceExtension)
+/* agp.c */
+
+NTSTATUS
+IopInitiatePnpIrp(
+ PDEVICE_OBJECT DeviceObject,
+ PIO_STATUS_BLOCK IoStatusBlock,
+ ULONG MinorFunction,
+ PIO_STACK_LOCATION Stack OPTIONAL);
+
+NTSTATUS NTAPI
+IntAgpGetInterface(
+ IN PVOID HwDeviceExtension,
+ IN OUT PINTERFACE Interface);
+
/* dispatch.c */
-NTSTATUS STDCALL
+NTSTATUS NTAPI
IntVideoPortAddDevice(
IN PDRIVER_OBJECT DriverObject,
IN PDEVICE_OBJECT PhysicalDeviceObject);
-NTSTATUS STDCALL
+NTSTATUS NTAPI
IntVideoPortDispatchOpen(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp);
-NTSTATUS STDCALL
+NTSTATUS NTAPI
IntVideoPortDispatchClose(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp);
-NTSTATUS STDCALL
+NTSTATUS NTAPI
IntVideoPortDispatchCleanup(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp);
-NTSTATUS STDCALL
+NTSTATUS NTAPI
IntVideoPortDispatchDeviceControl(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp);
-NTSTATUS STDCALL
+NTSTATUS NTAPI
IntVideoPortDispatchPnp(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp);
-NTSTATUS STDCALL
+NTSTATUS NTAPI
IntVideoPortDispatchPower(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp);
-VOID STDCALL
+NTSTATUS NTAPI
+IntVideoPortDispatchWrite(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN PIRP Irp);
+
+VOID NTAPI
IntVideoPortUnload(PDRIVER_OBJECT DriverObject);
/* timer.c */
-BOOLEAN STDCALL
+BOOLEAN NTAPI
IntVideoPortSetupTimer(
IN PDEVICE_OBJECT DeviceObject,
IN PVIDEO_PORT_DRIVER_EXTENSION DriverExtension);
/* interrupt.c */
-BOOLEAN STDCALL
+BOOLEAN NTAPI
IntVideoPortSetupInterrupt(
IN PDEVICE_OBJECT DeviceObject,
IN PVIDEO_PORT_DRIVER_EXTENSION DriverExtension,
IN PVIDEO_PORT_CONFIG_INFO ConfigInfo);
+/* resource.c */
+
+NTSTATUS NTAPI
+IntVideoPortMapPhysicalMemory(
+ IN HANDLE Process,
+ IN PHYSICAL_ADDRESS PhysicalAddress,
+ IN ULONG SizeInBytes,
+ IN ULONG Protect,
+ IN OUT PVOID *VirtualAddress OPTIONAL);
+
/* videoprt.c */
extern ULONG CsrssInitialized;
-extern PEPROCESS Csrss;
+extern PKPROCESS Csrss;
-PVOID STDCALL
+VP_STATUS NTAPI
+VideoPortEnumerateChildren(
+ IN PVOID HwDeviceExtension,
+ IN PVOID Reserved);
+
+PVOID NTAPI
VideoPortGetProcAddress(
IN PVOID HwDeviceExtension,
IN PUCHAR FunctionName);
-VOID FASTCALL
-IntAttachToCSRSS(PEPROCESS *CallingProcess, PEPROCESS *PrevAttachedProcess);
+VOID FASTCALL
+IntAttachToCSRSS(PKPROCESS *CallingProcess, PKAPC_STATE ApcState);
+
+VOID FASTCALL
+IntDetachFromCSRSS(PKPROCESS *CallingProcess, PKAPC_STATE ApcState);
-VOID FASTCALL
-IntDetachFromCSRSS(PEPROCESS *CallingProcess, PEPROCESS *PrevAttachedProcess);
+NTSTATUS NTAPI
+IntVideoPortCreateAdapterDeviceObject(
+ IN PDRIVER_OBJECT DriverObject,
+ IN PVIDEO_PORT_DRIVER_EXTENSION DriverExtension,
+ IN PDEVICE_OBJECT PhysicalDeviceObject OPTIONAL,
+ OUT PDEVICE_OBJECT *DeviceObject OPTIONAL);
-NTSTATUS STDCALL
+NTSTATUS NTAPI
IntVideoPortFindAdapter(
IN PDRIVER_OBJECT DriverObject,
IN PVIDEO_PORT_DRIVER_EXTENSION DriverExtension,
- IN PDEVICE_OBJECT PhysicalDeviceObject);
+ IN PDEVICE_OBJECT DeviceObject);
/* int10.c */
-VP_STATUS STDCALL
+VP_STATUS NTAPI
IntInt10AllocateBuffer(
IN PVOID Context,
OUT PUSHORT Seg,
OUT PUSHORT Off,
IN OUT PULONG Length);
-VP_STATUS STDCALL
+VP_STATUS NTAPI
IntInt10FreeBuffer(
IN PVOID Context,
IN USHORT Seg,
IN USHORT Off);
-VP_STATUS STDCALL
+VP_STATUS NTAPI
IntInt10ReadMemory(
IN PVOID Context,
IN USHORT Seg,
OUT PVOID Buffer,
IN ULONG Length);
-VP_STATUS STDCALL
+VP_STATUS NTAPI
IntInt10WriteMemory(
IN PVOID Context,
IN USHORT Seg,
IN PVOID Buffer,
IN ULONG Length);
-VP_STATUS STDCALL
+VP_STATUS NTAPI
IntInt10CallBios(
IN PVOID Context,
IN OUT PINT10_BIOS_ARGUMENTS BiosArguments);
-VP_STATUS STDCALL
+VP_STATUS NTAPI
VideoPortInt10(
IN PVOID HwDeviceExtension,
IN PVIDEO_X86_BIOS_ARGUMENTS BiosArguments);