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


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

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

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

Синтаксис

void WdfPdoRequestEject(
  [in] WDFDEVICE Device
);

Параметры

[in] Device

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

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

Нет

Замечания

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

Водитель шины может вызвать 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