twain3.0/3rdparty/ddk/dispmprt.h

1481 lines
37 KiB
C

/*++
Copyright (c) 2004 Microsoft Corporation
Module Name:
dispmprt.h
Abstract:
This header contain the new Display Loader APIs.
--*/
#ifndef _DISPMPRT_H_
#define _DISPMPRT_H_
#pragma warning(push)
#pragma warning(disable:4115) // named type definition in parentheses
#pragma warning(disable:4201) // nameless struct/union
#pragma warning(disable:4214) // bit field types other than int
#ifndef _ACPIIOCT_H_
#include <acpiioct.h>
#endif
//
// Old includes which are only kept for now for compatibility
//
#ifndef _NTOSP_
#define _NTOSP_
//
// Structures used by the kernel drivers to describe which ports must be
// hooked out directly from the V86 emulator to the driver.
//
typedef enum _EMULATOR_PORT_ACCESS_TYPE {
Uchar,
Ushort,
Ulong
} EMULATOR_PORT_ACCESS_TYPE, *PEMULATOR_PORT_ACCESS_TYPE;
typedef struct _EMULATOR_ACCESS_ENTRY {
ULONG BasePort;
ULONG NumConsecutivePorts;
EMULATOR_PORT_ACCESS_TYPE AccessType;
UCHAR AccessMode;
UCHAR StringSupport;
PVOID Routine;
} EMULATOR_ACCESS_ENTRY, *PEMULATOR_ACCESS_ENTRY;
#endif
//
// Graphics support routines.
//
typedef
VOID
(*PBANKED_SECTION_ROUTINE) (
IN ULONG ReadBank,
IN ULONG WriteBank,
IN PVOID Context
);
//
// Exclude some items from video.h
//
#define _NTOSDEF_
#include <ntddvdeo.h>
#include <video.h>
//
// Define types used in d3dukmdt.h, included via d3dkmdt.h that are not defined in this scope.
//
typedef unsigned int UINT;
typedef unsigned long DWORD;
typedef unsigned char BYTE;
#include <windef.h>
#include <d3dkmddi.h>
#include <d3dkmdt.h>
#define DlDebugPrintEx(arg) DlDebugPrint arg
//
// ** New definitions *********************************************************
//
//
// Available only for Vista (LONGHORN) and later
//
#if (NTDDI_VERSION >= NTDDI_LONGHORN)
//
// Define ACPI event IDs
//
#define ACPI_NOTIFY_DOCK_EVENT 0x77
#define ACPI_NOTIFY_PANEL_SWITCH 0x80
#define ACPI_NOTIFY_DEVICE_HOTPLUG 0x81
#define ACPI_NOTIFY_CYCLE_DISPLAY_HOTKEY 0x82
#define ACPI_NOTIFY_NEXT_DISPLAY_HOTKEY 0x83
#define ACPI_NOTIFY_PREV_DISPLAY_HOTKEY 0x84
#define ACPI_NOTIFY_CYCLE_BRIGHTNESS_HOTKEY 0x85
#define ACPI_NOTIFY_INC_BRIGHTNESS_HOTKEY 0x86
#define ACPI_NOTIFY_DEC_BRIGHTNESS_HOTKEY 0x87
#define ACPI_NOTIFY_ZERO_BRIGHTNESS_HOTKEY 0x88
#define ACPI_NOTIFY_VIDEO_WAKEUP 0x90
//
// ACPI argument definitions
//
#define ACPI_ARG_ENABLE_SWITCH_EVENT 0x0
#define ACPI_ARG_ENABLE_AUTO_SWITCH 0x1
#define ACPI_ARG_DISABLE_SWITCH_EVENT 0x2
#define ACPI_ARG_ENABLE_AUTO_LCD_BRIGHTNESS 0x0
#define ACPI_ARG_DISABLE_AUTO_LCD_BRIGHTNESS 0x4
//
// ACPI methods for the adapter
//
#define ACPI_METHOD_DISPLAY_DOS (ULONG)('SOD_')
#define ACPI_METHOD_DISPLAY_DOD (ULONG)('DOD_')
#define ACPI_METHOD_DISPLAY_ROM (ULONG)('MOR_')
#define ACPI_METHOD_DISPLAY_GPD (ULONG)('DPG_')
#define ACPI_METHOD_DISPLAY_SPD (ULONG)('DPS_')
#define ACPI_METHOD_DISPLAY_VPO (ULONG)('OPV_')
//
// ACPI methods for children
//
#define ACPI_METHOD_OUTPUT_ADR (ULONG)('RDA_')
#define ACPI_METHOD_OUTPUT_BCL (ULONG)('LCB_')
#define ACPI_METHOD_OUTPUT_BCM (ULONG)('MCB_')
#define ACPI_METHOD_OUTPUT_DDC (ULONG)('CDD_')
#define ACPI_METHOD_OUTPUT_DCS (ULONG)('SCD_')
#define ACPI_METHOD_OUTPUT_DGS (ULONG)('SGD_')
#define ACPI_METHOD_OUTPUT_DSS (ULONG)('SSD_')
//
// ACPI Flags
//
#define DXGK_ACPI_POLL_DISPLAY_CHILDREN 0x00000001
#define DXGK_ACPI_CHANGE_DISPLAY_MODE 0x00000002
#define DXGK_ACPI_CHANGE_DISPLAY_TOPOLOGY 0x00000004
//
// Exclude adapter access flags.
//
#define DXGK_EXCLUDE_EVICT_ALL 0x00000001
#define DXGK_EXCLUDE_CALL_SYNCHRONOUS 0x00000002
#define DXGK_EXCLUDE_BRIDGE_ACCESS 0x00000004
//
// Max of 50 characters per string.
//
#define DXGK_MAX_STRING_LEN 50
#define DXGK_MAX_REG_SZ_LEN DXGK_MAX_STRING_LEN + 1
//
// Supported device space types.
//
#define DXGK_WHICHSPACE_CONFIG PCI_WHICHSPACE_CONFIG
#define DXGK_WHICHSPACE_ROM PCI_WHICHSPACE_ROM
#define DXGK_WHICHSPACE_MCH 0x80000000
#define DXGK_WHICHSPACE_BRIDGE 0x80000001
//
// Linked display adapter support.
//
typedef struct _LINKED_DEVICE {
ULONG ChainUid;
ULONG NumberOfLinksInChain;
BOOLEAN LeadLink;
} LINKED_DEVICE, *PLINKED_DEVICE;
//
// Type of ACPI notification event.
//
typedef enum _DXGK_EVENT_TYPE {
DxgkUndefinedEvent,
DxgkAcpiEvent,
DxgkPowerStateEvent,
DxgkDockingEvent
} DXGK_EVENT_TYPE, *PDXGK_EVENT_TYPE;
typedef struct _DXGK_VIDEO_OUTPUT_CAPABILITIES {
D3DKMDT_VIDEO_OUTPUT_TECHNOLOGY InterfaceTechnology;
D3DKMDT_MONITOR_ORIENTATION_AWARENESS MonitorOrientationAwareness;
BOOLEAN SupportsSdtvModes;
} DXGK_VIDEO_OUTPUT_CAPABILITIES, *PDXGK_VIDEO_OUTPUT_CAPABILITIES;
typedef struct _DXGK_CHILD_CAPABILITIES {
union
{
//
// If (CHILD_DESCRIPTOR::ChildDeviceType == TypeVideoOutput)
//
DXGK_VIDEO_OUTPUT_CAPABILITIES VideoOutput;
//
// If (CHILD_DESCRIPTOR::ChildDeviceType == TypeOther)
//
struct
{
UINT MustBeZero;
}
Other;
} Type;
DXGK_CHILD_DEVICE_HPD_AWARENESS HpdAwareness;
} DXGK_CHILD_CAPABILITIES, *PDXGK_CHILD_CAPABILITIES;
typedef enum _DXGK_CHILD_DEVICE_TYPE {
TypeUninitialized,
TypeVideoOutput,
TypeOther
} DXGK_CHILD_DEVICE_TYPE, *PDXGK_CHILD_DEVICE_TYPE;
//
// Child descriptor structure returned to us from the miniport
//
// NOTE: If (ChildDeviceType==TypeVideoOutput) then (ChildUid == video present target ID)
//
typedef struct _DXGK_CHILD_DESCRIPTOR {
DXGK_CHILD_DEVICE_TYPE ChildDeviceType;
DXGK_CHILD_CAPABILITIES ChildCapabilities;
ULONG AcpiUid;
ULONG ChildUid;
} DXGK_CHILD_DESCRIPTOR, *PDXGK_CHILD_DESCRIPTOR;
typedef struct _DXGK_DEVICE_DESCRIPTOR {
ULONG DescriptorOffset;
ULONG DescriptorLength;
PVOID DescriptorBuffer;
} DXGK_DEVICE_DESCRIPTOR, *PDXGK_DEVICE_DESCRIPTOR;
typedef struct _DXGK_GENERIC_DESCRIPTOR {
WCHAR HardwareId[DXGK_MAX_REG_SZ_LEN];
WCHAR InstanceId[DXGK_MAX_REG_SZ_LEN];
WCHAR CompatibleId[DXGK_MAX_REG_SZ_LEN];
WCHAR DeviceText[DXGK_MAX_REG_SZ_LEN];
} DXGK_GENERIC_DESCRIPTOR, *PDXGK_GENERIC_DESCRIPTOR;
//
// Types of status that the miniport can report back to us
//
typedef enum _DXGK_CHILD_STATUS_TYPE{
StatusUninitialized,
StatusConnection,
StatusRotation
} DXGK_CHILD_STATUS_TYPE, *PDXGK_CHILD_STATUS_TYPE;
//
// Child Status structure which can be queried directly or
// indicated up by the miniport
//
typedef struct _DXGK_CHILD_STATUS {
DXGK_CHILD_STATUS_TYPE Type;
ULONG ChildUid;
union {
struct {
BOOLEAN Connected;
} HotPlug;
struct {
UCHAR Angle;
} Rotation;
};
} DXGK_CHILD_STATUS, *PDXGK_CHILD_STATUS;
//
// DxgkCbExcludeAdapterAccess callback.
//
typedef
VOID
(*DXGKDDI_PROTECTED_CALLBACK)(
IN CONST PVOID MiniportDeviceContext,
IN PVOID ProtectedCallbackContext,
IN NTSTATUS ProtectionStatus
);
//
// GUID_DEVINTERFACE_I2C {2564AA4F-DDDB-4495-B497-6AD4A84163D7}
//
DEFINE_GUID(GUID_DEVINTERFACE_I2C, 0x2564AA4F, 0xDDDB, 0x4495, 0xB4, 0x97, 0x6A, 0xD4, 0xA8, 0x41, 0x63, 0xD7);
//
// GUID_DEVINTERFACE_OPM {BF4672DE-6B4E-4BE4-A325-68A91EA49C09}
//
DEFINE_GUID(GUID_DEVINTERFACE_OPM, 0xBF4672DE, 0x6B4E, 0x4BE4, 0xA3, 0x25, 0x68, 0xA9, 0x1E, 0xA4, 0x9C, 0x09);
//
// GUID_DEVINTERFACE_BRIGHTNESS {FDE5BBA4-B3F9-46FB-BDAA-0728CE3100B4}
//
DEFINE_GUID( GUID_DEVINTERFACE_BRIGHTNESS, 0xFDE5BBA4, 0xB3F9, 0x46FB, 0xBD, 0xAA, 0x07, 0x28, 0xCE, 0x31, 0x00, 0xB4);
//
// I2C Interface queried from the miniport.
//
#define DXGK_I2C_INTERFACE_VERSION_1 0x01
typedef
NTSTATUS
(*DXGKDDI_I2C_TRANSMIT_DATA_TO_DISPLAY)(
IN PVOID MiniportDeviceContext,
IN D3DDDI_VIDEO_PRESENT_TARGET_ID VidPnTargetId,
IN ULONG SevenBitI2CAddress,
IN ULONG DataLength,
IN CONST PVOID Data
);
typedef
NTSTATUS
(*DXGKDDI_I2C_RECEIVE_DATA_FROM_DISPLAY)(
IN PVOID MiniportDeviceContext,
IN D3DDDI_VIDEO_PRESENT_TARGET_ID VidPnTargetId,
IN ULONG SevenBitI2CAddress,
IN ULONG Flags,
IN ULONG DataLength,
OUT PVOID Data
);
typedef struct _DXGK_I2C_INTERFACE {
USHORT Size;
USHORT Version;
PVOID Context;
PINTERFACE_REFERENCE InterfaceReference;
PINTERFACE_DEREFERENCE InterfaceDereference;
DXGKDDI_I2C_TRANSMIT_DATA_TO_DISPLAY DxgkDdiI2CTransmitDataToDisplay;
DXGKDDI_I2C_RECEIVE_DATA_FROM_DISPLAY DxgkDdiI2CReceiveDataFromDisplay;
} DXGK_I2C_INTERFACE, *PDXGK_I2C_INTERFACE;
//
// OPM Interface from the miniport.
//
#define DXGK_OPM_INTERFACE_VERSION_1 0x01
typedef
NTSTATUS
(*DXGKDDI_OPM_GET_CERTIFICATE_SIZE)(
IN PVOID MiniportDeviceContext,
IN DXGKMDT_CERTIFICATE_TYPE CertificateType,
OUT PULONG CertificateSize
);
typedef
NTSTATUS
(*DXGKDDI_OPM_GET_CERTIFICATE)(
IN PVOID MiniportDeviceContext,
IN DXGKMDT_CERTIFICATE_TYPE CertificateType,
IN ULONG CertificateSize,
OUT PVOID CertificateBuffer
);
typedef
NTSTATUS
(*DXGKDDI_OPM_CREATE_PROTECTED_OUTPUT)(
IN PVOID MiniportDeviceContext,
IN D3DDDI_VIDEO_PRESENT_TARGET_ID VidPnTargetId,
IN DXGKMDT_OPM_VIDEO_OUTPUT_SEMANTICS NewVideoOutputSemantics,
OUT PHANDLE NewProtectedOutputHandle
);
typedef
NTSTATUS
(*DXGKDDI_OPM_GET_RANDOM_NUMBER)(
IN PVOID MiniportDeviceContext,
IN HANDLE ProtectedOutputHandle,
OUT PDXGKMDT_OPM_RANDOM_NUMBER RandomNumber
);
typedef
NTSTATUS
(*DXGKDDI_OPM_SET_SIGNING_KEY_AND_SEQUENCE_NUMBERS)(
IN PVOID MiniportDeviceContext,
IN HANDLE ProtectedOutputHandle,
IN CONST PDXGKMDT_OPM_ENCRYPTED_PARAMETERS EncryptedParameters
);
typedef
NTSTATUS
(*DXGKDDI_OPM_GET_INFORMATION)(
IN PVOID MiniportDeviceContext,
IN HANDLE ProtectedOutputHandle,
IN CONST PDXGKMDT_OPM_GET_INFO_PARAMETERS Parameters,
OUT PDXGKMDT_OPM_REQUESTED_INFORMATION RequestedInformation
);
typedef
NTSTATUS
(*DXGKDDI_OPM_GET_COPP_COMPATIBLE_INFORMATION)(
IN PVOID MiniportDeviceContext,
IN HANDLE ProtectedOutputHandle,
IN CONST PDXGKMDT_OPM_COPP_COMPATIBLE_GET_INFO_PARAMETERS Parameters,
OUT PDXGKMDT_OPM_REQUESTED_INFORMATION RequestedInformation
);
typedef
NTSTATUS
(*DXGKDDI_OPM_CONFIGURE_PROTECTED_OUTPUT)(
IN PVOID MiniportDeviceContext,
IN HANDLE ProtectedOutputHandle,
IN CONST PDXGKMDT_OPM_CONFIGURE_PARAMETERS Parameters,
IN ULONG AdditionalParametersSize,
IN CONST PVOID AdditionalParameters
);
typedef
NTSTATUS
(*DXGKDDI_OPM_DESTROY_PROTECTED_OUTPUT)(
IN PVOID MiniportDeviceContext,
IN HANDLE ProtectedOutputHandle
);
typedef struct _DXGK_OPM_INTERFACE {
USHORT Size;
USHORT Version;
PVOID Context;
PINTERFACE_REFERENCE InterfaceReference;
PINTERFACE_DEREFERENCE InterfaceDereference;
DXGKDDI_OPM_GET_CERTIFICATE_SIZE DxgkDdiOPMGetCertificateSize;
DXGKDDI_OPM_GET_CERTIFICATE DxgkDdiOPMGetCertificate;
DXGKDDI_OPM_CREATE_PROTECTED_OUTPUT DxgkDdiOPMCreateProtectedOutput;
DXGKDDI_OPM_GET_RANDOM_NUMBER DxgkDdiOPMGetRandomNumber;
DXGKDDI_OPM_SET_SIGNING_KEY_AND_SEQUENCE_NUMBERS DxgkDdiOPMSetSigningKeyAndSequenceNumbers;
DXGKDDI_OPM_GET_INFORMATION DxgkDdiOPMGetInformation;
DXGKDDI_OPM_GET_COPP_COMPATIBLE_INFORMATION DxgkDdiOPMGetCOPPCompatibleInformation;
DXGKDDI_OPM_CONFIGURE_PROTECTED_OUTPUT DxgkDdiOPMConfigureProtectedOutput;
DXGKDDI_OPM_DESTROY_PROTECTED_OUTPUT DxgkDdiOPMDestroyProtectedOutput;
} DXGK_OPM_INTERFACE, *PDXGK_OPM_INTERFACE;
#define DXGK_BRIGHTNESS_INTERFACE_VERSION_1 0x01
typedef
NTSTATUS
(*DXGK_BRIGHTNESS_GET_POSSIBLE)(
IN PVOID Context,
IN ULONG BufferSize,
OUT PUCHAR LevelCount,
OUT PUCHAR BrightnessLevels
);
typedef
NTSTATUS
(*DXGK_BRIGHTNESS_SET)(
IN PVOID Context,
IN UCHAR Brightness
);
typedef
NTSTATUS
(*DXGK_BRIGHTNESS_GET)(
IN PVOID Context,
IN PUCHAR Brightness
);
typedef struct
{
IN USHORT Size;
IN USHORT Version;
OUT PVOID Context;
OUT PINTERFACE_REFERENCE InterfaceReference;
OUT PINTERFACE_DEREFERENCE InterfaceDereference;
OUT DXGK_BRIGHTNESS_GET_POSSIBLE GetPossibleBrightness;
OUT DXGK_BRIGHTNESS_SET SetBrightness;
OUT DXGK_BRIGHTNESS_GET GetBrightness;
} DXGK_BRIGHTNESS_INTERFACE, *PDXGK_BRIGHTNESS_INTERFACE;
//
// Services exported by DxgkCbQueryServices()
//
typedef enum
{
DxgkServicesAgp,
DxgkServicesDebugReport,
DxgkServicesTimedOperation
} DXGK_SERVICES;
//
// AGP Services
//
#define DXGK_AGP_INTERFACE_VERSION_1 0x01
#define DXGK_AGPCOMMAND_AGP1X 0x00001
#define DXGK_AGPCOMMAND_AGP2X 0x00002
#define DXGK_AGPCOMMAND_AGP4X 0x00004
#define DXGK_AGPCOMMAND_AGP8X 0x00008
#define DXGK_AGPCOMMAND_DISABLE_SBA 0x10000
#define DXGK_AGPCOMMAND_DISABLE_FW 0x20000
typedef
NTSTATUS
(APIENTRY *DXGKCB_AGP_ALLOCATE_POOL)(
IN HANDLE Context,
IN ULONG AllocationSize,
IN MEMORY_CACHING_TYPE CacheType,
OUT PPHYSICAL_ADDRESS PhysicalAddress,
OUT PVOID *VirtualAddress
);
typedef
NTSTATUS
(APIENTRY *DXGKCB_AGP_FREE_POOL)(
IN HANDLE Context,
IN PVOID VirtualAddress
);
typedef
NTSTATUS
(APIENTRY *DXGKCB_AGP_SET_COMMAND)(
IN HANDLE Context,
IN ULONG Command
);
typedef struct _DXGK_AGP_INTERFACE {
USHORT Size;
USHORT Version;
PVOID Context;
PINTERFACE_REFERENCE InterfaceReference;
PINTERFACE_DEREFERENCE InterfaceDereference;
DXGKCB_AGP_ALLOCATE_POOL AgpAllocatePool;
DXGKCB_AGP_FREE_POOL AgpFreePool;
DXGKCB_AGP_SET_COMMAND AgpSetCommand;
} DXGK_AGP_INTERFACE, *PDXGK_AGP_INTERFACE;
//
// Debug Report API
//
DECLARE_HANDLE(DXGK_DEBUG_REPORT_HANDLE);
#define DXGK_DEBUG_REPORT_INTERFACE_VERSION_1 0x01
#define DXGK_DEBUG_REPORT_MAX_SIZE 0xF800
typedef struct _DXGK_DEBUG_REPORT_INTERFACE
{
USHORT Size;
USHORT Version;
PVOID Context;
PINTERFACE_REFERENCE InterfaceReference;
PINTERFACE_DEREFERENCE InterfaceDereference;
DXGK_DEBUG_REPORT_HANDLE
(*DbgReportCreate)(
IN HANDLE DeviceHandle,
IN ULONG ulCode,
IN ULONG_PTR ulpArg1,
IN ULONG_PTR ulpArg2,
IN ULONG_PTR ulpArg3,
IN ULONG_PTR ulpArg4
);
BOOLEAN
(*DbgReportSecondaryData)(
IN OUT DXGK_DEBUG_REPORT_HANDLE hReport,
IN __in_bcount(ulDataSize) PVOID pvData,
IN ULONG ulDataSize
);
VOID
(*DbgReportComplete)(
IN OUT DXGK_DEBUG_REPORT_HANDLE hReport
);
} DXGK_DEBUG_REPORT_INTERFACE, *PDXGK_DEBUG_REPORT_INTERFACE;
//
// Timed Operation API
//
#define DXGK_TIMED_OPERATION_INTERFACE_VERSION_1 0x01
#define DXGK_TIMED_OPERATION_TIMEOUT_MAX_SECONDS 5
typedef struct _DXGK_TIMED_OPERATION
{
USHORT Size;
ULONG_PTR OwnerTag;
BOOLEAN OsHandled;
BOOLEAN TimeoutTriggered;
LARGE_INTEGER Timeout;
LARGE_INTEGER StartTick;
} DXGK_TIMED_OPERATION, *PDXGK_TIMED_OPERATION;
typedef struct _DXGK_TIMED_OPERATION_INTERFACE
{
USHORT Size;
USHORT Version;
PVOID Context;
PINTERFACE_REFERENCE InterfaceReference;
PINTERFACE_DEREFERENCE InterfaceDereference;
NTSTATUS
(*TimedOperationStart)(
OUT DXGK_TIMED_OPERATION* Op,
IN const LARGE_INTEGER* Timeout,
IN BOOLEAN OsHandled
);
NTSTATUS
(*TimedOperationDelay)(
IN OUT DXGK_TIMED_OPERATION* Op,
IN KPROCESSOR_MODE WaitMode,
IN BOOLEAN Alertable,
IN const LARGE_INTEGER* Interval OPTIONAL
);
NTSTATUS
(*TimedOperationWaitForSingleObject)(
IN OUT DXGK_TIMED_OPERATION* Op,
IN PVOID Object,
IN KWAIT_REASON WaitReason,
IN KPROCESSOR_MODE WaitMode,
IN BOOLEAN Alertable,
IN const LARGE_INTEGER* Timeout OPTIONAL
);
} DXGK_TIMED_OPERATION_INTERFACE, *PDXGK_TIMED_OPERATION_INTERFACE;
typedef enum {
DockStateUnsupported = 0,
DockStateUnDocked = 1,
DockStateDocked = 2,
DockStateUnknown = 3,
} DOCKING_STATE;
//
// Device Information Structure to provide OS provided data
// structures to the miniport
//
typedef struct _DXGK_DEVICE_INFO {
PVOID MiniportDeviceContext;
PDEVICE_OBJECT PhysicalDeviceObject;
UNICODE_STRING DeviceRegistryPath;
PCM_RESOURCE_LIST TranslatedResourceList;
LARGE_INTEGER SystemMemorySize;
PHYSICAL_ADDRESS HighestPhysicalAddress;
PHYSICAL_ADDRESS AgpApertureBase;
SIZE_T AgpApertureSize;
DOCKING_STATE DockingState;
} DXGK_DEVICE_INFO, *PDXGK_DEVICE_INFO;
//
// DxgKrnl interface
//
#define DXGK_ACPI_PASS_ARGS_TO_CHILDREN 'araP'
typedef
__drv_requiresIRQL(PASSIVE_LEVEL)
NTSTATUS
(APIENTRY *DXGKCB_EVAL_ACPI_METHOD)(
IN HANDLE DeviceHandle,
IN ULONG DeviceUid,
IN PACPI_EVAL_INPUT_BUFFER_COMPLEX AcpiInputBuffer,
IN ULONG AcpiInputSize,
IN OUT PACPI_EVAL_OUTPUT_BUFFER AcpiOutputBuffer,
IN ULONG AcpiOutputSize
);
typedef
__drv_requiresIRQL(PASSIVE_LEVEL)
NTSTATUS
(APIENTRY *DXGKCB_GET_DEVICE_INFORMATION)(
IN HANDLE DeviceHandle,
OUT PDXGK_DEVICE_INFO DeviceInfo
);
typedef
NTSTATUS
(APIENTRY *DXGKCB_INDICATE_CHILD_STATUS)(
IN HANDLE DeviceHandle,
IN PDXGK_CHILD_STATUS ChildStatus
);
typedef
__drv_requiresIRQL(PASSIVE_LEVEL)
NTSTATUS
(APIENTRY *DXGKCB_MAP_MEMORY)(
IN HANDLE DeviceHandle,
IN PHYSICAL_ADDRESS TranslatedAddress,
IN ULONG Length,
IN BOOLEAN InIoSpace,
IN BOOLEAN MapToUserMode,
IN MEMORY_CACHING_TYPE CacheType,
OUT PVOID *VirtualAddress
);
typedef
__drv_requiresIRQL(PASSIVE_LEVEL)
NTSTATUS
(APIENTRY *DXGKCB_QUERY_SERVICES)(
IN HANDLE DeviceHandle,
IN DXGK_SERVICES ServicesType,
IN OUT PINTERFACE Interface
);
typedef
BOOLEAN
(APIENTRY *DXGKCB_QUEUE_DPC)(
IN HANDLE DeviceHandle
);
typedef
NTSTATUS
(APIENTRY *DXGKCB_READ_DEVICE_SPACE)(
IN HANDLE DeviceHandle,
IN ULONG DataType,
IN PVOID Buffer,
IN ULONG Offset,
IN ULONG Length,
OUT PULONG BytesRead
);
typedef
NTSTATUS
(APIENTRY *DXGKCB_SYNCHRONIZE_EXECUTION)(
IN HANDLE DeviceHandle,
IN PKSYNCHRONIZE_ROUTINE SynchronizeRoutine,
IN PVOID Context,
IN ULONG MessageNumber,
OUT PBOOLEAN ReturnValue
);
typedef
__drv_requiresIRQL(PASSIVE_LEVEL)
NTSTATUS
(APIENTRY *DXGKCB_UNMAP_MEMORY)(
IN HANDLE DeviceHandle,
IN PVOID VirtualAddress
);
typedef
NTSTATUS
(APIENTRY *DXGKCB_WRITE_DEVICE_SPACE)(
IN HANDLE DeviceHandle,
IN ULONG DataType,
IN PVOID Buffer,
IN ULONG Offset,
IN ULONG Length,
OUT PULONG BytesWritten
);
typedef
__drv_requiresIRQL(PASSIVE_LEVEL)
NTSTATUS
(APIENTRY *DXGKCB_IS_DEVICE_PRESENT)(
IN HANDLE DeviceHandle,
IN PPCI_DEVICE_PRESENCE_PARAMETERS DevicePresenceParameters,
OUT PBOOLEAN DevicePresent
);
typedef
VOID
(APIENTRY *DXGKCB_LOG_ETW_EVENT)(
IN CONST LPCGUID EventGuid,
IN UCHAR Type,
IN USHORT EventBufferSize,
IN PVOID EventBuffer
);
typedef
__drv_requiresIRQL(PASSIVE_LEVEL)
NTSTATUS
(APIENTRY *DXGKCB_EXCLUDE_ADAPTER_ACCESS)(
IN HANDLE DeviceHandle,
IN ULONG Attributes,
IN DXGKDDI_PROTECTED_CALLBACK DxgkProtectedCallback,
IN PVOID ProtectedCallbackContext
);
typedef struct _DXGK_START_INFO {
ULONG RequiredDmaQueueEntry;
GUID AdapterGuid;
} DXGK_START_INFO, *PDXGK_START_INFO;
typedef struct _DXGKRNL_INTERFACE {
ULONG Size;
ULONG Version;
HANDLE DeviceHandle;
DXGKCB_EVAL_ACPI_METHOD DxgkCbEvalAcpiMethod;
DXGKCB_GET_DEVICE_INFORMATION DxgkCbGetDeviceInformation;
DXGKCB_INDICATE_CHILD_STATUS DxgkCbIndicateChildStatus;
DXGKCB_MAP_MEMORY DxgkCbMapMemory;
DXGKCB_QUEUE_DPC DxgkCbQueueDpc;
DXGKCB_QUERY_SERVICES DxgkCbQueryServices;
DXGKCB_READ_DEVICE_SPACE DxgkCbReadDeviceSpace;
DXGKCB_SYNCHRONIZE_EXECUTION DxgkCbSynchronizeExecution;
DXGKCB_UNMAP_MEMORY DxgkCbUnmapMemory;
DXGKCB_WRITE_DEVICE_SPACE DxgkCbWriteDeviceSpace;
DXGKCB_IS_DEVICE_PRESENT DxgkCbIsDevicePresent;
DXGKCB_GETHANDLEDATA DxgkCbGetHandleData;
DXGKCB_GETHANDLEPARENT DxgkCbGetHandleParent;
DXGKCB_ENUMHANDLECHILDREN DxgkCbEnumHandleChildren;
DXGKCB_NOTIFY_INTERRUPT DxgkCbNotifyInterrupt;
DXGKCB_NOTIFY_DPC DxgkCbNotifyDpc;
DXGKCB_QUERYVIDPNINTERFACE DxgkCbQueryVidPnInterface;
DXGKCB_QUERYMONITORINTERFACE DxgkCbQueryMonitorInterface;
DXGKCB_GETCAPTUREADDRESS DxgkCbGetCaptureAddress;
DXGKCB_LOG_ETW_EVENT DxgkCbLogEtwEvent;
DXGKCB_EXCLUDE_ADAPTER_ACCESS DxgkCbExcludeAdapterAccess;
} DXGKRNL_INTERFACE, *PDXGKRNL_INTERFACE;
//
// Kernel Mode Driver Interface
//
//
// Define parameter types for SAL-annotated DDI parameters. These are used by
// the DDI function name typedefs. They are not needed in a driver's DDI function
// definitions, and should not be used in driver code.
//
// Naming convention: Concatenate all SAL annotations, an underscore, other modifiers
// such as CONST, and the type of the parameter, and use uppercase
// only.
//
typedef __in CONST PDEVICE_OBJECT IN_CONST_PDEVICE_OBJECT;
typedef __inout PLINKED_DEVICE INOUT_PLINKED_DEVICE;
typedef __inout PDXGK_CHILD_DESCRIPTOR INOUT_PDXGK_CHILD_DESCRIPTOR;
typedef __in PDXGK_CHILD_STATUS IN_PDXGK_CHILD_STATUS;
typedef __inout PDXGK_DEVICE_DESCRIPTOR INOUT_PDXGK_DEVICE_DESCRIPTOR;
typedef __in DXGK_EVENT_TYPE IN_DXGK_EVENT_TYPE;
typedef __in PDXGK_START_INFO IN_PDXGK_START_INFO;
typedef __in PDXGKRNL_INTERFACE IN_PDXGKRNL_INTERFACE;
typedef __in PQUERY_INTERFACE IN_PQUERY_INTERFACE;
typedef __in PVIDEO_REQUEST_PACKET IN_PVIDEO_REQUEST_PACKET;
//
// Function name typedefs
//
typedef
__checkReturn
NTSTATUS
DXGKDDI_ADD_DEVICE(
IN_CONST_PDEVICE_OBJECT PhysicalDeviceObject,
OUT_PPVOID MiniportDeviceContext
);
typedef
__checkReturn
NTSTATUS
DXGKDDI_START_DEVICE(
IN_CONST_PVOID MiniportDeviceContext,
IN_PDXGK_START_INFO DxgkStartInfo,
IN_PDXGKRNL_INTERFACE DxgkInterface,
OUT_PULONG NumberOfVideoPresentSources,
OUT_PULONG NumberOfChildren
);
typedef
__checkReturn
NTSTATUS
DXGKDDI_STOP_DEVICE(
IN_CONST_PVOID MiniportDeviceContext
);
typedef
__checkReturn
NTSTATUS
DXGKDDI_REMOVE_DEVICE(
IN_CONST_PVOID MiniportDeviceContext
);
typedef
__checkReturn
NTSTATUS
DXGKDDI_DISPATCH_IO_REQUEST(
IN_CONST_PVOID MiniportDeviceContext,
IN_ULONG VidPnSourceId,
IN_PVIDEO_REQUEST_PACKET VideoRequestPacket
);
typedef
__checkReturn
NTSTATUS
DXGKDDI_QUERY_CHILD_RELATIONS(
IN_CONST_PVOID MiniportDeviceContext,
INOUT_PDXGK_CHILD_DESCRIPTOR ChildRelations,
IN_ULONG ChildRelationsSize
);
typedef
__checkReturn
NTSTATUS
DXGKDDI_QUERY_CHILD_STATUS(
IN_CONST_PVOID MiniportDeviceContext,
IN_PDXGK_CHILD_STATUS ChildStatus,
IN_BOOLEAN NonDestructiveOnly
);
typedef
__checkReturn
BOOLEAN
DXGKDDI_INTERRUPT_ROUTINE(
IN_CONST_PVOID MiniportDeviceContext,
IN_ULONG MessageNumber
);
typedef
VOID
DXGKDDI_DPC_ROUTINE(
IN_CONST_PVOID MiniportDeviceContext
);
typedef
__checkReturn
NTSTATUS
DXGKDDI_QUERY_DEVICE_DESCRIPTOR(
IN_CONST_PVOID MiniportDeviceContext,
IN_ULONG ChildUid,
INOUT_PDXGK_DEVICE_DESCRIPTOR DeviceDescriptor
);
typedef
__checkReturn
NTSTATUS
DXGKDDI_SET_POWER_STATE(
IN_CONST_PVOID MiniportDeviceContext,
IN_ULONG DeviceUid,
IN_DEVICE_POWER_STATE DevicePowerState,
IN_POWER_ACTION ActionType
);
typedef
__checkReturn
NTSTATUS
DXGKDDI_NOTIFY_ACPI_EVENT(
IN_CONST_PVOID MiniportDeviceContext,
IN_DXGK_EVENT_TYPE EventType,
IN_ULONG Event,
IN_PVOID Argument,
OUT_PULONG AcpiFlags
);
typedef
VOID
DXGKDDI_RESET_DEVICE(
IN_CONST_PVOID MiniportDeviceContext
);
typedef
VOID
DXGKDDI_UNLOAD(
VOID
);
typedef
__checkReturn
NTSTATUS
DXGKDDI_QUERY_INTERFACE(
IN_CONST_PVOID MiniportDeviceContext,
IN_PQUERY_INTERFACE QueryInterface
);
typedef
VOID
DXGKDDI_CONTROL_ETW_LOGGING(
IN_BOOLEAN Enable,
IN_ULONG Flags,
IN_UCHAR Level
);
typedef
__checkReturn
NTSTATUS
DXGKDDI_LINK_DEVICE(
IN_CONST_PDEVICE_OBJECT PhysicalDeviceObject,
IN_CONST_PVOID MiniportDeviceContext,
INOUT_PLINKED_DEVICE LinkedDevice
);
//
// Function pointer typedefs
//
typedef DXGKDDI_ADD_DEVICE *PDXGKDDI_ADD_DEVICE;
typedef DXGKDDI_START_DEVICE *PDXGKDDI_START_DEVICE;
typedef DXGKDDI_STOP_DEVICE *PDXGKDDI_STOP_DEVICE;
typedef DXGKDDI_REMOVE_DEVICE *PDXGKDDI_REMOVE_DEVICE;
typedef DXGKDDI_DISPATCH_IO_REQUEST *PDXGKDDI_DISPATCH_IO_REQUEST;
typedef DXGKDDI_QUERY_CHILD_RELATIONS *PDXGKDDI_QUERY_CHILD_RELATIONS;
typedef DXGKDDI_QUERY_CHILD_STATUS *PDXGKDDI_QUERY_CHILD_STATUS;
typedef DXGKDDI_INTERRUPT_ROUTINE *PDXGKDDI_INTERRUPT_ROUTINE;
typedef DXGKDDI_DPC_ROUTINE *PDXGKDDI_DPC_ROUTINE;
typedef DXGKDDI_QUERY_DEVICE_DESCRIPTOR *PDXGKDDI_QUERY_DEVICE_DESCRIPTOR;
typedef DXGKDDI_SET_POWER_STATE *PDXGKDDI_SET_POWER_STATE;
typedef DXGKDDI_NOTIFY_ACPI_EVENT *PDXGKDDI_NOTIFY_ACPI_EVENT;
typedef DXGKDDI_RESET_DEVICE *PDXGKDDI_RESET_DEVICE;
typedef DXGKDDI_UNLOAD *PDXGKDDI_UNLOAD;
typedef DXGKDDI_QUERY_INTERFACE *PDXGKDDI_QUERY_INTERFACE;
typedef DXGKDDI_CONTROL_ETW_LOGGING *PDXGKDDI_CONTROL_ETW_LOGGING;
typedef DXGKDDI_LINK_DEVICE *PDXGKDDI_LINK_DEVICE;
//
// Driver initialization data structure
//
typedef struct _DRIVER_INITIALIZATION_DATA {
ULONG Version;
PDXGKDDI_ADD_DEVICE DxgkDdiAddDevice;
PDXGKDDI_START_DEVICE DxgkDdiStartDevice;
PDXGKDDI_STOP_DEVICE DxgkDdiStopDevice;
PDXGKDDI_REMOVE_DEVICE DxgkDdiRemoveDevice;
PDXGKDDI_DISPATCH_IO_REQUEST DxgkDdiDispatchIoRequest;
PDXGKDDI_INTERRUPT_ROUTINE DxgkDdiInterruptRoutine;
PDXGKDDI_DPC_ROUTINE DxgkDdiDpcRoutine;
PDXGKDDI_QUERY_CHILD_RELATIONS DxgkDdiQueryChildRelations;
PDXGKDDI_QUERY_CHILD_STATUS DxgkDdiQueryChildStatus;
PDXGKDDI_QUERY_DEVICE_DESCRIPTOR DxgkDdiQueryDeviceDescriptor;
PDXGKDDI_SET_POWER_STATE DxgkDdiSetPowerState;
PDXGKDDI_NOTIFY_ACPI_EVENT DxgkDdiNotifyAcpiEvent;
PDXGKDDI_RESET_DEVICE DxgkDdiResetDevice;
PDXGKDDI_UNLOAD DxgkDdiUnload;
PDXGKDDI_QUERY_INTERFACE DxgkDdiQueryInterface;
PDXGKDDI_CONTROL_ETW_LOGGING DxgkDdiControlEtwLogging;
PDXGKDDI_QUERYADAPTERINFO DxgkDdiQueryAdapterInfo;
PDXGKDDI_CREATEDEVICE DxgkDdiCreateDevice;
PDXGKDDI_CREATEALLOCATION DxgkDdiCreateAllocation;
PDXGKDDI_DESTROYALLOCATION DxgkDdiDestroyAllocation;
PDXGKDDI_DESCRIBEALLOCATION DxgkDdiDescribeAllocation;
PDXGKDDI_GETSTANDARDALLOCATIONDRIVERDATA DxgkDdiGetStandardAllocationDriverData;
PDXGKDDI_ACQUIRESWIZZLINGRANGE DxgkDdiAcquireSwizzlingRange;
PDXGKDDI_RELEASESWIZZLINGRANGE DxgkDdiReleaseSwizzlingRange;
PDXGKDDI_PATCH DxgkDdiPatch;
PDXGKDDI_SUBMITCOMMAND DxgkDdiSubmitCommand;
PDXGKDDI_PREEMPTCOMMAND DxgkDdiPreemptCommand;
PDXGKDDI_BUILDPAGINGBUFFER DxgkDdiBuildPagingBuffer;
PDXGKDDI_SETPALETTE DxgkDdiSetPalette;
PDXGKDDI_SETPOINTERPOSITION DxgkDdiSetPointerPosition;
PDXGKDDI_SETPOINTERSHAPE DxgkDdiSetPointerShape;
PDXGKDDI_RESETFROMTIMEOUT DxgkDdiResetFromTimeout;
PDXGKDDI_RESTARTFROMTIMEOUT DxgkDdiRestartFromTimeout;
PDXGKDDI_ESCAPE DxgkDdiEscape;
PDXGKDDI_COLLECTDBGINFO DxgkDdiCollectDbgInfo;
PDXGKDDI_QUERYCURRENTFENCE DxgkDdiQueryCurrentFence;
PDXGKDDI_ISSUPPORTEDVIDPN DxgkDdiIsSupportedVidPn;
PDXGKDDI_RECOMMENDFUNCTIONALVIDPN DxgkDdiRecommendFunctionalVidPn;
PDXGKDDI_ENUMVIDPNCOFUNCMODALITY DxgkDdiEnumVidPnCofuncModality;
PDXGKDDI_SETVIDPNSOURCEADDRESS DxgkDdiSetVidPnSourceAddress;
PDXGKDDI_SETVIDPNSOURCEVISIBILITY DxgkDdiSetVidPnSourceVisibility;
PDXGKDDI_COMMITVIDPN DxgkDdiCommitVidPn;
PDXGKDDI_UPDATEACTIVEVIDPNPRESENTPATH DxgkDdiUpdateActiveVidPnPresentPath;
PDXGKDDI_RECOMMENDMONITORMODES DxgkDdiRecommendMonitorModes;
PDXGKDDI_RECOMMENDVIDPNTOPOLOGY DxgkDdiRecommendVidPnTopology;
PDXGKDDI_GETSCANLINE DxgkDdiGetScanLine;
PDXGKDDI_STOPCAPTURE DxgkDdiStopCapture;
PDXGKDDI_CONTROLINTERRUPT DxgkDdiControlInterrupt;
PDXGKDDI_CREATEOVERLAY DxgkDdiCreateOverlay;
//
// Device functions
//
PDXGKDDI_DESTROYDEVICE DxgkDdiDestroyDevice;
PDXGKDDI_OPENALLOCATIONINFO DxgkDdiOpenAllocation;
PDXGKDDI_CLOSEALLOCATION DxgkDdiCloseAllocation;
PDXGKDDI_RENDER DxgkDdiRender;
PDXGKDDI_PRESENT DxgkDdiPresent;
//
// Overlay functions
//
PDXGKDDI_UPDATEOVERLAY DxgkDdiUpdateOverlay;
PDXGKDDI_FLIPOVERLAY DxgkDdiFlipOverlay;
PDXGKDDI_DESTROYOVERLAY DxgkDdiDestroyOverlay;
//
// Context supports.
//
PDXGKDDI_CREATECONTEXT DxgkDdiCreateContext;
PDXGKDDI_DESTROYCONTEXT DxgkDdiDestroyContext;
//
// Linked Display Adapter support.
//
PDXGKDDI_LINK_DEVICE DxgkDdiLinkDevice;
PDXGKDDI_SETDISPLAYPRIVATEDRIVERFORMAT DxgkDdiSetDisplayPrivateDriverFormat;
#if (DXGKDDI_INTERFACE_VERSION >= DXGKDDI_INTERFACE_VERSION_WIN7)
//
// Extended for WDDM 2.0
//
PDXGKDDI_DESCRIBEPAGETABLE DxgkDdiDescribePageTable;
PDXGKDDI_UPDATEPAGETABLE DxgkDdiUpdatePageTable;
PDXGKDDI_UPDATEPAGEDIRECTORY DxgkDdiUpdatePageDirectory;
PDXGKDDI_MOVEPAGEDIRECTORY DxgkDdiMovePageDirectory;
PDXGKDDI_SUBMITRENDER DxgkDdiSubmitRender;
PDXGKDDI_CREATEALLOCATION2 DxgkDdiCreateAllocation2;
//
// GDI acceleration. Extended for WDDM 1.0
//
PDXGKDDI_RENDER DxgkDdiRenderKm;
//
// New DMM DDIs for CCD support
//
VOID* Reserved;
PDXGKDDI_QUERYVIDPNHWCAPABILITY DxgkDdiQueryVidPnHWCapability;
#endif // DXGKDDI_INTERFACE_VERSION
} DRIVER_INITIALIZATION_DATA, *PDRIVER_INITIALIZATION_DATA;
//
// *** Displib definitions ****************************************************
//
typedef enum _DEBUG_LEVEL {
DlDebugError,
DlDebugWarning,
DlDebugTrace,
DlDebugInfo
} DEBUG_LEVEL;
//
// Functions exported by DispLib
//
NTSTATUS
DxgkInitialize(
IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath,
IN PDRIVER_INITIALIZATION_DATA DriverInitializationData
);
PVOID
DlAllocateCommonBuffer(
IN PVOID DeviceHandle,
IN PVP_DMA_ADAPTER DlpDmaAdapter,
IN ULONG DesiredLength,
OUT PPHYSICAL_ADDRESS LogicalAddress,
IN BOOLEAN CacheEnabled,
OUT PVOID Reserved
);
PVOID
DlAllocatePool(
IN PVOID DeviceHandle,
IN VP_POOL_TYPE PoolType,
IN SIZE_T NumberOfBytes,
IN ULONG Tag
);
VOID
DlClearEvent(
IN PVOID DeviceHandle,
IN PEVENT pEvent
);
VP_STATUS
DlCreateEvent(
IN PVOID DeviceHandle,
IN ULONG EventFlag,
PVOID Unused,
OUT PEVENT *ppEvent
);
VOID
DlDebugPrint(
IN DEBUG_LEVEL DebugPrintLevel,
IN __in PCHAR DebugMessage,
...
);
VP_STATUS
DlDeleteEvent(
IN PVOID DeviceHandle,
IN PEVENT pEvent
);
VP_STATUS
DlEnumerateChildren(
IN PVOID DeviceHandle,
IN PVOID Reserved
);
VOID
DlFreeDeviceBase(
IN PVOID DeviceHandle,
IN PVOID MappedAddress
);
VOID
DlFreePool(
IN PVOID DeviceHandle,
IN PVOID Ptr
);
NTSTATUS
DlGetAccessRanges(
PVOID DeviceHandle,
ULONG NumRequestedResources,
PIO_RESOURCE_DESCRIPTOR RequestedResources OPTIONAL,
ULONG NumAccessRanges,
PVIDEO_ACCESS_RANGE AccessRanges,
PVOID VendorId,
PVOID DeviceId,
PULONG Slot
);
PVOID
DlGetAssociatedDeviceExtension(
IN PVOID DeviceObject
);
PVOID
DlGetDeviceBase(
IN PVOID DeviceHandle,
IN PHYSICAL_ADDRESS IoAddress,
IN ULONG NumberOfUchars,
IN UCHAR InIoSpace
);
PVP_DMA_ADAPTER
DlGetDmaAdapter(
IN PVOID DeviceHandle,
IN PVP_DEVICE_DESCRIPTION DlpDeviceDescription
);
VP_STATUS
DlGetRegistryParameters(
IN PVOID DeviceHandle,
IN __in PWSTR ParameterName,
IN UCHAR IsParameterFileName,
IN PMINIPORT_GET_REGISTRY_ROUTINE CallbackRoutine,
IN PVOID Context
);
__allocator
PVOID
DlGetRomImage(
IN PVOID DeviceHandle,
IN PVOID Unused1,
IN ULONG Unused2,
IN ULONG Length
);
VP_STATUS
DlGetVersion(
IN PVOID DeviceHandle,
OUT PVPOSVERSIONINFO pDlpOsVersionInfo
);
PVOID
DlLockBuffer(
IN PVOID DeviceHandle,
IN PVOID BaseAddress,
IN ULONG Length,
IN VP_LOCK_OPERATION Operation
);
VOID
DlLogError(
IN PVOID DeviceHandle,
IN PVIDEO_REQUEST_PACKET Vrp OPTIONAL,
IN VP_STATUS ErrorCode,
IN ULONG UniqueId
);
VP_STATUS
DlMapMemory(
IN PVOID DeviceHandle,
IN PHYSICAL_ADDRESS TranslatedAddress,
IN OUT PULONG Length,
IN PULONG InIoSpace,
IN OUT PVOID *VirtualAddress
);
LONGLONG
DlQueryPerformanceCounter(
IN PVOID pDeviceHandle,
OUT PLONGLONG pllPerformanceFrequency OPTIONAL
);
VOID
DlReleaseCommonBuffer(
IN PVOID DeviceHandle,
IN PVP_DMA_ADAPTER DlpDmaAdapter,
IN ULONG Length,
IN PHYSICAL_ADDRESS LogicalAddress,
IN PVOID VirtualAddress,
IN BOOLEAN CacheEnabled
);
BOOLEAN
DlScanRom(
IN PVOID DeviceHandle,
IN PUCHAR RomBase,
IN ULONG RomLength,
IN PUCHAR String
);
LONG
DlSetEvent(
IN PVOID DeviceHandle,
IN PEVENT pEvent
);
VP_STATUS
DlSetRegistryParameters(
IN PVOID DeviceHandle,
IN __in PWSTR ValueName,
IN __in_bcount(ValueLength) PVOID ValueData,
IN ULONG ValueLength
);
VP_STATUS
DlSetTrappedEmulatorPorts(
IN PVOID DeviceHandle,
IN ULONG NumAccessRanges,
IN PVIDEO_ACCESS_RANGE AccessRange
);
VOID
DlStopTimer(
PVOID DeviceHandle
);
VOID
DlUnlockBuffer(
IN PVOID DeviceHandle,
IN PVOID Mdl
);
VP_STATUS
DlVerifyAccessRanges(
PVOID DeviceHandle,
ULONG NumAccessRanges,
PVIDEO_ACCESS_RANGE AccessRanges
);
VP_STATUS
DlWaitForSingleObject(
IN PVOID DeviceHandle,
IN PVOID pEvent,
IN PLARGE_INTEGER Timeout
);
VP_STATUS
DlDisableInterrupt(
IN PVOID DeviceHandle
);
VP_STATUS
DlEnableInterrupt(
IN PVOID DeviceHandle
);
NTSTATUS
DlEvalAcpiMethod(
IN HANDLE DeviceHandle,
IN ULONG DeviceUid,
IN PACPI_EVAL_INPUT_BUFFER_COMPLEX AcpiInputBuffer,
IN ULONG AcpiInputSize,
IN OUT PACPI_EVAL_OUTPUT_BUFFER AcpiOutputBuffer,
IN ULONG AcpiOutputSize
);
NTSTATUS
DlGetDeviceInformation(
IN PVOID DeviceHandle,
OUT PDXGK_DEVICE_INFO DeviceInfo
);
NTSTATUS
DlIndicateChildStatus(
IN PVOID DeviceHandle,
IN PDXGK_CHILD_STATUS ChildStatus
);
NTSTATUS
DlMapMemoryEx(
IN PVOID DeviceHandle,
IN PHYSICAL_ADDRESS TranslatedAddress,
IN OUT PULONG Length,
IN PULONG InIoSpace,
IN HANDLE ProcessHandle,
IN OUT PVOID *VirtualAddress,
IN BOOLEAN MapToUserMode
);
NTSTATUS
DlQueryServices(
IN PVOID DeviceHandle,
IN VIDEO_PORT_SERVICES ServicesType,
IN OUT PINTERFACE Interface
);
BOOLEAN
DlQueueDpc(
IN PVOID DeviceHandle
);
ULONG
DlReadDeviceSpace(
IN PVOID DeviceHandle,
IN ULONG DataType,
IN ULONG SlotNumber,
IN PVOID Buffer,
IN ULONG Offset,
IN ULONG Length
);
ULONG
DlSetBusData(
IN PVOID DeviceHandle,
IN ULONG BusDataType,
IN ULONG SlotNumber,
IN PVOID Buffer,
IN ULONG Offset,
IN ULONG Length
);
BOOLEAN
DlSynchronizeExecution(
PVOID DeviceHandle,
VIDEO_SYNCHRONIZE_PRIORITY Priority,
PMINIPORT_SYNCHRONIZE_ROUTINE SynchronizeRoutine,
PVOID Context,
ULONG MessageNumber
);
NTSTATUS
DlUnmapMemory(
PVOID DeviceHandle,
PVOID VirtualAddress,
HANDLE ProcessHandle
);
#endif // (NTDDI_VERSION >= NTDDI_LONGHORN)
#pragma warning(pop)
#endif // _DISPMPRT_H_