Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.05.28;
Скачать: CL | DM;

Вниз

TOverlapped   Найти похожие ветки 

 
Призрак ©   (2006-05-11 14:23) [0]

Где найти ответ на вопрос: *что это такое?* :))) Я с трудом откопал статейку про работу с COM-портом, там используется эту штука, но что это - не могу понять... Ни хелп найти, ни статьи, ни даже вопрос...


 
Призрак ©   (2006-05-11 14:30) [1]

ага, вроде что-то такое нашёл... заголовок со служебной информацией для работы с async I/O... понятно...


 
balepa ©   (2006-05-11 14:33) [2]

Удалено модератором


 
Пусик ©   (2006-05-11 15:45) [3]

Удалено модератором


 
Призрак ©   (2006-05-11 22:20) [4]

Удалено модератором


 
Пусик ©   (2006-05-12 09:56) [5]

Удалено модератором


 
Eraser ©   (2006-05-12 11:16) [6]


> Призрак ©   (11.05.06 14:23)

вот держи ещё статейку, где используется Overlapped.
http://www.delphimaster.ru/articles/named_pipes/index.html


 
balepa ©   (2006-05-12 11:26) [7]

Удалено модератором


 
Пусик ©   (2006-05-12 11:31) [8]

Удалено модератором


 
Призрак ©   (2006-05-13 00:14) [9]

Eraser, спасибо...

Любители поругаться, довожу до вашего сведения что на форумах подобного плана принято опубликовывать найденное решение, чтобы 1) другие не продолжали напрасно напрягаться с ответами и 2) другие новички могли увидеть решение.


 
Шпиён   (2006-05-13 01:37) [10]


> Призрак ©   (13.05.06 00:14) [9]

дык... Пусик-то как раз на твоей стороне была...просто это все - оффтопик...
впрочем - ЭТО тоже оффтопик  %)


 
Призрак ©   (2006-05-13 01:55) [11]

а я всё равно ничего не видел потому что вырезали до того как я пришёл :)))


 
Шпиён   (2006-05-13 02:05) [12]

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 02:15) [13]

Элементы Offset и OffsetHigh не игнорируются нефайловыми устройствами - установите их равными 0, иначе запрос ввода-вывода не выполнится, и при обращении к функции GetLastError вы получите ERROR_INVALID_PARAMETER.

hEvent - используется для получения уведомления о завершении ввода-вывода.

Internal - служит для хранения кода ошибки, которая может возникнуть при обработке запроса ввода-вывода.

InternalHigh - по завершении запроса ввода-вывода этот параметр содержит число переданных быйтов.

(C) сильно сокращенный Рихтер

Подробнее -
Дж. Рихтерб Дж. Кларк
"Программирование серверных приложений для Windows 2000"


 
Призрак ©   (2006-05-13 02:17) [14]

Спасибо... Это теперь работает, теперь непонятно другое :)
http://delphimaster.net/view/2-1147470240/


 
Призрак ©   (2006-05-13 02:29) [15]

Аааааааааа... так вот откуда инвалид параметр!.. :)))))))))))


 
Шпиён   (2006-05-13 02:33) [16]

ERROR_IO_PENDING - означает, что ошибки еще нет,  операция ввода-вывода еще не завершилась.
ERROR_INVALID_PARAMETER - см.
Шпиён   (13.05.06 02:15) [13]
Элементы Offset и OffsetHigh не игнорируются нефайловыми устройствами - установите их равными 0, иначе запрос ввода-вывода не выполнится, и при обращении к функции GetLastError вы получите ERROR_INVALID_PARAMETER.


 
Призрак ©   (2006-05-13 02:49) [17]

Ооооо святые кремниевые паладины... естественно она не завершилась, я же ещё никакой операции не делал!! Мне непонятно почему тогда WaitCommEvent не ждёт а ошибку выдаёт... А нули я там поставил, - они и до этого там стояли...



Страницы: 1 вся ветка

Текущий архив: 2006.05.28;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.059 c
15-1145908110
Fedor
2006-04-24 23:48
2006.05.28
удаленная работа для Delphi программиста


15-1146719163
Логин
2006-05-04 09:06
2006.05.28
Выбор винта????


15-1146811531
Firefly
2006-05-05 10:45
2006.05.28
Interbase 7.5


15-1146516340
ArtemESC
2006-05-02 00:45
2006.05.28
Крекеры бессильны!


15-1146495098
Хинт
2006-05-01 18:51
2006.05.28
Выделение контура