NdisMMapIoSpace 함수(ndis.h)
NdisMMapIoSpace 지정된 버스 상대 "물리적" 디바이스 RAM 범위를 매핑하거나 시스템 공간 가상 범위에 등록합니다.
통사론
NDIS_STATUS NdisMMapIoSpace(
[out] PVOID *VirtualAddress,
[in] NDIS_HANDLE MiniportAdapterHandle,
[in] NDIS_PHYSICAL_ADDRESS PhysicalAddress,
[in] UINT Length
);
매개 변수
[out] VirtualAddress
호출에 성공하면 변환된 가상 주소로 설정된 호출자 제공 변수에 대한 포인터입니다.
[in] MiniportAdapterHandle
MiniportInitializeEx 핸들 입력을 지정합니다.
[in] PhysicalAddress
매핑할 디바이스 메모리 범위의 버스 상대 기준 물리적 주소를 지정합니다.
[in] Length
매핑할 바이트 수를 지정합니다.
반환 값
NdisMMapIoSpace 다음 상태 값을 반환할 수 있습니다.
반환 코드 | 묘사 |
---|---|
|
디바이스 메모리 범위가 성공적으로 매핑되었으므로 VirtualAddress 값이 유효하고 매핑된 범위가 NIC에 대한 레지스트리에서 클레임되었습니다. |
|
레지스트리에서 디바이스 메모리 범위를 클레임하는 시도가 실패했습니다. 다른 드라이버가 이미 해당 디바이스의 범위를 클레임했기 때문일 수 있습니다. NdisMMapIoSpace 오류가 발생하면 오류를 기록합니다. |
|
메모리를 매핑할 수 없거나 충분한 가상 메모리를 할당할 수 없습니다. |
|
버스 유형 또는 버스 번호가 범위를 벗어났거나 지정된 PhysicalAddress 및 Length 잘못되었습니다(현재 플랫폼의 I/O 공간 내에 있지 않을 수 있음). |
발언
이 함수는 온보드 메모리가 있는 NIC 드라이버 또는 호스트의 I/O 공간에 나타나는 디바이스 레지스터 뱅크에 의해 호출됩니다. 예를 들어 PIO 호출을 사용하는 NIC의 드라이버는 NdisMMapIoSpace .
NdisMMapIoSpace 드라이버의 NIC에 대한 레지스트리의 하드웨어 리소스를 성공적으로 호출합니다. 따라서 MiniportInitializeEx 함수만 NdisMMapIoSpace호출합니다.
NdisMMapIoSpaceVirtualAddress 변수가 NDIS_STATUS_SUCCESS 반환하지 않으면 NULL 설정합니다.
MiniportInitializeEx는 드라이버의 매개 변수 레지스트리 키에서 또는 버스 형식별 NdisXxx 구성 함수를 호출하여 PhysicalAddress 값을 가져옵니다. 지정된 실제 주소 범위는 현재 플랫폼의 I/O 공간 내에 있어야 합니다. 호스트 실제 메모리 주소를 사용하여 NdisMMapIoSpace 호출하는 것은 프로그래밍 오류입니다.
미니포트 드라이버는 NdisMUnmapIoSpace 상호 호출하여 MiniportInitializeEx 이후에 NIC를 초기화하지 못하는 경우, 컴퓨터에서 NIC가 제거되거나 드라이버가 언로드되는 경우 시스템 리소스에 대한 클레임을 해제해야 합니다.
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista에서 NDIS 6.0 및 NDIS 5.1 드라이버(NdisMMapIoSpace(NDIS 5.1 참조)에 대해 지원됩니다. Windows XP에서 NDIS 5.1 드라이버(NdisMMapIoSpace(NDIS 5.1 참조)에 대해 지원됩니다. |
대상 플랫폼 | 보편적 |
헤더 | ndis.h(Ndis.h 포함) |
라이브러리 | Ndis.lib |
IRQL | PASSIVE_LEVEL |
DDI 규정 준수 규칙 | Irql_Miniport_Driver_Function(ndis), NdisMMapIoSpace(ndis) |