mirror of
https://github.com/reactos/reactos.git
synced 2024-12-27 09:34:43 +00:00
Moved to drivers\dd\videoprt
svn path=/trunk/; revision=4153
This commit is contained in:
parent
e942503f49
commit
7f3777d9ad
7 changed files with 0 additions and 1001 deletions
|
@ -1,4 +0,0 @@
|
|||
vidport.coff
|
||||
*.o
|
||||
*.sym
|
||||
*.sys
|
|
@ -1,15 +0,0 @@
|
|||
# $Id: makefile,v 1.15 2001/08/21 20:13:12 chorns Exp $
|
||||
|
||||
PATH_TO_TOP = ../../..
|
||||
|
||||
TARGET_TYPE = export_driver
|
||||
|
||||
TARGET_NAME = vidport
|
||||
|
||||
TARGET_CFLAGS =
|
||||
|
||||
TARGET_OBJECTS = vidport.o
|
||||
|
||||
include $(PATH_TO_TOP)/rules.mak
|
||||
|
||||
include $(TOOLS_PATH)/helper.mk
|
|
@ -1,806 +0,0 @@
|
|||
/* $Id: vidport.c,v 1.25 2002/09/08 10:22:08 chorns Exp $
|
||||
*
|
||||
* VideoPort driver
|
||||
* Written by Rex Jolliff
|
||||
*/
|
||||
|
||||
#include <ddk/ntddk.h>
|
||||
#include <ddk/ntddvid.h>
|
||||
|
||||
#include "../../../ntoskrnl/include/internal/v86m.h"
|
||||
|
||||
#include "vidport.h"
|
||||
|
||||
#define NDEBUG
|
||||
#include <debug.h>
|
||||
|
||||
//#define UNIMPLEMENTED do {DbgPrint("%s:%d: Function not implemented", __FILE__, __LINE__); for(;;);} while (0)
|
||||
|
||||
#define VERSION "0.0.0"
|
||||
|
||||
static VOID STDCALL VidStartIo(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
|
||||
static NTSTATUS STDCALL VidDispatchOpenClose(IN PDEVICE_OBJECT pDO, IN PIRP Irp);
|
||||
static NTSTATUS STDCALL VidDispatchDeviceControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
|
||||
|
||||
static BOOLEAN CsrssInitialized = FALSE;
|
||||
static HANDLE CsrssHandle = 0;
|
||||
static struct _EPROCESS* Csrss = NULL;
|
||||
|
||||
PBYTE ReturnCsrssAddress(void)
|
||||
{
|
||||
return (PBYTE)Csrss;
|
||||
}
|
||||
|
||||
// ------------------------------------------------------- Public Interface
|
||||
|
||||
// DriverEntry
|
||||
//
|
||||
// DESCRIPTION:
|
||||
// This function initializes the driver.
|
||||
//
|
||||
// RUN LEVEL:
|
||||
// PASSIVE_LEVEL
|
||||
//
|
||||
// ARGUMENTS:
|
||||
// IN PDRIVER_OBJECT DriverObject System allocated Driver Object
|
||||
// for this driver
|
||||
// IN PUNICODE_STRING RegistryPath Name of registry driver service
|
||||
// key
|
||||
//
|
||||
// RETURNS:
|
||||
// NTSTATUS
|
||||
|
||||
STDCALL NTSTATUS
|
||||
DriverEntry(IN PDRIVER_OBJECT DriverObject,
|
||||
IN PUNICODE_STRING RegistryPath)
|
||||
{
|
||||
return(STATUS_SUCCESS);
|
||||
}
|
||||
|
||||
VOID
|
||||
VideoPortDebugPrint(IN ULONG DebugPrintLevel,
|
||||
IN PCHAR DebugMessage, ...)
|
||||
{
|
||||
char Buffer[256];
|
||||
va_list ap;
|
||||
|
||||
/*
|
||||
if (DebugPrintLevel > InternalDebugLevel)
|
||||
return;
|
||||
*/
|
||||
va_start (ap, DebugMessage);
|
||||
vsprintf (Buffer, DebugMessage, ap);
|
||||
va_end (ap);
|
||||
|
||||
DbgPrint (Buffer);
|
||||
}
|
||||
|
||||
VP_STATUS
|
||||
STDCALL
|
||||
VideoPortDisableInterrupt(IN PVOID HwDeviceExtension)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
VP_STATUS
|
||||
STDCALL
|
||||
VideoPortEnableInterrupt(IN PVOID HwDeviceExtension)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
VideoPortFreeDeviceBase(IN PVOID HwDeviceExtension,
|
||||
IN PVOID MappedAddress)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
ULONG
|
||||
STDCALL
|
||||
VideoPortGetBusData(IN PVOID HwDeviceExtension,
|
||||
IN BUS_DATA_TYPE BusDataType,
|
||||
IN ULONG SlotNumber,
|
||||
OUT PVOID Buffer,
|
||||
IN ULONG Offset,
|
||||
IN ULONG Length)
|
||||
{
|
||||
return HalGetBusDataByOffset(BusDataType,
|
||||
0,
|
||||
SlotNumber,
|
||||
Buffer,
|
||||
Offset,
|
||||
Length);
|
||||
}
|
||||
|
||||
UCHAR
|
||||
STDCALL
|
||||
VideoPortGetCurrentIrql(VOID)
|
||||
{
|
||||
return KeGetCurrentIrql();
|
||||
}
|
||||
|
||||
PVOID
|
||||
STDCALL
|
||||
VideoPortGetDeviceBase(IN PVOID HwDeviceExtension,
|
||||
IN PHYSICAL_ADDRESS IoAddress,
|
||||
IN ULONG NumberOfUchars,
|
||||
IN UCHAR InIoSpace)
|
||||
{
|
||||
if (InIoSpace)
|
||||
{
|
||||
return MmMapIoSpace(IoAddress, NumberOfUchars, FALSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
VP_STATUS
|
||||
STDCALL
|
||||
VideoPortGetDeviceData(IN PVOID HwDeviceExtension,
|
||||
IN VIDEO_DEVICE_DATA_TYPE DeviceDataType,
|
||||
IN PMINIPORT_QUERY_DEVICE_ROUTINE CallbackRoutine,
|
||||
IN PVOID Context)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
VP_STATUS
|
||||
STDCALL
|
||||
VideoPortGetAccessRanges(IN PVOID HwDeviceExtension,
|
||||
IN ULONG NumRequestedResources,
|
||||
IN PIO_RESOURCE_DESCRIPTOR RequestedResources OPTIONAL,
|
||||
IN ULONG NumAccessRanges,
|
||||
IN PVIDEO_ACCESS_RANGE AccessRanges,
|
||||
IN PVOID VendorId,
|
||||
IN PVOID DeviceId,
|
||||
IN PULONG Slot)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
VP_STATUS
|
||||
STDCALL
|
||||
VideoPortGetRegistryParameters(IN PVOID HwDeviceExtension,
|
||||
IN PWSTR ParameterName,
|
||||
IN UCHAR IsParameterFileName,
|
||||
IN PMINIPORT_GET_REGISTRY_ROUTINE GetRegistryRoutine,
|
||||
IN PVOID Context)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
ULONG STDCALL
|
||||
VideoPortInitialize(IN PVOID Context1,
|
||||
IN PVOID Context2,
|
||||
IN PVIDEO_HW_INITIALIZATION_DATA HwInitializationData,
|
||||
IN PVOID HwContext)
|
||||
{
|
||||
UCHAR Again;
|
||||
WCHAR DeviceBuffer[20];
|
||||
WCHAR SymlinkBuffer[20];
|
||||
NTSTATUS Status;
|
||||
PDRIVER_OBJECT MPDriverObject = (PDRIVER_OBJECT) Context1;
|
||||
PDEVICE_OBJECT MPDeviceObject;
|
||||
VIDEO_PORT_CONFIG_INFO ConfigInfo;
|
||||
PVIDEOPORT_EXTENSION_DATA ExtensionData;
|
||||
ULONG DeviceNumber = 0;
|
||||
UNICODE_STRING DeviceName;
|
||||
UNICODE_STRING SymlinkName;
|
||||
CLIENT_ID Cid;
|
||||
|
||||
/* Build Dispatch table from passed data */
|
||||
MPDriverObject->DriverStartIo = (PDRIVER_STARTIO) HwInitializationData->HwStartIO;
|
||||
|
||||
/* Create a unicode device name */
|
||||
Again = FALSE;
|
||||
do
|
||||
{
|
||||
swprintf(DeviceBuffer, L"\\Device\\Video%lu", DeviceNumber);
|
||||
RtlInitUnicodeString(&DeviceName, DeviceBuffer);
|
||||
|
||||
/* Create the device */
|
||||
Status = IoCreateDevice(MPDriverObject,
|
||||
HwInitializationData->HwDeviceExtensionSize +
|
||||
sizeof(VIDEOPORT_EXTENSION_DATA),
|
||||
&DeviceName,
|
||||
FILE_DEVICE_VIDEO,
|
||||
0,
|
||||
TRUE,
|
||||
&MPDeviceObject);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DbgPrint("IoCreateDevice call failed\n",0);
|
||||
return Status;
|
||||
}
|
||||
|
||||
MPDriverObject->DeviceObject = MPDeviceObject;
|
||||
|
||||
/* initialize the miniport drivers dispatch table */
|
||||
MPDriverObject->MajorFunction[IRP_MJ_CREATE] = VidDispatchOpenClose;
|
||||
MPDriverObject->MajorFunction[IRP_MJ_CLOSE] = VidDispatchOpenClose;
|
||||
MPDriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = VidDispatchDeviceControl;
|
||||
|
||||
/* create symbolic link "\??\DISPLAYx" */
|
||||
swprintf(SymlinkBuffer, L"\\??\\DISPLAY%lu", DeviceNumber+1);
|
||||
RtlInitUnicodeString (&SymlinkName,
|
||||
SymlinkBuffer);
|
||||
IoCreateSymbolicLink (&SymlinkName,
|
||||
&DeviceName);
|
||||
|
||||
ExtensionData =
|
||||
(PVIDEOPORT_EXTENSION_DATA) MPDeviceObject->DeviceExtension;
|
||||
ExtensionData->DeviceObject = MPDeviceObject;
|
||||
|
||||
/* Set the buffering strategy here... */
|
||||
/* If you change this, remember to change VidDispatchDeviceControl too */
|
||||
MPDeviceObject->Flags |= DO_BUFFERED_IO;
|
||||
|
||||
/* Call HwFindAdapter entry point */
|
||||
/* FIXME: Need to figure out what string to pass as param 3 */
|
||||
Status = HwInitializationData->HwFindAdapter(VPExtensionToMPExtension(ExtensionData),
|
||||
Context2,
|
||||
L"",
|
||||
&ConfigInfo,
|
||||
&Again);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DbgPrint("HwFindAdapter call failed\n");
|
||||
IoDeleteDevice(MPDeviceObject);
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
/* FIXME: Allocate hardware resources for device */
|
||||
|
||||
/* Allocate interrupt for device */
|
||||
if (HwInitializationData->HwInterrupt != NULL &&
|
||||
!(ConfigInfo.BusInterruptLevel == 0 &&
|
||||
ConfigInfo.BusInterruptVector == 0))
|
||||
{
|
||||
#if 0
|
||||
ExtensionData->IRQL = ConfigInfo.BusInterruptLevel;
|
||||
ExtensionData->InterruptLevel =
|
||||
HalGetInterruptVector(ConfigInfo.AdapterInterfaceType,
|
||||
ConfigInfo.SystemIoBusNumber,
|
||||
ConfigInfo.BusInterruptLevel,
|
||||
ConfigInfo.BusInterruptVector,
|
||||
&ExtensionData->IRQL,
|
||||
&ExtensionData->Affinity);
|
||||
KeInitializeSpinLock(&ExtensionData->InterruptSpinLock);
|
||||
Status = IoConnectInterrupt(&ExtensionData->InterruptObject,
|
||||
(PKSERVICE_ROUTINE)
|
||||
HwInitializationData->HwInterrupt,
|
||||
VPExtensionToMPExtension(ExtensionData),
|
||||
&ExtensionData->InterruptSpinLock,
|
||||
ExtensionData->InterruptLevel,
|
||||
ExtensionData->IRQL,
|
||||
ExtensionData->IRQL,
|
||||
ConfigInfo.InterruptMode,
|
||||
FALSE,
|
||||
ExtensionData->Affinity,
|
||||
FALSE);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DbgPrint("IoConnectInterrupt failed\n");
|
||||
IoDeleteDevice(MPDeviceObject);
|
||||
|
||||
return Status;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
DeviceNumber++;
|
||||
}
|
||||
while (Again);
|
||||
|
||||
/* FIXME: initialize timer routine for MP Driver */
|
||||
if (HwInitializationData->HwTimer != NULL)
|
||||
{
|
||||
Status = IoInitializeTimer(MPDeviceObject,
|
||||
(PIO_TIMER_ROUTINE)
|
||||
HwInitializationData->HwTimer,
|
||||
VPExtensionToMPExtension(ExtensionData));
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DbgPrint("IoInitializeTimer failed\n");
|
||||
|
||||
if (HwInitializationData->HwInterrupt != NULL)
|
||||
{
|
||||
IoDisconnectInterrupt(ExtensionData->InterruptObject);
|
||||
}
|
||||
IoDeleteDevice(MPDeviceObject);
|
||||
|
||||
return Status;
|
||||
}
|
||||
}
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
VP_STATUS STDCALL
|
||||
VideoPortInt10(IN PVOID HwDeviceExtension,
|
||||
IN PVIDEO_X86_BIOS_ARGUMENTS BiosArguments)
|
||||
{
|
||||
KV86M_REGISTERS Regs;
|
||||
NTSTATUS Status;
|
||||
|
||||
KeAttachProcess(Csrss);
|
||||
|
||||
memset(&Regs, 0, sizeof(Regs));
|
||||
Regs.Eax = BiosArguments->Eax;
|
||||
Regs.Ebx = BiosArguments->Ebx;
|
||||
Regs.Ecx = BiosArguments->Ecx;
|
||||
Regs.Edx = BiosArguments->Edx;
|
||||
Regs.Esi = BiosArguments->Esi;
|
||||
Regs.Edi = BiosArguments->Edi;
|
||||
Regs.Ebp = BiosArguments->Ebp;
|
||||
Status = Ke386CallBios(0x10, &Regs);
|
||||
|
||||
KeDetachProcess();
|
||||
|
||||
return(Status);
|
||||
}
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
VideoPortLogError(IN PVOID HwDeviceExtension,
|
||||
IN PVIDEO_REQUEST_PACKET Vrp OPTIONAL,
|
||||
IN VP_STATUS ErrorCode,
|
||||
IN ULONG UniqueId)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
VP_STATUS
|
||||
STDCALL
|
||||
VideoPortMapBankedMemory(IN PVOID HwDeviceExtension,
|
||||
IN PHYSICAL_ADDRESS PhysicalAddress,
|
||||
IN PULONG Length,
|
||||
IN PULONG InIoSpace,
|
||||
OUT PVOID *VirtualAddress,
|
||||
IN ULONG BankLength,
|
||||
IN UCHAR ReadWriteBank,
|
||||
IN PBANKED_SECTION_ROUTINE BankRoutine,
|
||||
IN PVOID Context)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
VP_STATUS
|
||||
STDCALL
|
||||
VideoPortMapMemory(IN PVOID HwDeviceExtension,
|
||||
IN PHYSICAL_ADDRESS PhysicalAddress,
|
||||
IN PULONG Length,
|
||||
IN PULONG InIoSpace,
|
||||
OUT PVOID *VirtualAddress)
|
||||
{
|
||||
if (*InIoSpace)
|
||||
{
|
||||
*VirtualAddress = MmMapIoSpace(PhysicalAddress, *Length, FALSE);
|
||||
|
||||
return *VirtualAddress != NULL ? STATUS_SUCCESS :
|
||||
STATUS_INSUFFICIENT_RESOURCES;
|
||||
}
|
||||
else
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
UCHAR
|
||||
STDCALL
|
||||
VideoPortReadPortUchar(IN PUCHAR Port)
|
||||
{
|
||||
return READ_PORT_UCHAR(Port);
|
||||
}
|
||||
|
||||
USHORT
|
||||
STDCALL
|
||||
VideoPortReadPortUshort(IN PUSHORT Port)
|
||||
{
|
||||
return READ_PORT_USHORT(Port);
|
||||
}
|
||||
|
||||
ULONG
|
||||
STDCALL
|
||||
VideoPortReadPortUlong(IN PULONG Port)
|
||||
{
|
||||
return READ_PORT_ULONG(Port);
|
||||
}
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
VideoPortReadPortBufferUchar(IN PUCHAR Port,
|
||||
OUT PUCHAR Buffer,
|
||||
IN ULONG Count)
|
||||
{
|
||||
READ_PORT_BUFFER_UCHAR(Port, Buffer, Count);
|
||||
}
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
VideoPortReadPortBufferUshort(IN PUSHORT Port,
|
||||
OUT PUSHORT Buffer,
|
||||
IN ULONG Count)
|
||||
{
|
||||
READ_PORT_BUFFER_USHORT(Port, Buffer, Count);
|
||||
}
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
VideoPortReadPortBufferUlong(IN PULONG Port,
|
||||
OUT PULONG Buffer,
|
||||
IN ULONG Count)
|
||||
{
|
||||
READ_PORT_BUFFER_ULONG(Port, Buffer, Count);
|
||||
}
|
||||
|
||||
UCHAR
|
||||
STDCALL
|
||||
VideoPortReadRegisterUchar(IN PUCHAR Register)
|
||||
{
|
||||
return READ_REGISTER_UCHAR(Register);
|
||||
}
|
||||
|
||||
USHORT
|
||||
STDCALL
|
||||
VideoPortReadRegisterUshort(IN PUSHORT Register)
|
||||
{
|
||||
return READ_REGISTER_USHORT(Register);
|
||||
}
|
||||
|
||||
ULONG
|
||||
STDCALL
|
||||
VideoPortReadRegisterUlong(IN PULONG Register)
|
||||
{
|
||||
return READ_REGISTER_ULONG(Register);
|
||||
}
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
VideoPortReadRegisterBufferUchar(IN PUCHAR Register,
|
||||
OUT PUCHAR Buffer,
|
||||
IN ULONG Count)
|
||||
{
|
||||
READ_REGISTER_BUFFER_UCHAR(Register, Buffer, Count);
|
||||
}
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
VideoPortReadRegisterBufferUshort(IN PUSHORT Register,
|
||||
OUT PUSHORT Buffer,
|
||||
IN ULONG Count)
|
||||
{
|
||||
READ_REGISTER_BUFFER_USHORT(Register, Buffer, Count);
|
||||
}
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
VideoPortReadRegisterBufferUlong(IN PULONG Register,
|
||||
OUT PULONG Buffer,
|
||||
IN ULONG Count)
|
||||
{
|
||||
READ_REGISTER_BUFFER_ULONG(Register, Buffer, Count);
|
||||
}
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
VideoPortScanRom(IN PVOID HwDeviceExtension,
|
||||
IN PUCHAR RomBase,
|
||||
IN ULONG RomLength,
|
||||
IN PUCHAR String)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
ULONG
|
||||
STDCALL
|
||||
VideoPortSetBusData(IN PVOID HwDeviceExtension,
|
||||
IN BUS_DATA_TYPE BusDataType,
|
||||
IN ULONG SlotNumber,
|
||||
IN PVOID Buffer,
|
||||
IN ULONG Offset,
|
||||
IN ULONG Length)
|
||||
{
|
||||
return HalSetBusDataByOffset(BusDataType,
|
||||
0,
|
||||
SlotNumber,
|
||||
Buffer,
|
||||
Offset,
|
||||
Length);
|
||||
}
|
||||
|
||||
VP_STATUS
|
||||
STDCALL
|
||||
VideoPortSetRegistryParameters(IN PVOID HwDeviceExtension,
|
||||
IN PWSTR ValueName,
|
||||
IN PVOID ValueData,
|
||||
IN ULONG ValueLength)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
VP_STATUS
|
||||
STDCALL
|
||||
VideoPortSetTrappedEmulatorPorts(IN PVOID HwDeviceExtension,
|
||||
IN ULONG NumAccessRanges,
|
||||
IN PVIDEO_ACCESS_RANGE AccessRange)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
VideoPortStartTimer(IN PVOID HwDeviceExtension)
|
||||
{
|
||||
PVIDEOPORT_EXTENSION_DATA ExtensionData =
|
||||
MPExtensionToVPExtension(HwDeviceExtension);
|
||||
|
||||
IoStartTimer(ExtensionData->DeviceObject);
|
||||
}
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
VideoPortStopTimer(IN PVOID HwDeviceExtension)
|
||||
{
|
||||
PVIDEOPORT_EXTENSION_DATA ExtensionData =
|
||||
MPExtensionToVPExtension(HwDeviceExtension);
|
||||
|
||||
IoStopTimer(ExtensionData->DeviceObject);
|
||||
}
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
VideoPortSynchronizeExecution(IN PVOID HwDeviceExtension,
|
||||
IN VIDEO_SYNCHRONIZE_PRIORITY Priority,
|
||||
IN PMINIPORT_SYNCHRONIZE_ROUTINE SynchronizeRoutine,
|
||||
OUT PVOID Context)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
VP_STATUS
|
||||
STDCALL
|
||||
VideoPortUnmapMemory(IN PVOID HwDeviceExtension,
|
||||
IN PVOID VirtualAddress,
|
||||
IN HANDLE ProcessHandle)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
VP_STATUS
|
||||
STDCALL
|
||||
VideoPortVerifyAccessRanges(IN PVOID HwDeviceExtension,
|
||||
IN ULONG NumAccessRanges,
|
||||
IN PVIDEO_ACCESS_RANGE AccessRanges)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
VideoPortWritePortUchar(IN PUCHAR Port,
|
||||
IN UCHAR Value)
|
||||
{
|
||||
WRITE_PORT_UCHAR(Port, Value);
|
||||
}
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
VideoPortWritePortUshort(IN PUSHORT Port,
|
||||
IN USHORT Value)
|
||||
{
|
||||
WRITE_PORT_USHORT(Port, Value);
|
||||
}
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
VideoPortWritePortUlong(IN PULONG Port,
|
||||
IN ULONG Value)
|
||||
{
|
||||
WRITE_PORT_ULONG(Port, Value);
|
||||
}
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
VideoPortWritePortBufferUchar(IN PUCHAR Port,
|
||||
IN PUCHAR Buffer,
|
||||
IN ULONG Count)
|
||||
{
|
||||
WRITE_PORT_BUFFER_UCHAR(Port, Buffer, Count);
|
||||
}
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
VideoPortWritePortBufferUshort(IN PUSHORT Port,
|
||||
IN PUSHORT Buffer,
|
||||
IN ULONG Count)
|
||||
{
|
||||
WRITE_PORT_BUFFER_USHORT(Port, Buffer, Count);
|
||||
}
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
VideoPortWritePortBufferUlong(IN PULONG Port,
|
||||
IN PULONG Buffer,
|
||||
IN ULONG Count)
|
||||
{
|
||||
WRITE_PORT_BUFFER_ULONG(Port, Buffer, Count);
|
||||
}
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
VideoPortWriteRegisterUchar(IN PUCHAR Register,
|
||||
IN UCHAR Value)
|
||||
{
|
||||
WRITE_REGISTER_UCHAR(Register, Value);
|
||||
}
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
VideoPortWriteRegisterUshort(IN PUSHORT Register,
|
||||
IN USHORT Value)
|
||||
{
|
||||
WRITE_REGISTER_USHORT(Register, Value);
|
||||
}
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
VideoPortWriteRegisterUlong(IN PULONG Register,
|
||||
IN ULONG Value)
|
||||
{
|
||||
WRITE_REGISTER_ULONG(Register, Value);
|
||||
}
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
VideoPortWriteRegisterBufferUchar(IN PUCHAR Register,
|
||||
IN PUCHAR Buffer,
|
||||
IN ULONG Count)
|
||||
{
|
||||
WRITE_REGISTER_BUFFER_UCHAR(Register, Buffer, Count);
|
||||
}
|
||||
|
||||
VOID STDCALL
|
||||
VideoPortWriteRegisterBufferUshort(IN PUSHORT Register,
|
||||
IN PUSHORT Buffer,
|
||||
IN ULONG Count)
|
||||
{
|
||||
WRITE_REGISTER_BUFFER_USHORT(Register, Buffer, Count);
|
||||
}
|
||||
|
||||
VOID STDCALL
|
||||
VideoPortWriteRegisterBufferUlong(IN PULONG Register,
|
||||
IN PULONG Buffer,
|
||||
IN ULONG Count)
|
||||
{
|
||||
WRITE_REGISTER_BUFFER_ULONG(Register, Buffer, Count);
|
||||
}
|
||||
|
||||
VOID STDCALL
|
||||
VideoPortZeroDeviceMemory(OUT PVOID Destination,
|
||||
IN ULONG Length)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
|
||||
// ------------------------------------------- Nondiscardable statics
|
||||
|
||||
// VidDispatchOpenClose
|
||||
//
|
||||
// DESCRIPTION:
|
||||
// Answer requests for Open/Close calls: a null operation
|
||||
//
|
||||
// RUN LEVEL:
|
||||
// PASSIVE_LEVEL
|
||||
//
|
||||
// ARGUMENTS:
|
||||
// Standard dispatch arguments
|
||||
//
|
||||
// RETURNS:
|
||||
// NTSTATUS
|
||||
//
|
||||
|
||||
static NTSTATUS STDCALL
|
||||
VidDispatchOpenClose(IN PDEVICE_OBJECT pDO,
|
||||
IN PIRP Irp)
|
||||
{
|
||||
PIO_STACK_LOCATION IrpStack;
|
||||
|
||||
DPRINT("VidDispatchOpenClose() called\n");
|
||||
|
||||
IrpStack = IoGetCurrentIrpStackLocation(Irp);
|
||||
|
||||
if (IrpStack->MajorFunction == IRP_MJ_CREATE &&
|
||||
CsrssInitialized == FALSE)
|
||||
{
|
||||
DPRINT("Referencing CSRSS\n");
|
||||
Csrss = PsGetCurrentProcess();
|
||||
CsrssInitialized = TRUE;
|
||||
DPRINT("Csrss %p\n", Csrss);
|
||||
}
|
||||
|
||||
Irp->IoStatus.Status = STATUS_SUCCESS;
|
||||
Irp->IoStatus.Information = FILE_OPENED;
|
||||
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
// VidStartIo
|
||||
//
|
||||
// DESCRIPTION:
|
||||
// Get the next requested I/O packet started
|
||||
//
|
||||
// RUN LEVEL:
|
||||
// DISPATCH_LEVEL
|
||||
//
|
||||
// ARGUMENTS:
|
||||
// Dispatch routine standard arguments
|
||||
//
|
||||
// RETURNS:
|
||||
// NTSTATUS
|
||||
//
|
||||
|
||||
static VOID STDCALL
|
||||
VidStartIo(IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PIRP Irp)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
// VidDispatchDeviceControl
|
||||
//
|
||||
// DESCRIPTION:
|
||||
// Answer requests for device control calls
|
||||
//
|
||||
// RUN LEVEL:
|
||||
// PASSIVE_LEVEL
|
||||
//
|
||||
// ARGUMENTS:
|
||||
// Standard dispatch arguments
|
||||
//
|
||||
// RETURNS:
|
||||
// NTSTATUS
|
||||
//
|
||||
|
||||
static NTSTATUS STDCALL
|
||||
VidDispatchDeviceControl(IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PIRP Irp)
|
||||
{
|
||||
PIO_STACK_LOCATION IrpStack;
|
||||
PVIDEO_REQUEST_PACKET vrp;
|
||||
|
||||
IrpStack = IoGetCurrentIrpStackLocation(Irp);
|
||||
|
||||
// Translate the IRP to a VRP
|
||||
vrp = ExAllocatePool(PagedPool, sizeof(VIDEO_REQUEST_PACKET));
|
||||
vrp->StatusBlock = ExAllocatePool(PagedPool, sizeof(STATUS_BLOCK));
|
||||
vrp->IoControlCode = IrpStack->Parameters.DeviceIoControl.IoControlCode;
|
||||
|
||||
// We're assuming METHOD_BUFFERED
|
||||
vrp->InputBuffer = Irp->AssociatedIrp.SystemBuffer;
|
||||
vrp->InputBufferLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;
|
||||
vrp->OutputBuffer = Irp->UserBuffer;
|
||||
vrp->OutputBufferLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;
|
||||
|
||||
// Call the Miniport Driver with the VRP
|
||||
DeviceObject->DriverObject->DriverStartIo(DeviceObject->DeviceExtension, (PIRP)vrp);
|
||||
|
||||
// Translate the VRP back into the IRP for OutputBuffer
|
||||
Irp->UserBuffer = vrp->OutputBuffer;
|
||||
IrpStack->Parameters.DeviceIoControl.OutputBufferLength = vrp->OutputBufferLength;
|
||||
|
||||
// Free the VRP
|
||||
ExFreePool(vrp->StatusBlock);
|
||||
ExFreePool(vrp);
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
}
|
|
@ -1,60 +0,0 @@
|
|||
; $Id: vidport.def,v 1.4 2001/05/02 12:37:06 jfilby Exp $
|
||||
;
|
||||
; vidport.def - export definition file for ReactOS
|
||||
;
|
||||
EXPORTS
|
||||
ReturnCsrssAddress
|
||||
VideoPortCompareMemory@12
|
||||
VideoPortDebugPrint
|
||||
VideoPortDisableInterrupt@4
|
||||
VideoPortEnableInterrupt@4
|
||||
VideoPortFreeDeviceBase@8
|
||||
VideoPortGetBusData@24
|
||||
VideoPortGetCurrentIrql@0
|
||||
VideoPortGetDeviceBase@20
|
||||
VideoPortGetDeviceData@16
|
||||
VideoPortGetAccessRanges@32
|
||||
VideoPortGetRegistryParameters@20
|
||||
VideoPortInitialize@16
|
||||
VideoPortInt10@8
|
||||
VideoPortLogError@16
|
||||
VideoPortMapBankedMemory@40
|
||||
VideoPortMapMemory@24
|
||||
VideoPortMoveMemory@12
|
||||
VideoPortReadPortUchar@4
|
||||
VideoPortReadPortUshort@4
|
||||
VideoPortReadPortUlong@4
|
||||
VideoPortReadPortBufferUchar@12
|
||||
VideoPortReadPortBufferUshort@12
|
||||
VideoPortReadPortBufferUlong@12
|
||||
VideoPortReadRegisterUchar@4
|
||||
VideoPortReadRegisterUshort@4
|
||||
VideoPortReadRegisterUlong@4
|
||||
VideoPortReadRegisterBufferUchar@12
|
||||
VideoPortReadRegisterBufferUshort@12
|
||||
VideoPortReadRegisterBufferUlong@12
|
||||
VideoPortScanRom@16
|
||||
VideoPortSetBusData@24
|
||||
VideoPortSetRegistryParameters@16
|
||||
VideoPortSetTrappedEmulatorPorts@12
|
||||
VideoPortStallExecution@4
|
||||
VideoPortStartTimer@4
|
||||
VideoPortStopTimer@4
|
||||
VideoPortSynchronizeExecution@16
|
||||
VideoPortUnmapMemory@12
|
||||
VideoPortVerifyAccessRanges@12
|
||||
VideoPortWritePortUchar@8
|
||||
VideoPortWritePortUshort@8
|
||||
VideoPortWritePortUlong@8
|
||||
VideoPortWritePortBufferUchar@12
|
||||
VideoPortWritePortBufferUshort@12
|
||||
VideoPortWritePortBufferUlong@12
|
||||
VideoPortWriteRegisterUchar@8
|
||||
VideoPortWriteRegisterUshort@8
|
||||
VideoPortWriteRegisterUlong@8
|
||||
VideoPortWriteRegisterBufferUchar@12
|
||||
VideoPortWriteRegisterBufferUshort@12
|
||||
VideoPortWriteRegisterBufferUlong@12
|
||||
VideoPortZeroMemory@8
|
||||
VideoPortZeroDeviceMemory@8
|
||||
|
|
@ -1,61 +0,0 @@
|
|||
; $Id: vidport.edf,v 1.4 2001/05/02 12:37:06 jfilby Exp $
|
||||
;
|
||||
; vidport.def - export definition file for ReactOS
|
||||
;
|
||||
EXPORTS
|
||||
ReturnCsrssAddress
|
||||
VideoPortCompareMemory=NTOSKRNL.RtlCompareMemory
|
||||
VideoPortDebugPrint
|
||||
VideoPortDisableInterrupt=VideoPortDisableInterrupt@4
|
||||
VideoPortEnableInterrupt=VideoPortEnableInterrupt@4
|
||||
VideoPortFreeDeviceBase=VideoPortFreeDeviceBase@8
|
||||
VideoPortGetBusData=VideoPortGetBusData@24
|
||||
VideoPortGetCurrentIrql=VideoPortGetCurrentIrql@0
|
||||
VideoPortGetDeviceBase=VideoPortGetDeviceBase@20
|
||||
VideoPortGetDeviceData=VideoPortGetDeviceData@16
|
||||
VideoPortGetAccessRanges=VideoPortGetAccessRanges@32
|
||||
VideoPortGetRegistryParameters=VideoPortGetRegistryParameters@20
|
||||
VideoPortInitialize=VideoPortInitialize@16
|
||||
VideoPortInt10=VideoPortInt10@8
|
||||
VideoPortLogError=VideoPortLogError@16
|
||||
VideoPortMapBankedMemory=VideoPortMapBankedMemory@40
|
||||
VideoPortMapMemory=VideoPortMapMemory@24
|
||||
VideoPortMoveMemory=NTOSKRNL.RtlMoveMemory
|
||||
VideoPortReadPortUchar=VideoPortReadPortUchar@4
|
||||
VideoPortReadPortUshort=VideoPortReadPortUshort@4
|
||||
VideoPortReadPortUlong=VideoPortReadPortUlong@4
|
||||
VideoPortReadPortBufferUchar=VideoPortReadPortBufferUchar@12
|
||||
VideoPortReadPortBufferUshort=VideoPortReadPortBufferUshort@12
|
||||
VideoPortReadPortBufferUlong=VideoPortReadPortBufferUlong@12
|
||||
VideoPortReadRegisterUchar=VideoPortReadRegisterUchar@4
|
||||
VideoPortReadRegisterUshort=VideoPortReadRegisterUshort@4
|
||||
VideoPortReadRegisterUlong=VideoPortReadRegisterUlong@4
|
||||
VideoPortReadRegisterBufferUchar=VideoPortReadRegisterBufferUchar@12
|
||||
VideoPortReadRegisterBufferUshort=VideoPortReadRegisterBufferUshort@12
|
||||
VideoPortReadRegisterBufferUlong=VideoPortReadRegisterBufferUlong@12
|
||||
VideoPortScanRom=VideoPortScanRom@16
|
||||
VideoPortSetBusData=VideoPortSetBusData@24
|
||||
VideoPortSetRegistryParameters=VideoPortSetRegistryParameters@16
|
||||
VideoPortSetTrappedEmulatorPorts=VideoPortSetTrappedEmulatorPorts@12
|
||||
;VideoPortStallExecution=HAL.KeStallExecutionProcessor
|
||||
VideoPortStallExecution=NTOSKRNL.KeStallExecutionProcessor
|
||||
VideoPortStartTimer=VideoPortStartTimer@4
|
||||
VideoPortStopTimer=VideoPortStopTimer@4
|
||||
VideoPortSynchronizeExecution=VideoPortSynchronizeExecution@16
|
||||
VideoPortUnmapMemory=VideoPortUnmapMemory@12
|
||||
VideoPortVerifyAccessRanges=VideoPortVerifyAccessRanges@12
|
||||
VideoPortWritePortUchar=VideoPortWritePortUchar@8
|
||||
VideoPortWritePortUshort=VideoPortWritePortUshort@8
|
||||
VideoPortWritePortUlong=VideoPortWritePortUlong@8
|
||||
VideoPortWritePortBufferUchar=VideoPortWritePortBufferUchar@12
|
||||
VideoPortWritePortBufferUshort=VideoPortWritePortBufferUshort@12
|
||||
VideoPortWritePortBufferUlong=VideoPortWritePortBufferUlong@12
|
||||
VideoPortWriteRegisterUchar=VideoPortWriteRegisterUchar@8
|
||||
VideoPortWriteRegisterUshort=VideoPortWriteRegisterUshort@8
|
||||
VideoPortWriteRegisterUlong=VideoPortWriteRegisterUlong@8
|
||||
VideoPortWriteRegisterBufferUchar=VideoPortWriteRegisterBufferUchar@12
|
||||
VideoPortWriteRegisterBufferUshort=VideoPortWriteRegisterBufferUshort@12
|
||||
VideoPortWriteRegisterBufferUlong=VideoPortWriteRegisterBufferUlong@12
|
||||
VideoPortZeroMemory=NTOSKRNL.RtlZeroMemory
|
||||
VideoPortZeroDeviceMemory=VideoPortZeroDeviceMemory@8
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
|
||||
typedef struct _VIDEOPORT_EXTENSTION_DATA
|
||||
{
|
||||
PDEVICE_OBJECT DeviceObject;
|
||||
PKINTERRUPT InterruptObject;
|
||||
KSPIN_LOCK InterruptSpinLock;
|
||||
ULONG InterruptLevel;
|
||||
KIRQL IRQL;
|
||||
KAFFINITY Affinity;
|
||||
} VIDEOPORT_EXTENSION_DATA, *PVIDEOPORT_EXTENSION_DATA;
|
||||
|
||||
#define MPExtensionToVPExtension(MPX) \
|
||||
((PVIDEOPORT_EXTENSION_DATA) ((DWORD) (MPX) - sizeof(VIDEOPORT_EXTENSION_DATA)))
|
||||
#define VPExtensionToMPExtension(VPX) \
|
||||
((PVOID) ((DWORD) (VPX) + sizeof(VIDEOPORT_EXTENSION_DATA)))
|
||||
|
|
@ -1,39 +0,0 @@
|
|||
|
||||
#include <defines.h>
|
||||
#include <reactos/resource.h>
|
||||
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION RES_UINT_FV_MAJOR,RES_UINT_FV_MINOR,RES_UINT_FV_REVISION,RES_UINT_FV_BUILD
|
||||
PRODUCTVERSION RES_UINT_PV_MAJOR,RES_UINT_PV_MINOR,RES_UINT_PV_REVISION,RES_UINT_PV_BUILD
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
#else
|
||||
FILEFLAGS 0x0L
|
||||
#endif
|
||||
FILEOS 0x40004L
|
||||
FILETYPE 0x2L
|
||||
FILESUBTYPE 0x0L
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "040904b0"
|
||||
BEGIN
|
||||
VALUE "CompanyName", RES_STR_COMPANY_NAME
|
||||
VALUE "FileDescription", "Videort Driver\0"
|
||||
VALUE "FileVersion", "0.0.0\0"
|
||||
VALUE "InternalName", "vidport\0"
|
||||
VALUE "LegalCopyright", RES_STR_LEGAL_COPYRIGHT
|
||||
VALUE "OriginalFilename", "vidport.sys\0"
|
||||
VALUE "ProductName", RES_STR_PRODUCT_NAME
|
||||
VALUE "ProductVersion", RES_STR_PRODUCT_VERSION
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x409, 1200
|
||||
END
|
||||
END
|
||||
|
Loading…
Reference in a new issue