функция WinUsb_Initialize (winusb.h)
Функция WinUsb_Initialize создает дескриптор WinUSB для устройства, указанного дескриптором файла.
Синтаксис
BOOL WinUsb_Initialize(
[in] HANDLE DeviceHandle,
[out] PWINUSB_INTERFACE_HANDLE InterfaceHandle
);
Параметры
[in] DeviceHandle
Дескриптор устройства, возвращенного CreateFile . WinUSB использует перекрывающиеся функции ввода-вывода, поэтому FILE_FLAG_OVERLAPPED необходимо указать в параметре dwFlagsAndAttributes вызова CreateFile , чтобы DeviceHandle имели характеристики, необходимые для правильной работы WinUsb_Initialize .
[out] InterfaceHandle
Получает непрозрачный дескриптор для первого (по умолчанию) интерфейса на устройстве. Этот дескриптор требуется другим подпрограммам WinUSB, которые выполняют операции с интерфейсом по умолчанию. Чтобы освободить дескриптор, вызовите функцию WinUSB_Free .
Возвращаемое значение
WinUsb_Initialize возвращает значение TRUE , если операция выполнена успешно. В противном случае эта подпрограмма возвращает значение FALSE, и вызывающий объект может получить зарегистрированную ошибку, вызвав Метод GetLastError.
GetLastError может вернуть следующий код ошибки.
Код возврата | Описание |
---|---|
|
Вызывающий объект передал значение NULL или недопустимый дескриптор в параметре DeviceHandle ; FILE_FLAG_OVERLAPPED не задано в дескрипторове файла. |
|
Указывает, что для выполнения операции недостаточно памяти. |
|
Указывает, что не удалось найти дескриптор интерфейса по умолчанию для устройства. |
Комментарии
При вызове WinUsb_Initialize параметры политики интерфейса сбрасываются до значений по умолчанию.
Вызов WinUsb_Initialize запрашивает в базовом стеке USB различные дескрипторы и выделяет достаточно памяти для хранения полученных данных дескриптора.
WinUsb_Initialize сначала извлекает дескриптор устройства, а затем получает связанный дескриптор конфигурации. Из дескриптора конфигурации вызов наследует связанные дескрипторы интерфейса и сохраняет их в массиве. Интерфейсы в массиве идентифицируются по отсчитываемым от нуля индексам. Значение индекса 0 указывает на первый интерфейс (интерфейс по умолчанию), значение 1 указывает на второй связанный интерфейс и т. д. WinUsb_Initialize анализирует дескриптор интерфейса по умолчанию для дескрипторов конечной точки и кэширует такие сведения, как связанные каналы или данные о состоянии. Дескриптор, полученный в параметре InterfaceHandle , является указателем на блок памяти, выделенный для первого интерфейса в массиве.
Если приложение хочет использовать другой интерфейс на устройстве, оно должно вызвать WinUsb_GetAssociatedInterface, указать индекс интерфейса и получить дескриптор блока памяти, выделенного для указанного интерфейса.
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Верхняя часть | winusb.h (включая Winusb.h) |
Библиотека | Winusb.lib |
DLL | Winusb.dll |