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로 설정된 경우 은행은 읽기/쓰기가. 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 |
참고 항목
IOCTL_VIDEO_SHARE_VIDEO_MEMORY