다음을 통해 공유


MINIPORT_RESET 콜백 함수(ndis.h)

경고

MiniportResetExMiniportCheckForHangEx 콜백 함수는 모든 NDIS 6.83 이상 드라이버에 권장되지 않습니다. 자세한 내용은 NDIS 6.83 이상 중단 검사 및 다시 설정 작업을 참조하세요.

NDIS는 NDIS 미니포트 드라이버의 MiniportResetEx 함수를 호출하여 NIC(네트워크 인터페이스 카드)의 재설정을 시작합니다. 자세한 내용은 미니포트 어댑터 중단 확인 및 다시 설정 작업 및 미니포트 드라이버 하드웨어 재설정 참조하세요.

참고 NDIS 미니포트 드라이버는 MINIPORT_RESET 형식을 사용하여 이 함수를 선언할 수 있습니다.
 

통사론

MINIPORT_RESET MiniportReset;

NDIS_STATUS MiniportReset(
  [in]  NDIS_HANDLE MiniportAdapterContext,
  [out] PBOOLEAN AddressingReset
)
{...}

매개 변수

[in] MiniportAdapterContext

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

[out] AddressingReset

부울 변수에 대한 포인터입니다. 미니포트 드라이버는 NDIS가 MiniportOidRequest 함수를 호출하여 주소 지정 및 기타 구성 설정을 현재 값으로 복원해야 하는 경우 이 변수를 TRUE 설정합니다. 자세한 내용은 하드웨어 재설정참조하세요.

반환 값

MiniportResetEx 다음 상태 값 중 하나를 반환할 수 있습니다.

반환 코드 묘사
NDIS_STATUS_SUCCESS

MiniportResetEx 미니포트 어댑터를 작동 상태로 다시 설정했습니다.

NDIS_STATUS_PENDING
작업이 완료되면 드라이버는 NdisMResetComplete 함수를 호출하여 재설정 작업을 비동기적으로 완료합니다.
NDIS_STATUS_RESET_IN_PROGRESS

MiniportResetEx 미니포트 어댑터가 현재 다시 설정되고 있음을 확인했기 때문에 이 호출은 불필요합니다.

NDIS_STATUS_SOFT_ERRORS
MiniportResetEx 미니포트 어댑터를 다시 설정했지만 작업 중에 복구 가능한 오류가 발생했습니다. MiniportResetEx 오류에 대한 자세한 정보와 함께 NdisWriteErrorLogEntry 함수를 호출해야 합니다.
NDIS_STATUS_HARD_ERRORS
MiniportResetEx 미니포트 어댑터를 다시 설정하려고 했지만 작업 중에 복구할 수 없는 오류가 발생했습니다. MiniportResetEx 오류에 대한 자세한 정보와 함께 NdisWriteErrorLogEntry 호출해야 합니다.

발언

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

MiniportResetEx 중간 드라이버에는 필요하지 않습니다.

MiniportResetEx 미니포트 어댑터의 매개 변수를 다시 설정할 수 있습니다. 다시 설정으로 인해 미니포트 어댑터의 스테이션 주소가 변경되면 미니포트 드라이버는 재설정이 완료된 후 스테이션 주소의 이전 값을 자동으로 복원합니다. 하드웨어에 의해 다시 설정되는 멀티캐스트 또는 기능 주소 지정 마스크는 이 함수에서 다시 설정할 필요가 없습니다.

다시 설정 작업이 멀티캐스트 또는 기능 주소 지정 정보와 같은 다른 정보를 변경하는 경우 MiniportResetExAddressingReset 변수를 반환하기 전에 TRUE 설정해야 합니다. 이로 인해 NDIS는 MiniportOidRequest 함수를 호출하여 정보를 복원합니다. 또한 NDIS는 OID_PNP_ADD_WAKE_UP_PATTERN호출하여 WoL(Wake on LAN) 패턴 목록을 복원합니다. 하드웨어 목록이 이미 다시 설정되었기 때문에 드라이버는 어댑터 컨텍스트에서 WoL 패턴 목록을 해제해야 합니다.

NDIS는 보류 중인 OID 요청을 중단하거나 요청을 보내지 않습니다. 드라이버가 보류 중인 OID를 안전하게 완료하거나 재설정 후 요청을 보낼 수 있는 경우 드라이버는 보류 중인 OID를 보유하거나 다시 설정 작업이 완료될 때까지 요청을 보낼 수 있습니다. 그렇지 않으면 드라이버는 보류 중인 OID를 완료하거나 NdisMOidRequestComplete 또는 NdisMSendNetBufferListsComplete는 MiniportResetEx 반환하기 전에 각각 함수를.

참고 NDIS 6.30부터 미니포트 드라이버는 다시 설정 작업이 완료될 때까지 보류 중인 OID를 보유하거나 요청을 보내면 안 됩니다. 대신 다시 설정 작업이 완료되기 전에 드라이버가 NdisMOidRequestComplete 또는 NdisMSendNetBufferListsComplete 함수를 각각 호출하여 이러한 보류 중인 요청을 완료해야 합니다. 드라이버가 비동기적으로 다시 설정 작업을 완료하는 경우 드라이버가 NdisMResetComplete호출하기 전에 보류 중인 OID를 완료하고 요청을 보내야 합니다.
 
미니포트 드라이버는 NdisMIndicateStatusEx 함수를 호출하여 각 재설정 작업의 시작 및 완료를 신호로 표시해서는 안 됩니다. NDIS는 재설정이 시작되고 끝날 때 바인딩된 프로토콜 드라이버에 알립니다.

MiniportResetEx 다시 설정 작업 중에 미니포트 어댑터의 상태 변경을 기다려야 하는 경우 NdisStallExecution 함수를 호출할 수 있습니다. 그러나 a
MiniportResetEx 함수는 시간 간격이 50 마이크로초보다 큰 NdisStallExecution 호출해서는 안 됩니다. 드라이버가 50 마이크로초 이상 기다려야 하는 경우(또는 폴링하는 경우) 대신 타이머를 설정하고 NDIS_STATUS_PENDING 반환해야 합니다.

MiniportResetEx NDIS_STATUS_PENDING 반환하는 경우 드라이버는 NdisMResetComplete 함수를 호출하여 재설정을 완료해야 합니다.

미니포트 어댑터가 MediaConnectStateConnected 상태이고 MediaConnectStateUnknown 상태 변경을 포함하여 다시 설정으로 인해 상태가 변경되는 경우 미니포트 드라이버는 NDIS_STATUS_LINK_STATE 상태 표시와 함께 상태 변경을 보고해야 합니다. 또한 미니포트 드라이버는 다시 설정 후 링크가 다시 설정될 때 MediaConnectStateConnected 상태 표시를 나타내야 합니다.

MiniportResetEx 인터럽트를 통해 선점할 수 있습니다.

NDIS는 MiniportCheckForHangEx 함수를 주기적으로 호출하여 MiniportResetEx호출해야 하는지 여부를 결정합니다. MiniportCheckForHangEx 호출하기 위한 기본 제한 시간은 2초입니다. 이 기본값이 너무 짧으면 미니포트 드라이버는 다음을 호출할 때 더 큰 CheckForHangTimeInSeconds 값을 설정할 수 있습니다.
초기화 중에 함수를 NdisMSetMiniportAttributes합니다. 자세한 내용은 미니포트 어댑터 중단 확인 및 다시 설정 작업참조하세요.

NDIS는 NIC가 수신 작업에 대한 응답을 중지했는지 여부를 확인할 수 없습니다. 이러한 종류의 오류를 처리하기 위해 MiniportCheckForHangEx 함수는 수신 작업을 모니터링하고 필요한 경우 TRUE 반환하여 강제로 재설정할 수 있습니다. 미니포트는 NdisMResetMiniport호출하여 재설정을 요청할 수도 있습니다.

NDIS는 IRQL <= DISPATCH_LEVEL MiniportResetEx 호출합니다.

예제

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

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

MINIPORT_RESET MyResetEx;

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

_Use_decl_annotations_
NDIS_STATUS
 MyResetEx(
    NDIS_HANDLE  MiniportAdapterContext,
    PBOOLEAN  AddressingReset
    )
  {...}

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

Use_decl_annotations대한 자세한 내용은 함수 동작 주석참조하세요.

요구 사항

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

참고 항목

미니포트 어댑터 중단 확인 및 다시 설정 작업

미니포트 드라이버 하드웨어 재설정

MiniportCheckForHangEx

MiniportInitializeEx

MiniportOidRequest

NDIS_STATUS_LINK_STATE

NdisMIndicateStatusEx

NdisMOidRequestComplete

NdisMRegisterMiniportDriver

NdisMResetComplete

NdisMResetMiniport

NdisMSendNetBufferListsComplete

NdisMSetMiniportAttributes

NdisStallExecution

NdisWriteErrorLogEntry