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


структура CONTROLLER_OBJECT (ntddk.h)

Объект контроллера представляет аппаратный адаптер или контроллер с однородными устройствами, которые являются фактическими целевыми объектами для запросов ввода-вывода. Объект контроллера можно использовать для синхронизации ввода-вывода драйвера устройства с целевыми устройствами через его аппаратный адаптер или контроллер.

Объект контроллера частично непрозрачн. Записи драйверов должны знать о определенном поле, связанном с объектом контроллера, так как их драйверы обращаются к этому полю через указатель объекта контроллера, возвращаемый IoCreateController. Следующее поле в объекте контроллера доступно для создания драйвера.

Синтаксис

typedef struct _CONTROLLER_OBJECT {
  CSHORT        Type;
  CSHORT        Size;
  PVOID         ControllerExtension;
  KDEVICE_QUEUE DeviceWaitQueue;
  ULONG         Spare1;
  LARGE_INTEGER Spare2;
} CONTROLLER_OBJECT, *PCONTROLLER_OBJECT;

Члены

Type

Size

ControllerExtension

Указатель на расширение контроллера. Структура и содержимое расширения контроллера определяются драйвером. Размер определяется драйвером, указанным в вызове драйвера IoCreateController. Как правило, драйверы поддерживают общее состояние операций ввода-вывода в расширении контроллера и состоянии для конкретного устройства для целевого устройства в соответствующем расширении устройства.

DeviceWaitQueue

Spare1

Spare2

Замечания

Большинство подпрограмм драйверов, обрабатывающих IRP, получают указатель на целевой объект устройства. Следовательно, драйверы устройств, использующие объекты контроллера, часто хранят указатель объекта контроллера, возвращаемый IoCreateController в каждом расширении устройства.

Обратите внимание, что объект контроллера не имеет имени, поэтому он не может быть целевым объектом запроса ввода-вывода, а драйверы более высокого уровня не могут подключать или присоединять их объекты устройства к объекту контроллера драйвера устройства.

Незадокументированные поля в объекте контроллера должны считаться недоступными. Драйверы с зависимостями в расположениях полей объекта или доступе к незадокументированных полям могут не оставаться переносимыми и совместимыми с другими драйверами со временем.

Требования

Требование Ценность
заголовка ntddk.h (include Ntddk.h)

См. также

IoCreateController