Функция SpbControllerSetRequestAttributes (spbcx.h)

Метод SpbControllerSetRequestAttributes задает атрибуты объекта, которые будут использоваться для всех объектов SPBREQUEST, которые расширение платформы SPB (SpbCx) предоставляет драйверу контроллера SPB.

Синтаксис

void SpbControllerSetRequestAttributes(
  [in] WDFDEVICE              FxDevice,
  [in] PWDF_OBJECT_ATTRIBUTES RequestAttributes
);

Параметры

[in] FxDevice

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

[in] RequestAttributes

Указатель на структуру, выделенную вызывающим объектом WDF_OBJECT_ATTRIBUTES , которая содержит атрибуты для объектов SPBREQUEST контроллера SPB.

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

None

Remarks

Во время инициализации устройства драйвер контроллера SPB может вызвать этот метод, чтобы задать атрибуты по умолчанию для объектов SPBREQUEST. После этого SpbCx назначает эти атрибуты всем запросам ввода-вывода, которые доставляются (или пересылают) целевым устройствам в шине.

RequestAttributes указывает на структуру WDF_OBJECT_ATTRIBUTES . Вызывающий объект ранее должен вызвать функцию WDF_OBJECT_ATTRIBUTES_INIT для инициализации этой структуры. После этого вызова, но до вызова SpbControllerSetRequestAttributes, вызывающий объект может изменять значения следующих элементов этой структуры:

  • EvtCleanupCallback
  • EvtDeкистройCallback
  • ContextSizeOverride
  • ContextTypeInfo
SpbControllerSetRequestAttributes будет использовать эти значения в качестве атрибутов по умолчанию для объектов SPBREQUEST. Однако драйвер не может изменить значения атрибутов по умолчанию, содержащиеся в элементах ExecutionLevel, SynchronizationScope и ParentObject . Эти члены должны оставаться неизменными по сравнению со значениями, которыми их инициализирует функция WDF_OBJECT_ATTRIBUTES_INIT .

WDF_OBJECT_ATTRIBUTES_INIT инициализирует элементы EvtCleanupCallback и EvtDegradCallbackзначением NULL. Если изменить эти значения по умолчанию, чтобы зарегистрировать функцию обратного вызова EvtCleanupCallback или EvtDegradCallback , эта функция вызывается каждый раз, когда запрос ввода-вывода поступает в очередь контроллера SPB, которая управляется SpbCx. Такой запрос ввода-вывода приводит к вызову функции EvtCleanupCallback или EvtDegradCallback , даже если SpbCx никогда не представляет запрос драйверу контроллера SPB (так как запрос отменяется после поступления в очередь, но до передачи драйверу).

Драйвер контроллера SPB должен вызвать SpbControllerSetRequestAttributes перед фиксацией объекта устройства, то есть перед тем, как он возвратится из обратного вызова EvtDriverDeviceAdd или добавляет PDO в дочерний список контроллера. Дочерний список представляет устройства, подключенные к шине. Дополнительные сведения см. в разделе Перечисление устройств в шине.

Требования

Требование Значение
Минимальная версия клиента Доступно начиная с Windows 8.
Целевая платформа Универсальное
Верхняя часть spbcx.h
Библиотека Spbcxstubs.lib
IRQL PASSIVE_LEVEL

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

EvtDriverDeviceAdd

WDF_OBJECT_ATTRIBUTES

WDF_OBJECT_ATTRIBUTES_INIT