MINIPORT_PAUSE 콜백 함수(ndis.h)

NDIS는 미니포트 드라이버의 MiniportPause 함수를 호출하여 지정된 미니포트 어댑터를 통한 네트워크 데이터 흐름을 중지합니다.

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

구문

MINIPORT_PAUSE MiniportPause;

NDIS_STATUS MiniportPause(
  [in] NDIS_HANDLE MiniportAdapterContext,
  [in] PNDIS_MINIPORT_PAUSE_PARAMETERS PauseParameters
)
{...}

매개 변수

[in] MiniportAdapterContext

Miniport 드라이버가 MiniportInitializeEx 함수에 할당한 컨텍스트 영역에 대한 핸들입니다. 미니포트 드라이버는 이 컨텍스트 영역을 사용하여 미니포트 어댑터에 대한 상태 정보를 유지 관리합니다.

[in] PauseParameters

에 대한 포인터 미니 포트 어댑터에 대한 일시 중지 매개 변수를 정의하는 NDIS_MINIPORT_PAUSE_PARAMETERS 구조체입니다.

반환 값

MiniportPause는 다음 상태 값 중 하나를 반환합니다.

반환 코드 설명
NDIS_STATUS_SUCCESS
MiniportPause 는 미니포트 어댑터를 통한 네트워크 데이터 흐름을 성공적으로 중지했습니다.
NDIS_STATUS_PENDING
MiniportPause 가 일시 중지 작업을 완료하지 않았으며 작업이 비동기적으로 완료됩니다. 미니포트 드라이버는 작업이 완료되면 NdisMPauseComplete 함수를 호출해야 합니다.

설명

드라이버는 를 호출할 때 MiniportPause 진입점을 지정합니다. NdisMRegisterMiniportDriver 함수.

NDIS는 미니포트 어댑터를 일시 중지하여 필터 드라이버 추가 또는 제거 또는 프로토콜 드라이버 바인딩 또는 바인딩 해제와 같은 PnP 작업을 방해할 수 있는 데이터 흐름을 중지합니다.

NDIS는 미니포트 드라이버의 MiniportPause 함수를 호출하여 MiniportAdapterContext에 지정된 미니포트 어댑터에 대한 일시 중지 요청을 시작합니다. 미니포트 어댑터는 일시 중지 작업이 완료될 때까지 일시 중지 상태로 유지됩니다.

일시 중지 상태의 미니포트 어댑터의 경우 미니포트 드라이버는 다음과 같습니다.

  • 에 대한 모든 호출을 기다립니다. 반환할 NdisMIndicateReceiveNetBufferLists 함수입니다.
  • NDIS가 미해결 수신 표시에서 미니포트 드라이버의 모든 NET_BUFFER_LIST 구조체의 소유권을 반환할 때까지 기다립니다. MiniportReturnNetBufferLists 함수입니다.
  • 모든 미해결 송신 요청을 완료하고모든 미해결 송신 요청에 대한 NdisMSendNetBufferListsComplete 함수입니다.
  • 에 대한 모든 새 송신 요청을 거부합니다. MiniportSendNetBufferLists는NdisMSendNetBufferListsComplete를 호출하여 즉시 작동합니다. 각 NET_BUFFER_LIST 전체 상태 NDIS_STATUS_PAUSED 설정해야 합니다.
  • 상태 표시를 제공할 수 있습니다. NdisMIndicateStatusEx 함수입니다.
  • MiniportOidRequest 함수에서 OID 요청을 처리해야 합니다.
  • 미니포트 어댑터를 중지하면 드라이버가 요청을 처리하거나 상태 표시를 제공하지 못하는 경우 미니포트 어댑터를 완전히 중지해서는 안 됩니다.
  • 초기화 중에 드라이버가 할당한 리소스를 해제하면 안 됩니다.
미니포트 어댑터가 일시 중지 상태에 있는 동안 NDIS는 중지, 초기화, 전원 변경, 일시 중지 또는 다시 시작 요청과 같은 미니포트 어댑터에 대한 다른 PnP 작업을 시작하지 않습니다. 미니포트 어댑터가 일시 중지됨 상태인 후 NDIS는 이러한 PnP 작업을 시작할 수 있습니다.

미니포트 드라이버가 미해결 송신 요청을 모두 완료하고 NDIS가 수신된 모든 네트워크 데이터 구조를 반환한 후(미해결 수신 표시에서) 드라이버는 일시 중지 작업을 완료해야 합니다. 드라이버가 MiniportPause에서 NDIS_STATUS_SUCCESS 반환하면 일시 중지 작업이 완료됩니다. 드라이버가 NDIS_STATUS_PENDING 반환하는 경우 미니포트 어댑터는 일시 중지 상태로 유지될 수 있으며 드라이버가 NdisMPauseComplete 함수를 호출한 후 일시 중지 작업이 완료됩니다. 일시 중지 작업이 완료되면 미니포트 어댑터가 일시 중지됨 상태입니다.

일시 중지됨 상태의 미니포트 어댑터의 경우 미니포트 드라이버는 다음과 같습니다.

  • NdisMSendNetBufferListsComplete를 호출하여 MiniportSendNetBufferLists에 대한 모든 보내기 요청을 즉시 거부해야 합니다. 각 NET_BUFFER_LIST 상태 멤버를 NDIS_STATUS_PAUSED 설정해야 합니다.
  • 수신 인터럽 트(MiniportInterrupt 함수 참조) 및 인터럽트 DPC( MiniportInterruptDPC 함수 참조)를 처리할 수 있지만 수신된 네트워크 데이터를 나타내면 안 됩니다.
  • NdisMIndicateStatusEx 함수를 사용하여 상태 표시를 제공할 수 있습니다.
  • MiniportOidRequest 함수에서 OID 요청을 처리해야 합니다.
  • 에서 디바이스 전원 상태를 변경하는 요청을 처리해야 합니다. MiniportDevicePnPEventNotify 함수입니다.
  • NetTimerCallback 함수에 대한 호출을 처리할 수 있습니다.
  • MiniportResetEx 함수에서 하드웨어를 다시 설정하는 요청을 처리할 수 있습니다.
미니포트 드라이버는 일시 중지 요청에 실패할 수 없습니다. 따라서 미니포트 드라이버에 일시 중지 요청을 처리하는 데 리소스가 필요한 경우 초기화 중에 리소스를 미리 할당해야 합니다.

NDIS는 MiniportRestart 함수를 호출하여 일시 중지된 미니포트 어댑터에 대한 다시 시작 요청을 시작합니다.

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

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

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

MINIPORT_PAUSE MyPause;

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

_Use_decl_annotations_
NDIS_STATUS
 MyPause(
    NDIS_HANDLE  MiniportAdapterContext,
    PNDIS_MINIPORT_PAUSE_PARAMETERS  MiniportPauseParameters
    )
  {...}

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

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

요구 사항

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

추가 정보

MiniportDevicePnPEventNotify

MiniportInitializeEx

MiniportInterrupt

MiniportInterruptDPC

MiniportResetEx

MiniportRestart

MiniportReturnNetBufferLists

MiniportSendNetBufferLists

NDIS_MINIPORT_PAUSE_PARAMETERS

NET_BUFFER_LIST

NdisMIndicateReceiveNetBufferLists

NdisMIndicateStatusEx

NdisMPauseComplete

NdisMRegisterMiniportDriver

NdisMSendNetBufferListsComplete

NetTimerCallback