В .NET BCL нет прямой функции, но есть некоторые классы, которые могут помочь вам с операциями ввода-вывода Windows.
1) Инициализировать экземпляр класса Overlapped.
2) Пакет вызовов с обратным вызовом.
3) Передайте полученный NativeOverlapped (возвращаемое значение Pack) в WriteFileGather .
4) Как я понимаю, ваш обратный вызов должен вызываться в рабочем потоке после завершения операции.
Обязательно прочитайте документы MSDN на WriteFileGather, так как есть некоторые требования, например, данные должны быть выровнены по границе страницы системы (я думаю, 4K на x86-x64, 8K на Itanium) и т. д. и т. д.