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


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

Функция обратного вызова события EvtSpbTargetConnect драйвера контроллера SPB открывает подключение к целевому устройству в шине.

Синтаксис

EVT_SPB_TARGET_CONNECT EvtSpbTargetConnect;

NTSTATUS EvtSpbTargetConnect(
  [in] WDFDEVICE Controller,
  [in] SPBTARGET Target
)
{...}

Параметры

[in] Controller

Дескриптор WDFDEVICE для объекта устройства платформы , представляющего контроллер SPB.

[in] Target

Дескриптор SPBTARGET для открываемого целевого объекта. Целевой объект — это периферийное устройство или порт, подключенный к шине.

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

EvtSpbTargetConnect возвращает STATUS_SUCCESS, если драйвер успешно открывает подключение к целевому объекту. В противном случае функция возвращает соответствующий код ошибки NTSTATUS.

Комментарии

Реализация этой функции драйвером контроллера SPB является необязательной.

Расширение платформы SPB (SpbCx) управляет очередью ввода-вывода для контроллера SPB. Если драйвер контроллера SPB регистрирует функцию обратного вызова EvtSpbTargetConnect , spbCx вызывает эту функцию, когда клиент (драйвер периферийного устройства) контроллера отправляет IRP_MJ_CREATE запрос на открытие подключения к целевому устройству в шине. Если функция EvtSpbTargetConnect возвращает код ошибки, SpbCx не выполняет запрос IRP_MJ_CREATE . Клиент, который успешно открывает подключение к целевому объекту, имеет монопольный доступ к целевому объекту, пока подключение не будет закрыто.

Вызовите метод SpbTargetGetConnectionParameters , чтобы получить параметры подключения для целевого устройства. Драйвер контроллера SPB обычно вызывает этот метод из функции EvtSpbTargetConnect драйвера. SpbTargetGetConnectionParameters записывает параметры подключения в структуру, предоставляемую вызывающим SPB_CONNECTION_PARAMETERS . Элемент ConnectionParameters этой структуры является указателем на буфер, содержащий параметры подключения для целевого устройства. Драйвер использует эти параметры для настройки контроллера SPB для взаимодействия с устройством. Дополнительные сведения см. в разделе Получение параметров подключения для устройства.

Функция обратного вызова EvtSpbTargetConnect вызывается синхронно из контекста клиентского потока, запрашивающего подключение к целевому объекту.

SpbCx вызывает функцию обратного вызова EvtSpbTargetDisconnect , чтобы закрыть целевое подключение, которое ранее было открыто обратным вызовом EvtSpbTargetConnect .

Чтобы зарегистрировать функцию обратного вызова EvtSpbTargetConnect , вызовите метод SpbDeviceInitialize .

Примеры

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

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

EVT_SPB_TARGET_CONNECT  MyEvtSpbTargetConnect;

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

_Use_decl_annotations_
NTSTATUS
  MyEvtSpbTargetConnect(
    WDFDEVICE Controller,
    SPBTARGET Target
    )
{ ... }

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

Требования

Требование Значение
Минимальная версия клиента Поддерживается начиная с Windows 8.
Целевая платформа Персональный компьютер
Верхняя часть spbcx.h
IRQL Звонил на PASSIVE_LEVEL.

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

EvtSpbTargetDisconnect

IRP_MJ_CREATE

SPBTARGET

SPB_CONNECTION_PARAMETERS

SpbDeviceInitialize