Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Метод 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 |