NdisIMInitializeDeviceInstanceEx 함수(ndis.h)

NdisIMInitializeDeviceInstanceEx 함수는 가상 미니포트에 대한 초기화 작업을 시작하고 필요에 따라 후속 바인딩된 프로토콜 드라이버에 대한 가상 미니포트에 대한 상태 정보를 설정합니다.

구문

NDIS_STATUS NdisIMInitializeDeviceInstanceEx(
  [in]           NDIS_HANDLE  DriverHandle,
  [in]           PNDIS_STRING DriverInstance,
  [in, optional] NDIS_HANDLE  DeviceContext
);

매개 변수

[in] DriverHandle

미니포트 드라이버는 다음을 처리합니다. NdisMRegisterMiniportDriver 함수는 NdisMiniportDriverHandle 에서 를 반환합니다.

[in] DriverInstance

시스템 기본 문자 집합에서 호출자가 초기화한 계산 문자열을 설명하는 NDIS_STRING 형식에 대한 포인터입니다. 문자열에는 드라이버가 가상 미니포트 및 바인딩 관련 정보에 대한 정보를 저장하는 레지스트리 키의 이름이 포함됩니다. Microsoft Windows 2000 이상 드라이버의 경우 이 문자열에는 유니코드 문자가 포함되어 있습니다. 즉, Windows 2000 이상의 경우 NDIS는 NDIS_STRING 형식을 UNICODE_STRING 형식으로 정의합니다.

[in, optional] DeviceContext

가상 미니포트에 대한 드라이버 정의 디바이스 컨텍스트 정보를 사용하여 설정할 호출자 제공 메모리에 대한 포인터로, 이후에 이 가상 미니포트에 자신을 바인딩하는 더 높은 수준의 프로토콜 드라이버에서 사용할 수 있습니다. 중간 드라이버에 이러한 디바이스 컨텍스트 영역이 없는 경우 이 매개 변수는 NULL 일 수 있습니다.

반환 값

NdisIMInitializeDeviceInstanceEx 는 다음 중 하나를 반환할 수 있습니다.

반환 코드 설명
NDIS_STATUS_SUCCESS
NDIS는 중간 드라이버의 가상 미니포트에 대한 초기화 작업을 시작했습니다.
NDIS_STATUS_NOT_ACCEPTED
DriverHandle에서 지정한 디바이스가 이미 초기화되었으므로 NdisIMInitializeDeviceInstanceEx가 실패했습니다.

설명

NDIS 중간 드라이버는 ProtocolBindAdapterEx 함수에서 NdisIMInitializeDeviceInstanceEx를 호출해야 합니다. NDIS 중간 드라이버에서 NdisIMInitializeDeviceInstanceEx 를 호출하지 않으면 해당 드라이버가 성공적으로 로드되지 않습니다.

NdisIMInitializeDeviceInstanceEx를 호출하기 전에 중간 드라이버의 ProtocolBindAdapterEx 함수는 중간 드라이버가 작동하는 데 필요한 기본 미니포트 드라이버에 바인딩되어야 합니다. ProtocolBindAdapterEx 함수는 DeviceContext에서 영역을 할당할 수 있으며, 기본 미니포트 어댑터의 기능과 ProtocolBindAdapterEx에서 수집한 기능에 대한 중간 드라이버 결정 정보로 설정할 수 있습니다. 중간 드라이버의 MiniportInitializeEx 함수는 이후에 이러한 정보를 사용하여 드라이버의 가상 미니포트에 대한 정보와 함께 이 컨텍스트 영역을 설정할 수 있습니다.

NdisIMInitializeDeviceInstanceEx에 대한 중간 드라이버의 호출은 NDIS가 디바이스를 시작하는 IRP_MN_START_DEVICE IRP를 수신하는 경우 NDIS가 중간 드라이버의 MiniportInitializeEx 함수를 호출하도록 합니다. NDIS가 이러한 IRP를 수신하지 않으면 NDIS는 중간 드라이버의 MiniportInitializeEx 함수를 호출하지 않습니다.

MiniportInitializeEx에 대한 호출은 나중에 발생할 수 있으므로 NdisIMInitializeDeviceInstanceEx 호출의 컨텍스트 내에 반드시 있는 것은 아닙니다. NDIS가 NdisIMInitializeDeviceInstanceEx 호출에서 참조되는 가상 미니포트에 대해 MiniportInitializeEx를 호출하지 않고 중간 드라이버에 더 이상 가상 미니포트가 필요하지 않은 경우 중간 드라이버는 를 호출해야 합니다.가상 미니포트의 초기화를 취소하는 NdisIMCancelInitializeDeviceInstance 함수입니다. 예를 들어 중간 드라이버가 기본 미니포트 어댑터에 대한 성공적인 바인딩에 대한 응답으로 가상 미니포트를 만든다고 가정합니다. NDIS가 MiniportInitializeEx를 호출하기 전에 해당 바인딩이 제거된 경우 중간 드라이버는 NdisIMCancelInitializeDeviceInstance 를 호출하여 가상 미니포트의 초기화를 취소해야 합니다.

MiniportInitializeEx 는 드라이버가 네트워크 I/O 작업을 수행하는 데 필요한 모든 리소스(예: 호출)를 할당합니다. NdisMSetMiniportAttributes 함수 및 드라이버의 가상 미니포트를 작동 상태로 초기화합니다. 그런 다음, 중간 드라이버의 초기화가 성공적으로 완료되면 상위 수준 프로토콜 드라이버가 가상 미니포트에 바인딩할 수 있습니다.

MiniportInitializeEx가 컨트롤을 반환한 후 중간 드라이버의 디바이스 컨텍스트 영역(있는 경우)은 이후에 동일한 가상 미니포트에 바인딩된 모든 상위 수준 프로토콜 드라이버가 해당 컨텍스트 영역의 정보에 액세스할 수 있도록 하는 중간 드라이버 정의 데이터를 포함할 수 있습니다. 이러한 상위 수준 프로토콜 드라이버는 를 사용하여 중급 드라이버 제공 디바이스 컨텍스트를 쿼리할 수 있습니다. NdisIMGetBindingContext 함수.

NDIS가 중간 드라이버의 MiniportInitializeEx 함수를 호출하기 전에 드라이버는 를 호출할 수 있습니다. NdisIMCancelInitializeDeviceInstance 를 사용하여 초기화 작업을 취소합니다.

NDIS가 중간 드라이버의 MiniportInitializeEx 함수를 호출한 후 드라이버는 를 호출해야 합니다.초기화 작업을 되돌리기 위한 NdisIMDeInitializeDeviceInstance입니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista에서 NDIS 6.0 및 NDIS 5.1 드라이버(NdisIMInitializeDeviceInstanceEx(NDIS 5.1) 참조)에 대해 지원됩니다. Windows XP에서 NDIS 5.1 드라이버(NdisIMInitializeDeviceInstanceEx(NDIS 5.1) 참조)에 대해 지원됩니다.
대상 플랫폼 데스크톱
머리글 ndis.h(Ndis.h 포함)
라이브러리 Ndis.lib
IRQL PASSIVE_LEVEL
DDI 규정 준수 규칙 Irql_IM_Function(ndis)

추가 정보

IRP_MN_START_DEVICE

MiniportInitializeEx

NdisAllocateMemoryWithTagPriority NdisIMCancelInitializeDeviceInstance NdisIMDeInitializeDeviceInstance

NdisIMGetBindingContext

NdisIMInitializeDeviceInstanceEx

NdisInitializeString

NdisMRegisterMiniportDriver

NdisMSetMiniportAttributes

NdisOpenAdapterEx

ProtocolBindAdapterEx

UNICODE_STRING