VideoPortVerifyAccessRanges 함수(video.h)

VideoPortVerifyAccessRanges 함수는 레지스트리에서 다른 드라이버가 지정된 버스 상대 액세스 범위 및 VIDEO_PORT_CONFIG_INFO 구조에 지정된 다른 하드웨어 리소스의 소유권을 이미 주장했는지 여부를 확인합니다. 그렇지 않은 경우 이 함수는 호출자에 대해 지정된 리소스를 클레임합니다.

구문

VIDEOPORT_DEPRECATED VIDEOPORT_API VP_STATUS VideoPortVerifyAccessRanges(
                 PVOID               HwDeviceExtension,
                 ULONG               NumAccessRanges,
  [in, optional] PVIDEO_ACCESS_RANGE AccessRanges
);

매개 변수

HwDeviceExtension

미니포트 드라이버의 디바이스 확장에 대한 포인터입니다.

NumAccessRanges

AccessRanges 배열의 요소 수 또는 0을 지정합니다.

[in, optional] AccessRanges

미니포트 드라이버의 액세스 범위 배열 또는 NULL에 대한 포인터입니다. 이 배열의 각 VIDEO_ACCESS_RANGE 형식 요소는 어댑터에 대한 디바이스 메모리, I/O 포트 또는 레지스터 주소의 버스 상대 범위를 지정합니다.

반환 값

VideoPortVerifyAccessRanges는 다음 값 중 하나를 반환합니다.

반환 코드 설명
ERROR_INVALID_PARAMETER 오류가 발생했거나 충돌이 발생했습니다. 즉, 다른 드라이버가 이미 해당 디바이스에 대해 지정된 하드웨어 리소스 중 하나 이상을 요청했습니다.
NO_ERROR 지정된 AccessRanges는 유효하며 호출자가 사용하도록 요청되었습니다.

설명

모든 비디오 미니포트 드라이버는 VideoPortVerifyAccessRanges를 호출하거나 VideoPortGetAccessRanges 에서 반환된 액세스 범위를 사용해야 드라이버(및 시스템) 초기화 프로세스 중에 비디오 어댑터에 액세스하려고 시도합니다.

VideoPortVerifyAccessRanges 는 미니포트 드라이버의 HwVidFindAdapter 함수에서만 호출할 수 있습니다.

모든 비디오 미니포트 드라이버는 드라이버의 헤더 파일 또는 코드 또는 스택에서 정적으로 할당된 메모리로 해당 디바이스에 대한 버스 상대 액세스 범위를 정의해야 합니다. 대부분의 미니포트 드라이버는 VGA 호환 SVGA 미니포트 드라이버와 같이 비디오 메모리에 PC 표준 주소 범위를 사용하는 드라이버를 제외하고 스택에 비디오 액세스 범위를 설정합니다.

HwVidFindAdapter 함수는 VideoPortGetAccessRanges를 호출하거나 VideoPortGetDeviceData 또는 VideoPortGetRegistryParameters 호출을 통해 레지스트리를 확인하여 버스 상대 액세스 범위 정보를 가져와야 합니다. HwVidFindAdapter에서 이 정보를 가져올 수 없는 경우 미니포트 드라이버에는 액세스 범위에 대한 버스 상대 기본값 집합이 있어야 합니다.

미니포트 드라이버의 액세스 범위를 외부에서 구성할 수 있는 경우 설치 프로그램은 레지스트리의 어댑터에 대한 액세스 범위를 설정합니다. 이러한 미니포트 드라이버의 HwVidFindAdapter 함수는 레지스트리에서 검색된 정보를 처리하는 미니포트 드라이버 제공 HwVidQueryNamedValueCallback 함수를 사용하여 VideoPortGetRegistryParameters를 호출할 수 있습니다.

HwVidFindAdapterVideoPortVerifyAccessRanges 또는 VideoPortGetAccessRanges를 먼저 호출하고 해당 함수가 NO_ERROR 반환하지 않는 한 VideoPortGetDeviceBase 액세스 범위 주소를 전달해서는 안 됩니다.

초기 AccessRanges 사양 또는 인터럽트 벡터와 같은 VIDEO_PORT_CONFIG_INFO 값으로 인해 다른 드라이버가 이미 리소스를 클레임했음을 나타내는 ERROR_XXX를 반환하는 경우 VideoPortVerifyAccessRanges를 다시 호출할 수 있습니다.

VideoPortVerifyAccessRanges가 NO_ERROR 반환하는 경우 동일한 어댑터에 대한 후속 호출은 레지스트리의 해당 어댑터에 대한 리소스에 대한 미니포트 드라이버의 클레임을 덮어씁니다.

VideoPortRead/WriteXxx 함수와 함께 VideoPortGetDeviceBase에서 반환된 매핑된 주소를 사용하는 경우를 제외하고는 미니포트 드라이버가 비디오 어댑터와 통신할 수 없습니다.

HwVidFindAdapter 함수가 어댑터에 대한 버스 상대 액세스 범위 및 기타 하드웨어 리소스를 클레임하지만 어댑터를 지원하지 않는다고 판단하는 경우 미니포트 드라이버는 NumAccessRanges가 0으로 설정되고 AccessRangesNULL로 설정된 VideoPortVerifyAccessRanges 또는 VideoPortGetAccessRanges를 호출하여 레지스트리의 하드웨어 리소스에 대한 클레임을 포기해야 합니다.

미니포트 드라이버가 더 이상 사용하지 않는 클레임 액세스 범위의 하위 집합에 대한 클레임을 포기하려면 다음을 수행합니다.

  1. 해제할 범위를 설명하는 각 요소에서 여전히 RangeStart가 클레임된 범위의 버스 상대 베이스로 설정되어 있지만 RangeLength가 0으로 다시 설정되도록 어댑터에 대한 AccessRanges 사양을 수정합니다.
  2. 수정된 AccessRanges 배열을 사용하여 VideoPortVerifyAccessRanges를 호출합니다.

요구 사항

   
지원되는 최소 클라이언트 Windows 2000 이상 버전의 Windows 운영 체제에서 사용할 수 있습니다.
대상 플랫폼 데스크톱
헤더 video.h(Video.h 포함)
라이브러리 Videoprt.lib
DLL Videoprt.sys
IRQL PASSIVE_LEVEL

참고 항목

HwVidFindAdapter

HwVidQueryDeviceCallback

HwVidQueryNamedValueCallback

VIDEO_ACCESS_RANGE

VIDEO_PORT_CONFIG_INFO

VideoPortGetAccessRanges

VideoPortGetDeviceBase

VideoPortGetDeviceData

VideoPortGetRegistryParameters