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를 호출합니다.
NdisMMapIoSpace 는 NDIS_STATUS_SUCCESS 반환하지 않는 경우 VirtualAddress 의 변수를 NULL 로 설정합니다.
MiniportInitializeEx는 드라이버의 Parameters 레지스트리 키에서 또는 버스 형식별 NdisXxx 구성 함수를 호출하여 PhysicalAddress 값을 가져옵니다. 지정된 실제 주소 범위는 현재 플랫폼의 I/O 공간 내에 있어야 합니다. 호스트 실제 메모리 주소를 사용하여 NdisMMapIoSpace 를 호출하는 것은 프로그래밍 오류입니다.
MiniportInitializeEx가 이후에 NIC를 초기화하지 못하는 경우, 컴퓨터에서 NIC가 제거되거나 드라이버가 언로드될 때 미니포트 드라이버는 상호 NdisMUnmapIoSpace를 호출하여 시스템 리소스에 대한 클레임을 해제해야 합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | 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) |