функция GPIO_CLX_ProcessAddDevicePreDeviceCreate (gpioclx.h)
Метод GPIO_CLX_ProcessAddDevicePreDeviceCreate загружает сведения об инициализации в две структуры, которые передаются в качестве входных параметров методу WdfDeviceCreate .
Синтаксис
NTSTATUS GPIO_CLX_ProcessAddDevicePreDeviceCreate(
[in] WDFDRIVER Driver,
[in, out] PWDFDEVICE_INIT DeviceInit,
[out] PWDF_OBJECT_ATTRIBUTES FdoAttributes
);
Параметры
[in] Driver
Дескриптор WDFDRIVER для объекта драйвера платформы для драйвера контроллера GPIO.
[in, out] DeviceInit
Указатель на структуру, выделенную платформой WDFDEVICE_INIT . Этот метод загружает сведения об инициализации в эту структуру. При возврате эта структура готова к использованию в качестве входного параметра метода WdfDeviceCreate .
[out] FdoAttributes
Указатель на структуру WDF_OBJECT_ATTRIBUTES , выделенную вызывающим объектом. Этот метод загружает сведения об инициализации в эту структуру. При возврате эта структура готова к использованию в качестве входного параметра метода WdfDeviceCreate .
Возвращаемое значение
GPIO_CLX_ProcessAddDevicePreDeviceCreate возвращает STATUS_SUCCESS, если вызов выполнен успешно. Возможные возвращаемые значения включают следующие коды ошибок.
Код возврата | Описание |
---|---|
|
Вызывающий объект не является зарегистрированным клиентом GpioClx. |
|
Недостаточно памяти. |
Комментарии
Драйвер контроллера GPIO должен вызвать этот метод в функции обратного вызова EvtDriverDeviceAdd перед вызовом метода WdfDeviceCreate , который создает объект устройства (FDO), представляющий контроллер GPIO. В противном случае расширение платформы GPIO (GpioClx) не может обрабатывать запросы ввода-вывода или прерывания обработки для нового объекта устройства платформы.
Примеры
В следующем примере кода показана функция обратного вызова EvtDriverDeviceAdd в драйвере контроллера GPIO для устройства контроллера GPIO "XYZ".
NTSTATUS
XyzEvtDriverDeviceAdd(
_In_ WDFDRIVER Driver,
_Inout_ PWDFDEVICE_INIT DeviceInit
)
{
WDFDEVICE Device;
WDF_OBJECT_ATTRIBUTES FdoAttributes;
NTSTATUS Status;
Status = GPIO_CLX_ProcessAddDevicePreDeviceCreate(Driver,
DeviceInit,
&FdoAttributes);
if (!NT_SUCCESS(Status)) {
goto ExitDeviceAdd;
}
//
// Call the framework to create the device and attach it to the lower stack.
//
Status = WdfDeviceCreate(&DeviceInit, &FdoAttributes, &Device);
if (!NT_SUCCESS(Status)) {
goto ExitDeviceAdd;
}
Status = GPIO_CLX_ProcessAddDevicePostDeviceCreate(Driver, Device);
if (!NT_SUCCESS(Status)) {
goto ExitDeviceAdd;
}
ExitDeviceAdd:
return Status;
}
В предыдущем примере кода вызов WdfDeviceCreate создает объект устройства платформы, представляющий устройство контроллера GPIO. Два входных параметра для этого вызова указывают на WDFDEVICE_INIT и WDF_OBJECT_ATTRIBUTES структуры. Эти структуры изменяются вызовом GPIO_CLX_ProcessAddDevicePreDeviceCreate , который предшествует вызову WdfDeviceCreate . Выходной параметр Device из вызова WdfDeviceCreate является входным параметром для вызова GPIO_CLX_ProcessAddDevicePostDeviceCreate , который следует за вызовом WdfDeviceCreate .
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Доступно начиная с Windows 8. |
Целевая платформа | Универсальное |
Верхняя часть | gpioclx.h |
Библиотека | Msgpioclxstub.lib |
IRQL | PASSIVE_LEVEL |