PMINIPORT_QUERY_DEVICE_ROUTINE 콜백 함수(video.h)

HwVidQueryDeviceCallback 은 지정된 구성 데이터를 사용하여 어댑터를 구성하고 VIDEO_PORT_CONFIG_INFO 구조에서 누락된 구성 정보를 채울 수 있습니다.

구문

PMINIPORT_QUERY_DEVICE_ROUTINE PminiportQueryDeviceRoutine;

VP_STATUS PminiportQueryDeviceRoutine(
  PVOID HwDeviceExtension,
  PVOID Context,
  VIDEO_DEVICE_DATA_TYPE DeviceDataType,
  PVOID Identifier,
  ULONG IdentiferLength,
  PVOID ConfigurationData,
  ULONG ConfigurationDataLength,
  PVOID ComponentInformation,
  ULONG ComponentInformationLength
)
{...}

매개 변수

HwDeviceExtension

미니포트 드라이버의 어댑터별 스토리지 영역에 대한 포인터입니다. 자세한 내용은 디바이스 확장을 참조하세요.

Context

HwVidFindAdapter에서 설정한 컨텍스트 값에 대한 포인터입니다. 일반적으로 VIDEO_PORT_CONFIG_INFO 버퍼 또는 해당 버퍼의 오프셋을 가리킵니다.

DeviceDataType

요청된 구성 정보의 유형을 지정합니다. 이는 다음 중 하나입니다.

VpBusData

VpCmosData

VpControllerData

VpMachineData

VpMonitorData

x86 형식 비디오 어댑터의 미니포트 드라이버는 일반적으로 VpBusData를 지정하며, 특히 EISA 버스의 어댑터에 대해 VpBusData를 지정합니다. VpControllerDataVpMonitorData 값은 ARC 규격 플랫폼에서만 의미가 있습니다. VpCmosDataVpMachineData 값은 거의 사용되지 않습니다.

Identifier

ARC 펌웨어에 의해 결정된 디바이스 이름에 대한 포인터입니다. 이 매개 변수는 ARC 규격 플랫폼에서만 사용해야 합니다. 그렇지 않으면 이 포인터는 NULL이어야 합니다.

IdentiferLength

버퍼링된 식별자 문자열의 크기(바이트)를 지정합니다. 컴퓨터가 ARC 규격이 아닌 경우 값은 0이어야 합니다.

ConfigurationData

하드웨어 구성 데이터에 대한 포인터입니다. 이 데이터의 형식은 지정된 DeviceDataType 및 VIDEO_PORT_CONFIG_INFO AdapterInterfaceType 값에 의해 결정됩니다.

ConfigurationDataLength

ConfigurationData 버퍼의 크기(바이트)를 지정합니다. 실제로 이는 레지스트리에서 수집되어 VideoPortGetDeviceBase에 의해 할당된 ConfigurationData 버퍼에 저장된 정보의 양을 나타냅니다.

ComponentInformation

시스템에서 사용하도록 예약되었습니다.

ComponentInformationLength

시스템에서 사용하도록 예약되었습니다.

반환 값

HwVidQueryDeviceCallback은 작업의 상태 반환합니다.

설명

HwVidQueryDeviceCallback은 미니포트 드라이버의 HwVidFindAdapter 함수에서 VideoPortGetDeviceData에 대한 호출에서 전달됩니다. VideoPortGetDeviceData는 레지스트리의 \Registry\Machine\Hardware\Description 노드에서 사용 가능한 구성 정보를 수집한 후 HwVidQueryDeviceCallback을 호출합니다.

HwVidQueryDeviceCallbackVideoPortGetDeviceData에 의해 레지스트리에서 수집된 ConfigurationData를 검사합니다. 이 정보를 사용하여 어댑터를 구성하고 VIDEO_PORT_CONFIG_INFO 구조에서 누락된 구성 정보를 채울 수 있습니다.

HwVidQueryDeviceCallbackConfigurationData 에 있는 액세스 범위 값을 VideoPortReadXxx 또는 VideoPortWriteXxx 에 직접 전달할 수 없습니다. 이러한 주소는 먼저 VideoPortGetDeviceBase를 호출하여 매핑되어야 합니다.

ConfigurationData 버퍼에 액세스 범위 정보가 없고 미니포트 드라이버의 HwVidFindAdapter 함수가 VideoPortGetBusData(또는 VideoPortGetAccessRanges)를 아직 호출하지 않은 경우 해당 HwVidQueryDeviceCallback 함수는 VideoPortGetBusData를 호출할 수 있습니다. VideoPortGetBusData에서 반환된 액세스 범위 정보도 VideoPortVerifyAccessRanges에 전달되어야 합니다.

VideoPortVerifyAccessRanges가 NO_ERROR 반환하는 경우 미니포트 드라이버는 VideoPortGetDeviceBase를 호출하여 VideoPortRead Xxx 및/또는 VideoPortWriteXxx 함수를 호출하여 어댑터와 통신하는 데 사용할 수 있는 매핑된 논리 주소를 가져올 수 있습니다.

VideoPortGetDeviceData, VideoPortGetBusData 또는 VideoPortGetAccessRanges를 호출하여 버스 상대 액세스 범위 값을 가져올 수 없는 경우 미니포트 드라이버는 드라이버에서 제공하는 기본 액세스 범위 값 집합을 사용하여 어댑터를 찾을 수 있습니다. 이러한 상황에서 미니포트 드라이버는 미니포트 드라이버 제공 액세스 범위로 VideoPortVerifyAccessRanges를 호출한 다음 VideoPortVerifyAccessRanges가 NO_ERROR 반환된 경우에만 VideoPortGetDeviceBase 호출해야 합니다. VideoPortVerifyAccessRanges에 대한 호출이 실패하면 다른 디바이스의 드라이버에서 지정된 버스 상대 범위를 이미 사용하고 있습니다.

HwVidQueryDeviceCallback 을 페이징 가능으로 만들어야 합니다.

요구 사항

요구 사항
대상 플랫폼 데스크톱
머리글 video.h(Video.h 포함)

추가 정보

VideoPortGetAccessRanges

VideoPortGetBusData

VideoPortGetDeviceBase

VideoPortGetDeviceData

VideoPortVerifyAccessRanges