Сообщение Re[2]: Порты завершения и все что с ними связано от 18.05.2021 10:29
Изменено 18.05.2021 10:32 Videoman
Согласен, но есть маленькое замечаение, вдруг кто не в курсе по поводу вот этого:
O>Потому что внутреннее назначение полей WSAOVERLAPPED — недокументированные вещи напрямую их ковырять не стоит. GetQueuedCompletionStatus просто выковыривает вам оттуда нужный вам параметр документированным способом.
Толи начиная с XP, толи с 7-ки Microsoft понял что API в током виде устоялся и уже по сути прибит гвоздями низкоуровневой реализации и данные поля стали документированными. Читал об этом где-то в статьях самого Microsoft в MSDN, но не могу сейчас найти. Вот косвенное подтверждение.
InternalHigh When an asynchronous I/O request completes, this member holds the number of bytes transferred.
When first designing the OVERLAPPED structure, Microsoft decided not to document the Internal and InternalHigh members (which explains their names). As time went on, Microsoft realized that the information contained in these members would be useful to developers, so it documented them. However, Microsoft didn’t change the names of the members because the operating system source code referenced them frequently, and Microsoft didn’t want to modify the code.
Согласен, но есть маленькое замечаение, вдруг кто не в курсе по поводу вот этого:
O>Потому что внутреннее назначение полей WSAOVERLAPPED — недокументированные вещи напрямую их ковырять не стоит. GetQueuedCompletionStatus просто выковыривает вам оттуда нужный вам параметр документированным способом.
Толи начиная с XP, толи с 7-ки Microsoft понял что API в таком виде устоялся и уже, по сути, прибит гвоздями низкоуровневой реализации и данные поля стали документированными. Читал об этом где-то в статьях самого Microsoft в MSDN, но не могу сейчас найти. Вот косвенное подтверждение.
InternalHigh When an asynchronous I/O request completes, this member holds the number of bytes transferred.
When first designing the OVERLAPPED structure, Microsoft decided not to document the Internal and InternalHigh members (which explains their names). As time went on, Microsoft realized that the information contained in these members would be useful to developers, so it documented them. However, Microsoft didn’t change the names of the members because the operating system source code referenced them frequently, and Microsoft didn’t want to modify the code.