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);
注: 仅当无法立即满足请求时,才会异步处理该请求。