В документации говорится:
Функция WriteFile возвращается, когда
возникает одно из следующих условий:
- Запрошено количество запрошенных байтов.
- Операция чтения освобождает буферное пространство на конце чтения канала (если
запись была заблокирована). Для большего
информация, см. раздел «Трубы».
- Асинхронный дескриптор используется, и запись происходит
асинхронно.
- Произошла ошибка.
Только первый из них соответствует вашим критериям, поэтому ответ таков: документация ясна. *lpNumberOfBytesWritten
всегда равно nNumberOfBytesToWrite
, когда функция возвращается при вызове, как вы указали.