Функция 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) |