![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TOverlapped [D5, 2000]
Призрак © (2006-05-11 14:23:00)Где найти ответ на вопрос: *что это такое?* :))) Я с трудом откопал статейку про работу с COM-портом, там используется эту штука, но что это - не могу понять... Ни хелп найти, ни статьи, ни даже вопрос...
Призрак (2006-05-13 02:49:00) [1]Ооооо святые кремниевые паладины... естественно она не завершилась, я же ещё никакой операции не делал!! Мне непонятно почему тогда WaitCommEvent не ждёт а ошибку выдаёт... А нули я там поставил, - они и до этого там стояли...
Шпиён (2006-05-13 02:33:00) [2]ERROR_IO_PENDING - означает, что ошибки еще нет, операция ввода-вывода еще не завершилась.
ERROR_INVALID_PARAMETER - см.
Шпиён (13.05.06 02:15) [13]
Элементы Offset и OffsetHigh не игнорируются нефайловыми устройствами - установите их равными 0, иначе запрос ввода-вывода не выполнится, и при обращении к функции GetLastError вы получите ERROR_INVALID_PARAMETER.
Призрак (2006-05-13 02:29:00) [3]Аааааааааа... так вот откуда инвалид параметр!.. :)))))))))))
Призрак (2006-05-13 02:17:00) [4]Спасибо... Это теперь работает, теперь непонятно другое :)
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1147470240&n=18
Шпиён (2006-05-13 02:15:00) [5]Элементы Offset и OffsetHigh не игнорируются нефайловыми устройствами - установите их равными 0, иначе запрос ввода-вывода не выполнится, и при обращении к функции GetLastError вы получите ERROR_INVALID_PARAMETER.
hEvent - используется для получения уведомления о завершении ввода-вывода.
Internal - служит для хранения кода ошибки, которая может возникнуть при обработке запроса ввода-вывода.
InternalHigh - по завершении запроса ввода-вывода этот параметр содержит число переданных быйтов.
(C) сильно сокращенный Рихтер
Подробнее -
Дж. Рихтерб Дж. Кларк
"Программирование серверных приложений для Windows 2000"
Шпиён (2006-05-13 02:05:00) [6]type
POverlapped = ^TOverlapped;
_OVERLAPPED = record
Internal: DWORD;
InternalHigh: DWORD;
Offset: DWORD;
OffsetHigh: DWORD;
hEvent: THandle;
end;
BOOL WriteFile(
HANDLE hFile, // handle to file to write to
LPCVOID lpBuffer, // pointer to data to write to file
DWORD nNumberOfBytesToWrite, // number of bytes to write
LPDWORD lpNumberOfBytesWritten, // pointer to number of bytes written
LPOVERLAPPED lpOverlapped // pointer to structure needed for overlapped I/O
);
При выполнении асинхронного ввода-вывода параметр lpOverlapped должен содержать адрес проинициализированной структуры TOVERLAPPED.
Эта структура содержит 5 элементов.
Offset, OffsetHigh, hEvent - должны быть проинициализированы до вызова ReadFile или WriteFile.
Internal и InternalHigh - устанавливаются драйвером устройства и могут быть проанализированы по завершении ввода-вывода.
Offset и OffsetHigh - формируют 64-разрядное значение начальной позицииб с которой вы хотите начать выполнение ввода-вывода. При синхронном вводе-выводе система знает, что начинать доступ к файлу надо с позицииб определяемой указателем файлаю По завершении такой операции система автоматически обновляет указатель файла, и следующая операция может отследить, где завершилась предыдущая.
При асинхронном вводе-выводе система не использует указатель файла, поэтому, чтобы избежать путаницы в случае нескольких обращений к одному объекту, все запросы асинхронного ввода-вывода должны указывать в структуре OVERLAPPED начальную позицию для доступа к файлу.
Призрак (2006-05-13 01:55:00) [7]а я всё равно ничего не видел потому что вырезали до того как я пришёл :)))
Шпиён (2006-05-13 01:37:00) [8]
> Призрак © (13.05.06 00:14) [9]
дык... Пусик-то как раз на твоей стороне была...просто это все - оффтопик...
впрочем - ЭТО тоже оффтопик %)
Призрак (2006-05-13 00:14:00) [9]Eraser, спасибо...
Любители поругаться, довожу до вашего сведения что на форумах подобного плана принято опубликовывать найденное решение, чтобы 1) другие не продолжали напрасно напрягаться с ответами и 2) другие новички могли увидеть решение.
Пусик (2006-05-12 11:31:00) [10]Удалено модератором
balepa (2006-05-12 11:26:00) [11]Удалено модератором
Eraser (2006-05-12 11:16:00) [12]
> Призрак © (11.05.06 14:23)
вот держи ещё статейку, где используется Overlapped.
http://www.delphimaster.ru/articles/named_pipes/index.html
Пусик (2006-05-12 09:56:00) [13]Удалено модератором
Призрак (2006-05-11 22:20:00) [14]Удалено модератором
Пусик (2006-05-11 15:45:00) [15]Удалено модератором
balepa (2006-05-11 14:33:00) [16]Удалено модератором
Призрак (2006-05-11 14:30:00) [17]ага, вроде что-то такое нашёл... заголовок со служебной информацией для работы с async I/O... понятно...