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


Функция WdfPdoRequestEject (wdfpdo.h)

[Применяется только к KMDF]

Метод WdfPdoRequestEject информирует платформу о том, что указанное устройство будет извлечено из док-станции.

Синтаксис

void WdfPdoRequestEject(
  [in] WDFDEVICE Device
);

Параметры

[in] Device

Дескриптор объекта устройства платформы, который представляет объект физического устройства (PDO).

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

None

Remarks

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

Водитель автобуса может вызвать WdfPdoRequestEject или WdfChildListRequestChildEject , чтобы сообщить, что водитель обнаружил попытку извлечь одно из перечисленных дочерних устройств из док-станции устройства. Например, драйвер может обнаружить, что пользователь нажал кнопку извлечения.

Если объект устройства платформы для PDO устройства доступен, драйвер может вызвать WdfPdoRequestEject. Если драйвер использует динамическое перечисление шины и доступно описание идентификации устройства, драйвер может вызвать WdfChildListRequestChildEject.

Дополнительные сведения о WdfPdoRequestEject и WdfChildListRequestChildEject см. в разделе Поддержка извлекаемых устройств.

Примеры

В следующем примере кода выполняется поиск в списке дочерних устройств, чтобы найти устройство, соответствующее указанному серийному номеру. Когда пример находит правильный дочерний элемент, он вызывает WdfPdoRequestEject , чтобы указать, что дочерний элемент извлекается. Этот пример был взят из примера драйвера автобуса Тостера и упрощен.

WDFDEVICE  hChild = NULL;
NTSTATUS  status = STATUS_INVALID_PARAMETER;
PPDO_DEVICE_DATA  pdoData;

WdfFdoLockStaticChildListForIteration(Device);

while ((hChild = WdfFdoRetrieveNextStaticChild(
                                               Device, 
                                               hChild,
                                               WdfRetrieveAddedChildren
                                               )) != NULL) {
    //
    // Obtain device object context space, and check the
    // stored serial number.
    //
    pdoData = PdoGetData(hChild);
    if (SerialNo == pdoData->SerialNo) {
        status = STATUS_SUCCESS;
        WdfPdoRequestEject(hChild);
    }
}
WdfFdoUnlockStaticChildListFromIteration(Device);

Требования

Требование Значение
Целевая платформа Универсальное
Минимальная версия KMDF 1,0
Верхняя часть wdfpdo.h (включая Wdf.h)
Библиотека Wdf01000.sys (см. раздел Управление версиями библиотеки платформы).
IRQL <= DISPATCH_LEVEL
Правила соответствия DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

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

WdfFdoLockStaticChildListForIteration

WdfFdoRetrieveNextStaticChild

WdfFdoUnlockStaticChildListFromIteration