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 code | Description |
|---|---|
|
The function succeeded. |
|
The DeviceHandle, DataType, or Buffer parameter is invalid. |
|
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 |
|
|
IRQL | PASSIVE_LEVEL |
See also
Send comments about this topic to Microsoft
Build date: 11/29/2012
