Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Аппаратное обеспечение -> Агуров П.В. -> "Интерфейсы USB. Практика использования и программирования" -> 147

Интерфейсы USB. Практика использования и программирования - Агуров П.В.

Агуров П.В. Интерфейсы USB. Практика использования и программирования — БВХ-Петербург, 2004. — 576 c.
ISBN 5-94157-202-6
Скачать (прямая ссылка): interfeysusbpraktikaispolzovaniya2004.djvu
Предыдущая << 1 .. 141 142 143 144 145 146 < 147 > 148 149 150 151 152 153 .. 168 >> Следующая

484
Часть V. Справочник
16.7.1. Возвращаемое значение
При успешном выполнении функция WaitForMuitipieObjects возвращает
значение, указывающее на состояние объектов. При ошибке возвращает
wait_faxled. В табл. 16.2 приводятся возможные результаты функции.
Таблица 16.2. Результат функции WaitForMuitipieObjects
Код Описание
От Ecni/ibWaitAll = true, возвращаемое значе-
WAIT ABANDONED 0 ние показывает, что один из объектов - неос-
До вобожденный мьютекс. Если bWait All =
(WAIT ABANDONED 0+nCount-l) = false, то результат функции минус константа
wait_abandonеd_o будет равен индексу неосвобожденного мьютекса в массиве
lpHandles
От Если bWaitAll = true, то все объекты пере-
WAIT_OB JECT__0 шли в сигнальное состояние. Если false, то
ДО результат функции минус константа
(WAIT_OBJECT_0+nCount-l) wait object 0 будет равен индексу обьекта в
массиве lpHandles, первым перешедшего в сигнальное состояние
WAIT_TIMEOUT Тайм-аут завершен, а сигнальное состояние ни одного
объекта не достигнуто. Естественно, в случае infinite такой результат
невозможен
WAIT_FAILED Ошибка вызова WaitForSingleObject
16.8. Функция GetOverlappedResult результат асинхронной операции
Функция GetOverlappedResult возвращает результат асинхронной операции с
файлом или коммуникационным устройством. Формат заголовка на языке С
имеет вид:
BOOL GetOverlappedResult(
HANDLE hHandle, // дескрипторов объекта (файла или порта)
LPOVERLAPPED lpOverlapped,// структура асинхронного вызова LPDWORD
lpNBT, // число переданных или прочитанных байтов
BOOL bWait // флаг ожидания
);
Гпава 16. Базовые функции Windows
485
Формат заголовка на языке Delphi имеет вид:
function GetOverlappedResult(
hFile : THandle; // дескрипторов объекта (файла или порта)
const lpOverlapped: TOverlapped; // структура асинхронного вызова
var lpNBT : DWORD; // число переданных или прочитанных байтов
bWait : BOOL // флаг ожидания
): BOOL;
Первый параметр передает дескриптор файла или коммуникационного
устройства. Перед вызовом этот дескриптор должен быть связан с
асинхронной операцией, ВЫЗОВОМ ReadFile, WriteFile, DeviceloControl ИЛИ
WaitCommEvent.
Второй параметр передает структуру overlapped, которая использовалась при
начале асинхронной операции.
Третий параметр возвращает число байтов, реально прочитанных или
записанных в результате операции. Этот параметр не используется для
коммуникационных портов.
Если параметр bwait равен true, то функция не завершится, пока операция
не будет завершена. Если false и операция продолжается, то функция вернет
FALSE, а ВЫЗОВ GetLastError вернет ERROR_IO_INCOMPETE.
В Windows 95/98/МЕ, если параметр bwait равен true, то поле hEvent в
структуре overlapped не может быть NULL.
16.8.1. Возвращаемое значение
При успешном выполнении функции возвращается ненулевое значение.
16.9. Функция DeviceloControl: прямое управление драйвером
Функция DeviceloControl посылает команду, задаваемую кодом dwioCode,
напрямую драйверу устройства с дескриптором hDevice, указывая ему
выполнить определенные действия.
Для коммуникационных устройств дескриптор можно получить с помощью вызова
CreateFile с обязательным использованием флага асинхронных операций
file_flag_overlapped.
Формат заголовка на языке С имеет вид:
BOOL DeviceloControl(
HANDLE hDevice, // дескрипторов устройства
486___________________________________________________________Часть V.
Справочник
DWORD dwioCode, // код выполняемой функции
LPVOID IpInBuffer, // указатель на входные данные
DWORD dwInBufSize, // размер входного буфера
LPVOID lpOutBuffer, // указатель на выходной буфер
DWORD nOutBufSize, // размер выходного буфера
LPDWORD lpBytesRetn, // требуемый размер выходного буфера
LPOVERLAPPED lpOverlapped // структура асинхронного вызова
);
Формат заголовка на языке Delphi имеет вид:
function DeviceloControl(
hDevice : : THandle; // дескрипторов устройства
dwIoControlCode : : DWORD; // код выполняемой функции
IpInBuffer : : Pointer; // указатель на входные данные
nlnBufferSize : : DWORD; // размер входного буфера
lpOutBuffer : : Pointer; // указатель на выходной буфер
nOutBufferSize : : DWORD; // размер выходного буфера
var lpBytesRetn : : DWORD; // требуемый размер выходного буфера
lpOverlapped: Poverlapped // структура асинхронного вызова
): BOOL;
Параметр IpInBuffer передает входные данные, если они необходимы для
выполнения операции. Может быть передано null, если для выполнения
операции не требуется дополнительной информации. Размер передаваемых
входных данных задается параметром dwinBufsize.
Если функция, задаваемая кодом dwioCode, должна возвращать данные, то для
этих данных передается указатель на буфер lpOutBuffer и его размер
nOutBufsize. Если функция не возвращает данные, параметр lpOutBuffer
должен быть установлен В NULL, a nOutBufsize в 0.
Последний параметр возвращает реальный размер данных, сохраненных в
lpOutBufsize. Если буфер слишком маленький, функция завершится с ошибкой,
Предыдущая << 1 .. 141 142 143 144 145 146 < 147 > 148 149 150 151 152 153 .. 168 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.