Re[6]: Порты завершения и все что с ними связано
От: Optimus1  
Дата: 20.05.21 13:01
Оценка:
Здравствуйте, ononim, Вы писали:

O>>Ну даже, если я запущу несколько операцией над сокетом/файлом, зачем мне WSAOVERLAPPED, если "внутреннее назначение полей WSAOVERLAPPED — недокументированные вещи напрямую их ковырять не стоит".

O>>Если поля WSAOVERLAPPED напрямую ковырять не стоит — зачем тогда он нужен ?
O>Это — контескт асинхронной операцции, в его начале на самом деле лежит структура, в которую ядро асинхронно пишет результат — IO_STATUS_BLOCK — https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/ns-wdm-_io_status_block — и такую структуру требуют все IO сервисы ядра, типа https://docs.microsoft.com/en-us/windows/win32/devnotes/ntreadfile.
O>В случае синхронных апи, типа ReadFile/send() этот контекст можно положить на стек и забыть при завершении операции. Для асинхронных операций этот контекст должен ктото выделить на время работы операции. Этот ктото — это вы.

O>Для асинхронных операций этот контекст должен ктото выделить на время работы операции. Этот ктото — это вы.


Так я его и выделил и отправил в функцию WSASend при ее вызове.
Я ни как не могу понять, зачем мне GetQueuedCompletionStatus возвращает указатель на мою же структуру, что мне с ней делать ?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.