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

Подпрограмма IoDeleteDevice удаляет объект устройства из системы, например при удалении базового устройства из системы.

Синтаксис

void IoDeleteDevice(
  [in] PDEVICE_OBJECT DeviceObject
);

Параметры

[in] DeviceObject

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

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

None

Remarks

При обработке запроса IRP_MN_REMOVE_DEVICE PnP драйвер PnP вызывает IoDeleteDevice для удаления всех связанных объектов устройства. Дополнительные сведения см. в разделе Обработка запроса IRP_MN_REMOVE_DEVICE .

Устаревший драйвер должен вызывать эту подпрограмму при выгрузке или при возникновении неустранимой ошибки инициализации , например невозможности правильной инициализации физического устройства. Эта подпрограмма также вызывается, когда драйвер динамически перенастраивает свои устройства. Например, драйвер диска, который вызывается для повторного секционирования диска, вызывает IoDeleteDevice , чтобы удалить объекты устройства, представляющие секции, которые необходимо заменить.

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

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

Когда драйвер вызывает IoDeleteDevice, диспетчер ввода-вывода удаляет объект целевого устройства, если на него отсутствуют незадающиеся ссылки. Однако если остаются оставшиеся ссылки, диспетчер операций ввода-вывода помечает объект устройства как "ожидающий удаления" и удаляет объект устройства при освобождении ссылок.

Требования

Требование Значение
Минимальная версия клиента Доступно начиная с Windows 2000.
Целевая платформа Универсальное
Верхняя часть wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL
Правила соответствия DDI DeleteDevice(wdm), HwStorPortProhibitedDIs(storport), IrqlIoApcLte(wdm), PnpSurpriseRemove(wdm), RemoveLockCheck(wdm)

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

IoCreateDevice

IoDisconnectInterrupt