функция обратного вызова 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. |