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


Функция IoAttachDeviceToDeviceStack (wdm.h)

Подпрограмма IoAttachDeviceToDeviceStack присоединяет объект устройства вызывающего объекта к самому высокому объекту устройства в цепочке и возвращает указатель на ранее самый высокий объект устройства.

Синтаксис

PDEVICE_OBJECT IoAttachDeviceToDeviceStack(
  [in] PDEVICE_OBJECT SourceDevice,
  [in] PDEVICE_OBJECT TargetDevice
);

Параметры

[in] SourceDevice

Указатель на созданный вызывающим объектом устройства.

[in] TargetDevice

Указатель на объект устройства другого драйвера, например указатель, возвращаемый предыдущим вызовом IoGetDeviceObjectPointer.

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

IoAttachDeviceToDeviceStack возвращает указатель на объект устройства, к которому был подключен SourceDev ice. Указатель возвращаемого объекта устройства может отличаться от TargetDevice, если TargetDevice были добавлены дополнительные драйверы поверх него.

IoAttachDeviceToDeviceStack возвращает NULL, если не удалось подключить объект устройства, так как, например, целевое устройство выгрузится.

Замечания

IoAttachDeviceToDeviceStack устанавливает уровни между драйверами, чтобы те же ИРВ отправляются каждому драйверу в цепочке.

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

Эта подпрограмма задает AlignmentRequirement в SourceDevice значением в следующем нижнем объекте устройства и задает StackSize значением в следующем нижнем объекте плюс один.

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

Драйвер, который получил указатель на целевое устройство путем вызова IoGetDeviceObjectPointer должен вызывать ObDereferenceObject с указателем объекта файла, возвращенным IoGetDeviceObjectPointer, чтобы освободить ссылку на объект файла, прежде чем он отсоединяет свой собственный объект устройства, например, если такой драйвер более высокого уровня выгружается.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Доступно начиная с Windows 2000.
целевая платформа Всеобщий
заголовка wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
библиотеки NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL
правил соответствия DDI AddDevice(wdm), HwStorPortProhibitedDDIs(storport), PnpSameDeviceObject(wdm)

См. также

IoAttachDevice

IoDetachDevice

IoGetDeviceObjectPointer

ObDereferenceObject