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


Метод IWDFDevice::SetPnpState (wudfddi.h)

[ предупреждение: UMDF 2 является последней версией UMDF и заменяет UMDF 1. Все новые драйверы UMDF должны быть написаны с помощью UMDF 2. Новые функции не добавляются в UMDF 1, а поддержка UMDF 1 в более новых версиях Windows 10 ограничена. Универсальные драйверы Windows должны использовать UMDF 2. Дополнительные сведения см. в разделе Начало работы с UMDF.]

Метод SetPnpState включает или отключает (или задает для состояния по умолчанию) указанное свойство Plug and Play (PnP) устройства.

Синтаксис

void SetPnpState(
  [in] WDF_PNP_STATE State,
  [in] WDF_TRI_STATE Value
);

Параметры

[in] State

Значение WDF_PNP_STATEтипа, определяющее заданное свойство PnP.

[in] Value

Значение типа WDF_TRI_STATE, определяющее, как задать свойство PnP, указывающее State. В следующей таблице показаны возможные значения значений.

Ценность Значение
WdfUseDefault (0) Задайте для свойства PnP состояние по умолчанию.
WdfFalse (1) Отключите свойство PnP.
WdfTrue (2) Включите свойство PnP.

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

Никакой

Замечания

Прежде чем вступить в силу состояние свойства PnP, SetPnpState, драйвер должен вызвать метод IWDFDevice::CommitPnpState.

Примеры

В следующем примере кода показано, как указать, что устройство завершилось сбоем в результате запроса.

VOID
CUmdfHidDevice::OnCompletion(
    __in IWDFIoRequest* WdfRequest,
    __in IWDFIoTarget* /* WdfTarget */,
    __in IWDFRequestCompletionParams* WdfCompletionParams,
    __in PVOID /* Context */
    )
{
    ULONG_PTR bytesRead;

 if (!SUCCEEDED(WdfCompletionParams->GetCompletionStatus()))
    {
        m_WdfDevice->SetPnpState(WdfPnpStateFailed, WdfTrue);
        m_WdfDevice->CommitPnpState();
        return;
    }

    // Lock the device to prevent files from closing.
    m_WdfDevice->AcquireLock();

    // Retrieve the number of bytes that were read.
    bytesRead = WdfCompletionParams->GetInformation();

    // Process the reports.
    ProcessInputReports((PBYTE) m_ReadMemory->GetDataBuffer(NULL), bytesRead);

    m_WdfDevice->ReleaseLock();

    // Release the request.
    m_InterruptReadRequest = NULL;
    WdfRequest->DeleteWdfObject();

    // Send a new request.
    SendInterruptPipeRead();
}

Требования

Требование Ценность
завершение поддержки Недоступно в UMDF 2.0 и более поздних версиях.
целевая платформа Настольный
минимальная версия UMDF 1.5
заголовка wudfddi.h (include Wudfddi.h)
DLL WUDFx.dll

См. также

IWDFDevice

IWDFDevice::CommitPnpState

IWDFDevice::GetPnpState

WDF_PNP_STATE