WriteFile 子例程

用途

将数据写入套接字。

语法

#include <iocp.h>
boolean_t WriteFile (FileDescriptor, Buffer, WriteCount, AmountWritten, Overlapped)
HANDLE FileDescriptor;
LPVOID Buffer;
DWORD WriteCount;
LPDWORD AmountWritten;
LPOVERLAPPED Overlapped; 

描述

WriteFile 子例程将 WriteCount 参数指定的字节数从 Buffer 参数指示的缓冲区写入 FileDescriptor 参数。 写入的字节数保存在 AmountWritten 参数中。 重叠 参数指示是否可以异步处理该操作。

WriteFile 子例程返回一个布尔值 (整数) ,指示请求是否已完成。

WriteFile 子例程是 I/O 完成端口 (IOCP) 内核扩展的一部分。

注: 此子例程仅适用于套接字文件描述符。 它不与文件或其他文件描述符配合使用。

参数

描述
FileDescriptor 指定从对 套接字接受 子例程的调用中获取的有效文件描述符。
缓冲区 指定将从其中写入数据的缓冲区。
WriteCount 指定要写入的最大字节数。
AmountWritten 指定写入的字节数。 该参数由子例程设置。
重叠 指定一个重叠结构,指示是否可以异步处理请求。

返回值

成功完成时, WriteFile 子例程返回一个布尔值,指示请求已完成。

如果 WriteFile 子例程失败,那么子例程处理程序将执行以下函数:
  • 将值 0 返回 0 调用程序。
  • 将指示特定错误的错误代码移动到 错误号 全局变量中。 有关 错误号 变量的进一步说明,请参阅本文档的 "相关信息" 部分中的链接。

错误代码

描述
正在进行中 无法立即满足写请求,将以异步方式进行处理。 完成后,将向关联的完成端口发送完成包。
再次 无法立即满足写请求,并且无法以异步方式处理。
EINVAL FileDescriptor 无效。

示例

以下程序片段说明了如何使用 WriteFile 子例程将数据同步写入套接字:
void buffer;
int amount_written;
b=WriteFile (34, &buffer, 128, &amount_written, NULL);
以下程序片段说明了如何使用 WriteFile 子例程将数据异步写入套接字:
void buffer;
int amount_written;
LPOVERLAPPED overlapped;
b = ReadFile (34, &buffer, 128, &amount_written, overlapped);
注: 仅当无法立即满足请求时,才会异步处理该请求。