DxgkCbReadDeviceSpace routine

The DxgkCbReadDeviceSpace function reads from a device configuration space or the expansion ROM of a display adapter.

Syntax


DXGKCB_READ_DEVICE_SPACE DxgkCbReadDeviceSpace;

NTSTATUS DxgkCbReadDeviceSpace(
  _In_   HANDLE DeviceHandle,
  _In_   ULONG DataType,
  _In_   PVOID Buffer,
  _In_   ULONG Offset,
  _In_   ULONG Length,
  _Out_  PULONG BytesRead
)
{ ... }

Parameters

DeviceHandle [in]

A handle that represents a display adapter. The display miniport driver previously obtained this handle in the DeviceHandle member of the DXGKRNL_INTERFACE structure that was passed to DxgkDdiStartDevice.

DataType [in]

The type of read transaction to be performed. This parameter must be one of the following values, which are defined in Dispmprt.h.

DXGK_WHICHSPACE_BRIDGE

Read from the PCI Express (PCIe) root port's configuration space.

DXGK_WHICHSPACE_CONFIG

Read from the display adapter's configuration space.

DXGK_WHICHSPACE_MCH

Read from the configuration space of a memory controller hub that is a peer to the adapter's parent bus.

DXGK_WHICHSPACE_ROM

Read from the display adapter's expansion ROM.

Buffer [in]

A pointer to a caller-allocated buffer that receives the data read from the configuration space or ROM.

Offset [in]

The offset, into the configuration space or the expansion ROM, at which the read transaction begins.

Length [in]

The number of bytes to be read.

BytesRead [out]

A pointer to a ULONG-typed variable that receives the number of bytes actually read.

Return value

DxgkCbReadDeviceSpace returns one of the following values:

Return codeDescription
STATUS_SUCCESS

The function succeeded.

STATUS_INVALID_PARAMETER

The DeviceHandle, DataType, or Buffer parameter is invalid.

STATUS_UNSUCCESSFUL

The function was unable to read the data.

 

Examples

The following code example reads a value of a specific size from the PCI configuration space.


ULONG
ReadPciConfig(
    PVOID pHwDeviceExt,
    ULONG ulAddress,
    PVOID pValue,
    ULONG ulSize
    )
{
    if ((ulSize <= 0) || (ulSize > sizeof(PCI_COMMON_CONFIG)))
        return(0);

    if (!pHwDeviceExt) {
        return 0;
    }
    else {
        PHW_DEVICE_EXTENSION pHwDevExt = (PHW_DEVICE_EXTENSION)pHwDeviceExt;
        HANDLE DeviceHandle = pHwDevExt->ddiCallback.DeviceHandle;
        ULONG ulSizeRet = 0;
        NTSTATUS status = pHwDevExt->ddiCallback.DxgkCbReadDeviceSpace( DeviceHandle,
  DXGK_WHICHSPACE_CONFIG,
  pValue,
  ulAddress,
  ulSize,
  &ulSizeRet);

        return (status == STATUS_SUCCESS)?ulSizeRet:0;
    }
}

Requirements

Version

Available in Windows Vista and later versions of the Windows operating systems.

Header

Dispmprt.h (include Dispmprt.h)

IRQL

PASSIVE_LEVEL

See also

DxgkCbWriteDeviceSpace

 

 

Send comments about this topic to Microsoft

Show:
© 2014 Microsoft