Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.05.28;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.012 c
15-1146055921
Nic
2006-04-26 16:52
2006.05.28
Что для России означает снижение курса доллара?


1-1145370011
Darvin
2006-04-18 18:20
2006.05.28
Отловить изменение текстовых свойств компонента


15-1146754834
fast2
2006-05-04 19:00
2006.05.28
Как установить WIN2003 "с нуля"?


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


2-1147593076
MasteR2
2006-05-14 11:51
2006.05.28
Многоугольник и окружность





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский