функция обратного вызова PROTOCOL_CLOSE_ADAPTER_COMPLETE_EX (ndis.h)

NDIS вызывает функцию ProtocolCloseAdapterCompleteEx драйвера протокола, чтобы завершить операцию закрытия адаптера, для которой функция NdisCloseAdapterEx возвращала NDIS_STATUS_PENDING.

Примечание Функцию необходимо объявить с помощью типа PROTOCOL_CLOSE_ADAPTER_COMPLETE_EX . Дополнительные сведения см. в следующем разделе Примеры.
 

Синтаксис

PROTOCOL_CLOSE_ADAPTER_COMPLETE_EX ProtocolCloseAdapterCompleteEx;

void ProtocolCloseAdapterCompleteEx(
  [in] NDIS_HANDLE ProtocolBindingContext
)
{...}

Параметры

[in] ProtocolBindingContext

Дескриптор области контекста, выделенной драйвером протокола. Драйвер протокола хранит сведения о контексте для каждой привязки в этой области контекста. Драйвер предоставил этот дескриптор NDIS, когда драйвер вызывал функцию NdisOpenAdapterEx .

Возвращаемое значение

None

Remarks

ProtocolCloseAdapterCompleteEx является обязательной функцией.

Если ProtocolUnbindAdapterEx ожидает вызова NDIS ProtocolCloseAdapterCompleteEx, эта функция может просто указать, что она была вызвана и возвращена (например, обновляет область контекста ProtocolBindingContext ). Это позволяет функции ProtocolCloseAdapterCompleteEx завершить операцию отмены привязки.

После того как драйвер протокола вызывает функцию NdisCloseAdapterEx , дескриптор NdisBindingHandle , возвращаемый функцией NdisOpenAdapterEx , больше недействителен. Поэтому ProtocolCloseAdapterCompleteEx не может вызывать функции NdisXxx , требующие этого дескриптора в качестве параметра.

Если Функция ProtocolUnbindAdapterEx еще не сделала этого. ProtocolCloseAdapterCompleteEx может освободить ресурсы, выделенные драйвером протокола для операций сетевого ввода-вывода для каждой привязки.

Если ProtocolUnbindAdapterEx вернул NDIS_STATUS_PENDING и сохранил дескриптор UnbindContext в области контекста в ProtocolBindingContext, ProtocolCloseAdapterCompleteEx может вызватьФункция NdisCompleteUnbindAdapterEx для завершения операции отмены привязки. Следовательно, ProtocolCloseAdapterCompleteEx не должен освобождать область контекста до тех пор, пока она не вызовет NdisCompleteUnbindAdapterEx.

NDIS вызывает ProtocolCloseAdapterCompleteEx по адресу IRQL = PASSIVE_LEVEL.

Примеры

Чтобы определить функцию ProtocolCloseAdapterCompleteEx , необходимо сначала предоставить объявление функции, определяющее тип определяемой функции. Windows предоставляет набор типов функций для драйверов. Объявление функции с помощью типов функций помогает анализу кода для драйверов, средству проверки статических драйверов (SDV) и другим средствам проверки находить ошибки, и это требование для написания драйверов для операционной системы Windows.

Например, чтобы определить функцию ProtocolCloseAdapterCompleteEx с именем MyCloseAdapterCompleteEx, используйте тип PROTOCOL_CLOSE_ADAPTER_COMPLETE_EX , как показано в следующем примере кода:

PROTOCOL_CLOSE_ADAPTER_COMPLETE_EX MyCloseAdapterCompleteEx;

Затем реализуйте функцию следующим образом:

_Use_decl_annotations_
VOID
 MyCloseAdapterCompleteEx(
    NDIS_HANDLE  ProtocolBindingContext
    )
  {...}

Тип функции PROTOCOL_CLOSE_ADAPTER_COMPLETE_EX определен в файле заголовка Ndis.h. Чтобы более точно определить ошибки при запуске средств анализа кода, не забудьте добавить заметку Use_decl_annotations в определение функции. Заметка Use_decl_annotations гарантирует использование заметок, которые применяются к типу функции PROTOCOL_CLOSE_ADAPTER_COMPLETE_EX в файле заголовка. Дополнительные сведения о требованиях к объявлениям функций см. в статье Объявление функций с помощью типов ролей функций для драйверов NDIS.

Сведения о Use_decl_annotations см. в статье Поведение функции с заметками.

Требования

Требование Значение
Минимальная версия клиента Поддерживается в NDIS 6.0 и более поздних версиях.
Целевая платформа Windows
Header ndis.h (включая Ndis.h)
IRQL PASSIVE_LEVEL

См. также раздел

NdisCloseAdapterEx

NdisCompleteUnbindAdapterEx

NdisOpenAdapterEx

ProtocolUnbindAdapterEx