실행 중인 필터 모듈을 일시 중지하기 위해 NDIS는 필터 드라이버의 FilterPause 함수를 호출합니다. 필터 모듈은 FilterPause 함수에서 실행이 시작될 때 일시 중지 상태를 입력합니다.
NDIS는 플러그 앤 플레이 작업의 일부로 필터 모듈을 일시 중지하여 드라이버 스택을 일시 중지합니다. 드라이버 스택을 일시 중지하는 방법에 대한 개요는 드라이버 스택 일시 중지을 참조하세요.
필터 드라이버는 일시 중지 상태에 있는 필터 모듈을 대신하여:
새 수신 신호를 생성해서는 안 됩니다.
보내기 및 받기 작업에 대한 자세한 내용은 필터 모듈 보내기 및 받기 작업참조하세요.
필터 드라이버가 시작되고 NDIS가 완료되지 않은 수신 작업이 있는 경우 필터 드라이버는 NDIS가 이러한 작업을 완료할 때까지 기다려야 합니다. 일시 중지 작업은 NDIS가 이러한 모든 미해결 수신 표시에 대해 FilterReturnNetBufferLists 함수를 호출할 때까지 완료되지 않습니다.
기본 드라이버가 NDIS에 전달한 대기 중인 수신 표시를 즉시 반환해야 합니다. 드라이버가 이러한 미해결 수신 표시에 대해 NdisFReturnNetBufferLists 함수를 호출할 때까지 일시 중지 작업이 완료되지 않습니다. 드라이버가 기본 드라이버에서 수신하는 버퍼를 큐에 대기하는 경우 이러한 미해결 수신 표시가 존재할 수 있습니다.
기본 드라이버가 NdisFReturnNetBufferLists 함수를 호출하여 즉시 NDIS로 시작된다는 새로운 수신 표시를 반환해야 합니다. 필요한 경우 드라이버는 수신된 신호를 복사한 후 반환하기 전에 큐에 대기할 수 있습니다.
NoteNdisFReturnNetBufferLists 각각의 FilterReceiveNetBufferLists 호출에서 NDIS_RECEIVE_FLAGS_RESOURCES 플래그가 설정된 NBL(NetBufferList)에 대해 호출하지 마십시오. 이러한 NBL은 FilterReceiveNetBufferLists 루틴에서 반환된 후 동기적으로 NDIS로 반납됩니다.
새 보내기 요청을 시작하지 않아야 합니다.
필터 드라이버가 시작되고 NDIS가 완료되지 않은 송신 작업이 있는 경우 필터 드라이버는 NDIS가 이러한 작업을 완료할 때까지 기다려야 합니다. 일시 중지 작업은 NDIS가 이러한 모든 미해결 송신 요청에 대해 FilterSendNetBufferListsComplete 함수를 호출할 때까지 완료되지 않습니다.
NdisFSendNetBufferListsComplete 함수를 호출하여 FilterSendNetBufferLists 함수에 대한 모든 새 보내기 요청을 즉시 반환해야 합니다. 필터 드라이버는 각 NET_BUFFER_LIST 구조체의 상태 멤버를 NDIS_STATUS_PAUSED로 설정하도록 해야 합니다.
NdisFIndicateStatus 함수를 사용하여 상태 표시를 제공할 수 있습니다.
상태 표시에 대한 자세한 내용은 필터 모듈 상태 표시참조하세요.
FilterStatus 함수에서 상태 표시를 처리해야 합니다.
FilterOidRequest 함수에서 OID 요청을 처리해야 합니다.
OID 요청에 대한 자세한 내용은 Filter Module OID Requests참조하세요.
OID 요청을 시작할 수 있습니다.
연결 작업 중에 드라이버가 할당한 리소스를 해제하면 안 됩니다.
보내기 및 받기 작업을 중지해야 하는 경우 타이머를 취소해야 합니다.
타이머에 대한 자세한 내용은 NDIS 6.0 타이머 서비스참조하세요.
필터 드라이버가 송신 및 수신 작업을 성공적으로 일시 중지한 후 일시 중지 작업을 완료해야 합니다. 필터 드라이버는 FilterPause각각 NDIS_STATUS_SUCCESS 또는 NDIS_STATUS_PENDING 반환하여 일시 중지 작업을 동기적으로 또는 비동기적으로 완료할 수 있습니다.
드라이버가 NDIS_STATUS_PENDING 반환하는 경우 일시 중지 작업을 완료한 후 NdisFPauseComplete 함수를 호출해야 합니다.
일시 중지된 상태인 필터 모듈을 대신하여 필터 드라이버:
새 수신 신호가 생성되지 않아야 합니다.
NdisFReturnNetBufferLists 함수를 호출하여 기본 드라이버가 즉시 NDIS로 시작된다는 새로운 수신 표시를 반환해야 합니다. 필요한 경우 드라이버는 수신된 신호를 복사한 후 반환하기 전에 큐에 대기할 수 있습니다.
새 보내기 요청을 시작하지 않아야 합니다.
NdisFSendNetBufferListsComplete 함수를 호출하여 FilterSendNetBufferLists 함수에 대한 모든 새 보내기 요청을 즉시 반환해야 합니다. 필터 드라이버는 각 NET_BUFFER_LIST 구조체의 상태 멤버를 NDIS_STATUS_PAUSED로 설정하도록 해야 합니다.
NdisFIndicateStatus 함수를 사용하여 상태 표시를 제공할 수 있습니다.
FilterStatus 함수에서 상태 표시를 처리해야 합니다.
FilterOidRequest 함수에서 OID 요청을 처리해야 합니다.
OID 요청을 시작할 수 있습니다.
필터 드라이버가 일시 중지 상태인 동안 NDIS는 연결, 분리 또는 다시 시작 요청과 같은 다른 플러그 앤 플레이 작업을 시작하지 않습니다. 필터 드라이버가 일시 중지된 상태인 후 NDIS에서 분리를 시작하거나 요청을 다시 시작할 수 있습니다. 필터 모듈을 분리하는 방법에 대한 자세한 내용은 필터 모듈 분리을 참조하세요. 필터 모듈을 다시 시작하는 방법에 대한 자세한 내용은 필터 모듈 시작하기를 참조하세요.