Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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... понятно...


Наверх

Титульная страница Поиск, карта сайта Написать письмо