Функция WdfPdoMarkMissing (wdfpdo.h)
[Относится только к KMDF]
Метод WdfPdoMarkMissing информирует платформу о том, что устройство больше не доступно.
Синтаксис
NTSTATUS WdfPdoMarkMissing(
[in] WDFDEVICE Device
);
Параметры
[in] Device
Дескриптор объекта устройства платформы, который представляет объект физического устройства (PDO).
Возвращаемое значение
Если операция выполнена успешно, функция возвращает STATUS_SUCCESS. К дополнительным возвращаемым значениям относятся:
Код возврата | Описание |
---|---|
|
Дескриптор устройства не представляет PDO. |
|
Не удалось найти объект устройства. |
Метод также может возвращать другие значения NTSTATUS.
Системная ошибка проверка возникает, если драйвер предоставляет недопустимый дескриптор объекта.
Комментарии
Дополнительные сведения о WdfPdoMarkMissing см. в разделе Static Enumeration.
Примеры
В следующем примере кода выполняется поиск в списке дочерних устройств, чтобы найти то, которое соответствует указанному серийному номеру. Когда пример находит правильный дочерний элемент, он вызывает WdfPdoMarkMissing , чтобы указать, что дочерний элемент недоступен. Этот пример был взят из примера драйвера автобуса Тостера и упрощен.
WDFDEVICE hChild = NULL;
NTSTATUS status = STATUS_INVALID_PARAMETER;
BOOLEAN found = FALSE;
PPDO_DEVICE_DATA pdoData;
WdfFdoLockStaticChildListForIteration(Device);
while ((hChild = WdfFdoRetrieveNextStaticChild(
Device,
hChild,
WdfRetrieveAddedChildren
)) != NULL) {
pdoData = PdoGetData(hChild); // Device object context space
if (SerialNo == pdoData->SerialNo) {
status = WdfPdoMarkMissing(hChild);
if(!NT_SUCCESS(status)) {
KdPrint(("WdfPdoMarkMissing failed 0x%x\n", status));
break;
}
found = TRUE;
break;
}
}
WdfFdoUnlockStaticChildListFromIteration(Device);
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Минимальная версия KMDF | 1,0 |
Верхняя часть | wdfpdo.h (включая Wdf.h) |
Библиотека | Wdf01000.sys (см. раздел Управление версиями библиотеки Платформы). |
IRQL | <= DISPATCH_LEVEL |
Правила соответствия DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |