Поделиться через


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

Функция MiniportCoCreateVc необходима для мини-портов, ориентированных на подключение. MiniportCoCreateVc вызывается NDIS, чтобы указать драйверу мини-порта, что создается новый VC.

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

Синтаксис

MINIPORT_CO_CREATE_VC MiniportCoCreateVc;

NDIS_STATUS MiniportCoCreateVc(
  [in]  NDIS_HANDLE MiniportAdapterContext,
  [in]  NDIS_HANDLE NdisVcHandle,
  [out] PNDIS_HANDLE MiniportVcContext
)
{...}

Параметры

[in] MiniportAdapterContext

Указывает дескриптор для области контекста, выделенной драйвером мини-порта, в которой драйвер мини-порта хранит сведения о состоянии этого экземпляра адаптера. Драйвер мини-порта предоставил этот дескриптор NDIS, вызвав NdisMSetMiniportAttributes из егоФункция MiniportInitializeEx.

[in] NdisVcHandle

Указывает дескриптор, предоставляемый NDIS, который уникальным образом идентифицирует создаваемый проверяемый экземпляр. Этот дескриптор непрозрачн для драйвера мини-порта и зарезервирован для использования библиотеки NDIS.

[out] MiniportVcContext

Указывает на выходных данных дескриптор области контекста, предоставленной драйвером мини-порта, в которой драйвер мини-порта сохраняет состояние о VC.

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

Код возврата Описание
NDIS_STATUS_SUCCESS
Указывает, что драйвер мини-порта успешно выделил все необходимые ресурсы и подготовился к обработке запросов для только что созданного VC.
NDIS_STATUS_RESOURCES
Указывает, что диспетчер вызовов не может получить динамически выделенные ресурсы, необходимые ему для работы с новым VC.

Комментарии

MiniportCoCreateVc должен быть записан как синхронная функция и ни при каких обстоятельствах не может возвращать NDIS_STATUS_PENDING, не вызывая сбой всей системы.

MiniportCoCreateVc выделяет все необходимые ресурсы, необходимые драйверу мини-порта для хранения сведений о состоянии виртуальной машины. Ресурсы могут включать, помимо прочего, буферы памяти, события, структуры данных и другие подобные ресурсы.

После выделения всех необходимых ресурсов драйвер мини-порта должен инициализировать ресурсы в пригодное для использования состояние и вернуть указатель на область состояния в MiniportVcContext. Дескриптор задается путем разыменовки дескриптора и сохранения указателя на буфер состояния в качестве значения дескриптора. Пример:

*MiniportVcContext = SomeBuffer;

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

Примеры

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

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

MINIPORT_CO_CREATE_VC MyCoCreateVc;

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

_Use_decl_annotations_
NDIS_STATUS
 MyCoCreateVc(
    NDIS_HANDLE  MiniportAdapterContext,
    NDIS_HANDLE  NdisVcHandle,
    PNDIS_HANDLE  MiniportVcContext
    )
  {...}

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

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

Требования

Требование Значение
Минимальная версия клиента Поддерживается для драйверов NDIS 6.0 и NDIS 5.1 (см. статью MiniportCoCreateVc (NDIS 5.1)) в Windows Vista. Поддерживается для драйверов NDIS 5.1 (см. Раздел MiniportCoCreateVc (NDIS 5.1)) в Windows XP.
Целевая платформа Windows
Header ndis.h (включая Ndis.h)
IRQL <= DISPATCH_LEVEL

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

MiniportInitializeEx

NdisMSetMiniportAttributes