プロトコル ドライバーは、NDIS 6.0 以降のバージョンでリセット操作を開始できません。
通常、基になるミニポート ドライバーは、NIC が送信または要求操作中にタイムアウトするため、NIC をリセットします。 この状態により、NDIS はミニポート ドライバーの ミニポートCheckForHangEx を呼び出し、その後 ミニポートResetEx 関数を呼び出します。 または、ミニポート ドライバーは、NIC の受信機能が機能不全であると判断します。
NDIS によってリセットが開始され 、ミニポートResetEx がNDIS_STATUS_PENDINGを返す場合、NDIS は、NDIS_STATUS_RESET_STARTの状態でバインドされた各プロトコル ドライバーの ProtocolStatusEx(または ProtocolCoStatusEx) 関数を呼び出します。 ミニポート ドライバーが NdisMResetComplete を呼び出すと、NDIS は再度 ProtocolStatusEx(または ProtocolCoStatusEx) をNDIS_STATUS_RESET_ENDの状態で呼び出します。
プロトコル ドライバーは、NIC がリセットされるため、基になる NIC へのバインドに対する未処理の送信を取り消すことができる可能性を処理する必要があります。 バインドされたプロトコル ドライバーに保留中の送信要求がある場合、NDIS は、適切な状態のプロトコル ドライバーへの送信が完了したことを示します。 プロトコル ドライバーは、NIC が再び動作すると仮定して、リセット操作が完了したときに送信要求を再送信する必要があります。
プロトコル ドライバーは、NDIS_STATUS_RESET_STARTのステータスを受け取ると、次のことを行う必要があります。
Protocol(Co)Status がNDIS_STATUS_RESET_END通知を受信するまで、送信する準備ができているネットワーク データを保持します。
基になるミニポート ドライバーに送信される NDIS 呼び出しを行いません。ただし、 NdisReturnNetBufferLists を使用してネットワーク データを返すなどのリソースを返す呼び出しを除きます。
ProtocolStatusEx(または ProtocolCoStatusEx) がNDIS_STATUS_RESET_END メッセージを受信すると、プロトコル ドライバーはネットワーク データと OID 要求の送信を再開できます。