다음을 통해 공유


MINIPORT_ADD_DEVICE 콜백 함수(ndis.h)

MiniportAddDevice 함수를 사용하면 미니포트 드라이버가 추가된 디바이스에 대한 컨텍스트 영역을 설정할 수 있습니다.

참고MINIPORT_ADD_DEVICE 형식을 사용하여 함수를 선언해야 합니다. 자세한 내용은 다음 예제 섹션을 참조하세요.
 

구문

MINIPORT_ADD_DEVICE MiniportAddDevice;

NDIS_STATUS MiniportAddDevice(
  [in] NDIS_HANDLE NdisMiniportHandle,
  [in] NDIS_HANDLE MiniportDriverContext
)
{...}

매개 변수

[in] NdisMiniportHandle

플러그 앤 플레이(PnP) 관리자가 추가하는 미니포트 어댑터를 식별하는 NDIS 핸들입니다. 또한 NDIS는 이 핸들을 에 전달합니다. MiniportInitializeEx 함수입니다.

[in] MiniportDriverContext

드라이버가 상태 및 구성 정보를 유지하는 드라이버 할당 컨텍스트 영역에 대한 핸들입니다. 미니포트 드라이버는 이 컨텍스트 영역을 에 전달했습니다. NdisMRegisterMiniportDriver 함수.

반환 값

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

반환 코드 설명
NDIS_STATUS_SUCCESS
미니포트 드라이버는 디바이스를 추가하는 데 필요한 리소스를 성공적으로 할당했습니다.
NDIS_STATUS_RESOURCES
미니포트 드라이버가 필요한 리소스를 할당하지 못했습니다.
NDIS_STATUS_FAILURE

MiniportAddDevice 가 리소스 부족 이외의 이유로 실패했습니다.

 

MiniportAddDevice가 실패하면 NDIS는 MiniportInitializeEx 함수를 호출하여 미니포트 어댑터를 초기화하지 않습니다.

설명

MiniportAddDevice 함수는 선택적 함수입니다. MSI-X를 지원하는 미니포트 드라이버는 에서 이 함수의 진입점을 지정해야 합니다. NDIS_MINIPORT_PNP_CHARACTERISTICS 구조체입니다.

MiniportAddDevice는 처리를 위해 컨텍스트 영역을 할당할 수 있습니다. IRP_MN_FILTER_RESOURCE_REQUIREMENTS I/O 요청 패킷(IRP) MiniportFilterResourceRequirements 함수 핸들. 미니포트 드라이버는 를 초기화하여 컨텍스트 영역을 지정합니다. NDIS_MINIPORT_ADD_DEVICE_REGISTRATION_ATTRIBUTES 구조체를 호출한 다음 NdisMSetMiniportAttributes 함수입니다. NDIS는 나중에 MiniportRemoveDevice에 이 컨텍스트 핸들을 제공합니다. MiniportFilterResourceRequirements, MiniportStartDeviceMiniportInitializeEx 함수. MiniportInitializeEx의 경우 컨텍스트 핸들은 의 MiniportAddDeviceContext 멤버에 전달됩니다.MiniportInitParameters 매개 변수가 가리키는 구조체를 NDIS_MINIPORT_INIT_PARAMETERS.

미니포트 드라이버가 컨텍스트 영역을 할당한 후 MiniportAddDevice 호출에 실패하는 경우 드라이버는 MiniportAddDevice에서 반환하기 전에 컨텍스트 영역을 해제해야 합니다.

미니포트 드라이버는 NDIS_MINIPORT_ADD_DEVICE_REGISTRATION_ATTRIBUTES 구조체의 MiniportAddDeviceContext 멤버와 NDIS_MINIPORT_INIT_PARAMETERS 구조체의 MiniportAdapterContext 멤버에 대해 다른 컨텍스트 영역을 사용해야 합니다. 별도의 컨텍스트 영역은 컨텍스트 영역의 정보가 다시 초기화되지 않도록 합니다. 미니포트 어댑터가 중지되고 다시 초기화되면 MiniportInitializeEx 함수에서 발생할 수 있습니다.

PnP 관리자가 NDIS가 디바이스를 제거하도록 요청하면 NDIS는 MiniportRemoveDevice 함수를 호출하여 MiniportAddDevice 가 수행한 작업을 실행 취소합니다.

NDIS는 IRQL = PASSIVE_LEVEL MiniportAddDevice 를 호출합니다.

MiniportAddDevice 함수를 정의하려면 먼저 정의할 함수의 형식을 식별하는 함수 선언을 제공해야 합니다. Windows는 드라이버에 대한 함수 형식 집합을 제공합니다. 함수 형식을 사용하여 함수를 선언하면 드라이버에 대한 코드 분석, SDV( 정적 드라이버 검증 도구 ) 및 기타 확인 도구에서 오류를 찾는 데 도움이 되며 Windows 운영 체제용 드라이버를 작성하기 위한 요구 사항입니다.

예를 들어 " MyAddDevice"라는 MiniportAddDevice 함수를 정의하려면 이 코드 예제와 같이 MINIPORT_ADD_DEVICE 형식을 사용합니다.

MINIPORT_ADD_DEVICE MyAddDevice;

그런 다음 다음과 같이 함수를 구현합니다.

_Use_decl_annotations_
NDIS_STATUS
 MyAddDevice(
    NDIS_HANDLE  NdisMiniportHandle,
    NDIS_HANDLE  MiniportDriverContext
    )
  {...}

MINIPORT_ADD_DEVICE 함수 형식은 Ndis.h 헤더 파일에 정의되어 있습니다. 코드 분석 도구를 실행할 때 오류를 보다 정확하게 식별하려면 함수 정의에 Use_decl_annotations 주석을 추가해야 합니다. Use_decl_annotations 주석은 헤더 파일의 MINIPORT_ADD_DEVICE 함수 형식에 적용되는 주석이 사용되는지 확인합니다. 함수 선언 요구 사항에 대한 자세한 내용은 NDIS 드라이버에 함수 역할 형식을 사용하여 함수 선언을 참조하세요.

Use_decl_annotations 대한 자세한 내용은 함수 동작에 주석을 추가를 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 NDIS 6.0 이상에서 지원됩니다.
대상 플랫폼 Windows
헤더 ndis.h(Ndis.h 포함)
IRQL PASSIVE_LEVEL

추가 정보

IRP_MN_FILTER_RESOURCE_REQUIREMENTS MiniportFilterResourceRequirements

MiniportInitializeEx

MiniportRemoveDevice

MiniportStartDevice

NDIS_MINIPORT_ADD_DEVICE_REGISTRATION_ATTRIBUTES

NDIS_MINIPORT_INIT_PARAMETERS

NDIS_MINIPORT_PNP_CHARACTERISTICS

NdisMRegisterMiniportDriver

NdisMSetMiniportAttributes