FILTER_RESTART 콜백 함수(ndis.h)

FilterRestart 함수는 지정된 필터 모듈에 대한 다시 시작 작업을 시작합니다.

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

구문

FILTER_RESTART FilterRestart;

NDIS_STATUS FilterRestart(
  [in] NDIS_HANDLE FilterModuleContext,
  [in] PNDIS_FILTER_RESTART_PARAMETERS RestartParameters
)
{...}

매개 변수

[in] FilterModuleContext

필터 드라이버가 다시 시작해야 하는 필터 모듈의 컨텍스트 영역에 대한 핸들입니다. FilterAttach 함수에서 이 컨텍스트 영역을 만들고 초기화한 필터 드라이버입니다.

[in] RestartParameters

에 대한 포인터 필터 모듈에 대한 다시 시작 매개 변수를 정의하는 NDIS_FILTER_RESTART_PARAMETERS 구조체입니다.

반환 값

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

반환 코드 설명
NDIS_STATUS_SUCCESS
FilterRestart 가 지정된 필터 모듈을 다시 시작했습니다.
NDIS_STATUS_PENDING
필터 드라이버는 다시 시작 작업을 완료한 후 NdisFRestartComplete 함수를 호출하여 요청을 비동기적으로 완료합니다.
NDIS_STATUS_RESOURCES
리소스가 부족하여 FilterRestart가 실패했습니다.
NDIS_STATUS_FAILURE
위의 상태 값은 적용되지 않습니다. 필터 드라이버는 실패 이유를 지정하는 매개 변수와 함께 NdisWriteEventLogEntry 함수를 호출해야 합니다.

설명

FilterRestart 는 필터 드라이버에 필요한 함수입니다. NDIS는 필터 모듈이 일시 중지됨 상태일 때 FilterRestart를 호출할 수 있습니다. 필터 모듈은 FilterRestart 실행이 시작될 때 다시 시작 상태로 들어갑니다.

NDIS가 FilterRestart를 호출할 때 필터 드라이버는 다음과 같습니다.

  • 일반 송신 및 수신 작업을 다시 시작하는 데 필요한 작업을 완료해야 합니다.
  • 필요에 따라 구성 매개 변수를 읽거나 씁니다.
  • 필요에 따라 버퍼 풀을 다시 할당합니다.
  • 필요에 따라 의 RestartAttributes 멤버에 지정된 다시 시작 특성을 수정합니다. NDIS_FILTER_RESTART_PARAMETERS 구조체입니다. RestartAttributes의 포인터가 NULL인 경우 필터 드라이버는 다시 시작 특성 목록을 수정하거나 를 추가해서는 안 됩니다. RestartAttributes의 포인터가 NULL이 아닌 경우 다시 시작 특성 목록에서 첫 번째 NDIS_RESTART_ATTRIBUTES 구조를 가리킵니다. 필터 드라이버가 다시 시작되지 않으면 특성을 수정하면 안 됩니다.
  • 필요에 따라 OID 요청을 사용하여 기본 드라이버의 정보를 쿼리하거나 설정합니다. 필터 드라이버는 다시 시작 특성 목록에 이미 제공된 정보에 대해 OID 요청을 실행해서는 안 됩니다.
  • NDIS_STATUS_SUCCESS 또는 실패 상태 반환합니다.
필터 드라이버가 다시 시작 특성 목록을 수정하는 경우 필터 드라이버는 다음과 같습니다.
  • Oid 멤버에서 OID를 인식하지 못하는 경우 미디어별 특성을 수정해서는 안 됩니다. NDIS_RESTART_ATTRIBUTES 구조체입니다.
  • 다시 시작 특성 목록에 새 미디어별 특성을 추가할 수 있습니다. 이 경우 필터 드라이버는 새 NDIS_RESTART_ATTRIBUTES 구조를 할당해야 합니다. 예를 들어 NdisAllocateMemoryWithTagPriority 함수 - 새 특성에 대한 메모리 공간을 제공합니다. 다시 시작 특성을 오버리싱 드라이버에 전파한 후 NDIS는 필터 드라이버에 대한 특성 메모리를 해제합니다.
  • 다시 시작 특성 목록에서 미디어별 특성을 수정할 수 있습니다. 필터 드라이버에 더 많은 메모리 공간이 필요한 경우 NdisFreeMemory 함수를 사용하여 NDIS_RESTART_ATTRIBUTES 구조를 해제하고 수정된 정보를 포함하도록 새 구조를 할당할 수 있습니다. 다시 시작 특성을 오버리싱 드라이버에 전파한 후 NDIS는 필터 드라이버에 대한 특성 메모리를 해제합니다.
  • NDIS_RESTART_ATTRIBUTES 구조체의 Oid 멤버가 인 경우 OID_GEN_MINIPORT_RESTART_ATTRIBUTES NDIS_RESTART_GENERAL_ATTRIBUTES 구조에는 필터 드라이버에 필요한 정보가 포함됩니다. NDIS_RESTART_GENERAL_ATTRIBUTES 구조에 필요한 정보가 포함되어 있는지 확인하려면 NDIS_RESTART_GENERAL_ATTRIBUTES 구조체의 Header 멤버에 지정된 NDIS_OBJECT_HEADER 구조체에서 Revision 멤버를 검사 합니다.
    참고 필터 드라이버는 NDIS_RESTART_GENERAL_ATTRIBUTES 구조체의 모든 멤버를 수정할 수 있습니다. 필터 드라이버가 수정해야 하는 일부 특성이 NDIS가 제공한 구조의 수정 버전에 포함되지 않은 경우 필터 드라이버는 누락된 특성에 대한 OID 요청을 실행하기 위해 드라이버를 과도하게 사용해야 합니다. 필터 드라이버는 OID 요청을 완료할 때 특성을 수정할 수 있습니다.
     
  • 필터 드라이버가 다시 시작 특성을 변경하는 경우 FilterOidRequest 함수를 제공해야 합니다. 필터 드라이버는 오버리싱 드라이버가 다시 시작 특성에서 수신하는 정보가 OID 요청에 대한 응답으로 수신하는 정보와 일치하는지 확인해야 합니다.
필터 드라이버가 상태 반환하거나 NdisFRestartComplete 함수를 호출하면 다시 시작 작업이 완료됩니다. 작업이 성공적으로 완료되면 필터 모듈이 실행 중 상태이고 일반 송신 및 수신 처리가 다시 시작됩니다. 다시 시작 작업이 실패하면 필터 모듈이 일시 중지됨 상태로 돌아갑니다.

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

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

예를 들어 이름이 " MyRestart"인 FilterRestart 함수를 정의하려면 다음 코드 예제와 같이 FILTER_RESTART 형식을 사용합니다.

FILTER_RESTART MyRestart;

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

_Use_decl_annotations_
NDIS_STATUS
 MyRestart(
    NDIS_HANDLE  FilterModuleContext,
    PNDIS_FILTER_RESTART_PARAMETERS  FilterRestartParameters
    )
  {...}

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

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

요구 사항

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

추가 정보

FilterAttach

FilterOidRequest

FilterStatus

NDIS_FILTER_RESTART_PARAMETERS

NDIS_OBJECT_HEADER

NDIS_RESTART_ATTRIBUTES

NDIS_RESTART_GENERAL_ATTRIBUTES

NDIS_STATUS_LINK_STATE

NdisAllocateMemoryWithTagPriority

NdisFRegisterFilterDriver

NdisFRestartComplete

NdisFreeMemory

NdisWriteEventLogEntry

OID_GEN_LINK_STATE

OID_GEN_MINIPORT_RESTART_ATTRIBUTES