VideoPortMapBankedMemory 함수(video.h)

VideoPortMapBankedMemory 함수는 사용되지 않으며 Windows NT 4.0 및 이전 드라이버에 대해서만 지원됩니다. Windows 2000 이상 드라이버는 VideoPortMapMemory를 사용해야 합니다.

VideoPortMapBankedMemoryIoControlCode 멤버가 IOCTL_VIDEO_SHARE_VIDEO_MEMORY 또는 IOCTL_VIDEO_MAP_VIDEO_MEMORY 설정된 VRP에 대한 응답으로 버스 상대 비디오 메모리의 물리적 범위를 해당 디스플레이 드라이버의 가상 주소 공간에 다시 매핑합니다.

구문

VIDEOPORT_DEPRECATED VIDEOPORT_API VP_STATUS VideoPortMapBankedMemory(
  PVOID                   HwDeviceExtension,
  PHYSICAL_ADDRESS        PhysicalAddress,
  PULONG                  Length,
  PULONG                  InIoSpace,
  PVOID                   *VirtualAddress,
  ULONG                   BankLength,
  UCHAR                   ReadWriteBank,
  PBANKED_SECTION_ROUTINE BankRoutine,
  PVOID                   Context
);

매개 변수

HwDeviceExtension

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

PhysicalAddress

매핑할 범위의 버스 상대 기준 주소를 지정합니다.

Length

매핑할 디바이스 메모리의 총 바이트 수를 지정하는 변수에 대한 포인터입니다(뱅크 크기에 관계 없이). VideoPortMapBankedMemory는 이 매개 변수에서 시스템 결정 맞춤 경계로 반올림할 수 있는 매핑된 메모리의 실제 크기를 반환합니다. 그러나 미니포트 및 디스플레이 드라이버는 Length의 입력 값으로 구분된 범위 외부의 메모리에 액세스할 수 없습니다.

InIoSpace

범위의 위치를 나타냅니다. 이 매개 변수는 다음 값 중 하나일 수 있습니다.

의미
VIDEO_MEMORY_SPACE_DENSE 사용되지 않음
VIDEO_MEMORY_SPACE_IO 범위는 메모리 공간이 아닌 시스템 I/O 공간에 있습니다.
VIDEO_MEMORY_SPACE_MEMORY 범위는 시스템 I/O 공간이 아닌 메모리 공간에 있습니다.
VIDEO_MEMORY_SPACE_P6CACHE 프로세서는 일련의 쓰기 작업을 집계하고 지정된 캐시 줄로 보냅니다. 그런 다음 프로세서가 캐시를 플러시합니다. 이 플래그는 VIDEO_MEMORY_SPACE_IO 설정되지 않은 경우에만 의미가 있습니다.
VIDEO_MEMORY_SPACE_USER_MODE 지정된 주소 범위가 커널 모드가 아닌 사용자 모드로 매핑되어야 했음을 나타냅니다. 이 플래그는 VIDEO_MEMORY_SPACE_IO 설정되지 않은 경우에만 의미가 있습니다.

VirtualAddress

메모리를 매핑해야 하는 프로세스 또는 NULL에 대한 핸들입니다. NULL 은 포트 드라이버가 현재 프로세스의 주소 공간에 있는 모든 위치에 논리 메모리 범위를 매핑해야 한다고 지정합니다. 그렇지 않으면 이 핸들은 미니포트 드라이버의 해당 디스플레이 드라이버가 VRP 에 전달한 값일 수 있습니다. 성공적인 호출에서 돌아오면 VideoPortMapBankedMemory 는 변수를 지정된 PhysicalAddress를 매핑한 기본 가상 주소로 다시 설정합니다.

BankLength

뱅크의 크기를 바이트 단위로 지정합니다.

ReadWriteBank

TRUE로 설정하면 은행은 Read\Write입니다. FALSE로 설정하면 두 개의 독립적인 읽기 및 쓰기 은행이 있습니다.

BankRoutine

디스플레이 드라이버에서 새 뱅크에 액세스할 때 메모리 관리자가 호출할 드라이버 제공 HwVidBankedMemoryCallback 함수에 대한 포인터입니다.

Context

BankRoutine이 호출될 때 드라이버에 다시 전달되는 미니포트 드라이버 제공 컨텍스트에 대한 포인터입니다.

반환 값

VideoPortMapBankedMemory 는 지정된 논리 범위가 사용자 공간 가상 범위에 성공적으로 매핑된 경우 NO_ERROR 반환합니다. 그렇지 않으면 ERROR_INVALID_PARAMETER 반환할 수 있습니다.

설명

VideoPortMapBankedMemory는 호출을 시작한 사용자 모드 스레드와 동일한 컨텍스트 내에서 커널 모드로 실행됩니다.

VideoPortMapBankedMemory 는 미니포트 드라이버가 은행에서 프레임 버퍼를 매핑하는 것으로 제한된 x86 유형 디바이스를 효율적으로 관리하도록 호출됩니다. 이 루틴이 호출자로 돌아오면 미니포트 드라이버에서 관리하는 프레임 버퍼가 요청 프로세스의 주소 공간에 선형 프레임 버퍼로 매핑됩니다( VirtualAddress 매개 변수 참조). 매핑된 공간의 주소에 대한 액세스가 이루어지면 메모리 관리자는 미니포트 드라이버를 호출하여 현재 참조된 주소가 포함된 새 은행을 가리키도록 은행 인덱스 레지스터를 업데이트합니다. BankRoutine의 미니포트 드라이버에서 은행 인덱스 레지스터를 유지 관리합니다. 올바른 은행 인덱스는 메모리 관리자가 디스플레이 드라이버에 투명하게 계산하고 BankRoutine에 대한 콜백의 미니포트 드라이버에 전달됩니다.

요구 사항

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

추가 정보

HwVidBankedMemoryCallback

IOCTL_VIDEO_MAP_VIDEO_MEMORY

IOCTL_VIDEO_SHARE_VIDEO_MEMORY

IOCTL_VIDEO_UNSHARE_VIDEO_MEMORY

VIDEO_REQUEST_PACKET

VideoPortMapMemory

VideoPortUnmapMemory