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


функция обратного вызова EVT_URS_SET_ROLE (ursdevice.h)

Расширение класса URS вызывает этот обратный вызов события, если требуется, чтобы драйвер клиента изменил роль контроллера.

Синтаксис

EVT_URS_SET_ROLE EvtUrsSetRole;

NTSTATUS EvtUrsSetRole(
  [in] WDFDEVICE Device,
  [in] URS_ROLE Role
)
{...}

Параметры

[in] Device

Дескриптор объекта устройства платформы, полученный драйвером клиента в предыдущем вызове WdfDeviceCreate.

[in] Role

Значение типа URS_ROLE, указывающее роль для устройства контроллера.

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

Если операция выполнена успешно, функция обратного вызова должна возвращать STATUS_SUCCESS или другое значение состояния, для которого NT_SUCCESS(состояние) равно TRUE. В противном случае он должен вернуть значение состояния, для которого значение NT_SUCCESS(status) равно FALSE.

Замечания

Чтобы зарегистрировать реализацию обратного вызова события драйвера клиента, драйверу необходимо задать URS_CONFIG элемент EvtUrsSetRole в указатель функции метода реализации, а затем вызвать метод UrsDeviceInitialize путем передачи заполненной структуры. Драйвер должен вызвать метод после создания объекта устройства платформы для контроллера.

Примеры



NTSTATUS
EvtUrsSetRole (
    _In_ WDFDEVICE Device,
    _In_ URS_ROLE Role
    )
{
    NTSTATUS status;
    PFDO_CONTEXT fdoContext;

    TRACE_FUNC_ENTRY(TRACE_FLAG);
    TRY {


           // Change the current role of the controller to the specified role.
           // The driver might have stored the control registers in the device context. 
           // Read and write the register to get and set the current role. 

        }


        TRACE_INFO(TRACE_FLAG, "[Device: 0x%p] Successfully set role to %!URS_ROLE!", Device, Role);

        status = STATUS_SUCCESS;

    } FINALLY {

    }

    TRACE_FUNC_EXIT(TRACE_FLAG);

    return status;
}

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 10
минимальный поддерживаемый сервер Windows Server 2016
целевая платформа Виндоус
минимальная версия KMDF 1.15
заголовка ursdevice.h (include Urscx.h)
IRQL PASSIVE_LEVEL

См. также

UrsDeviceInitialize