ReadFile 子例程
用途
从套接字读取数据。
语法
#include <iocp.h>
boolean_t ReadFile (FileDescriptor, Buffer, ReadCount, AmountRead, Overlapped)
HANDLE FileDescriptor;
LPVOID Buffer;
DWORD ReadCount;
LPDWORD AmountRead;
LPOVERLAPPED Overlapped; 描述
ReadFile 子例程将 ReadCount 参数指定的字节数从 FileDescriptor 参数读取到由 Buffer 参数指示的缓冲区中。 读取的字节数保存在 AmountRead 参数中。 重叠 参数指示是否可以异步处理该操作。
ReadFile 子例程返回一个布尔值 (整数) ,指示请求是否已完成。
ReadFile 子例程是 I/O 完成端口 (IOCP) 内核扩展的一部分。
注: 此子例程仅适用于套接字文件描述符。 它不与文件或其他文件描述符配合使用。
参数
| 项 | 描述 |
|---|---|
| FileDescriptor | 指定从对 套接字 或 接受 子例程的调用中获取的有效文件描述符。 |
| 缓冲区 | 指定数据将从其读取的缓冲区。 |
| ReadCount | 指定要读取的最大字节数。 |
| AmountRead | 指定读取的字节数。 该参数由子例程设置。 |
| 重叠 | 指定一个重叠结构,指示是否可以异步处理请求。 |
返回值
成功完成时, ReadFile 子例程返回一个布尔值,指示请求已完成。
如果 ReadFile 子例程不成功,那么子例程处理程序将执行下列函数:
- 将值 0 返回 0 调用程序。
- 将指示特定错误的错误代码移动到 错误号 全局变量中。 有关 错误号 变量的进一步说明,请参阅本文档的 "相关信息" 部分中的链接。
错误代码
如果发生以下任何错误,那么该子例程不成功:
| 项 | 描述 |
|---|---|
| 互联网络促进 | 无法立即满足读请求,将以异步方式进行处理。 完成后,将向关联的完成端口发送完成包。 |
| 再次 | 无法立即满足读请求,并且无法以异步方式进行处理。 |
| EINVAL | FileDescriptor 参数无效。 |
示例
以下程序片段说明了如何使用 ReadFile 子例程从套接字同步读取数据:
void buffer;
int amount_read;
b = ReadFile (34, &buffer, 128, &amount_read, NULL);
以下程序片段说明了如何使用 ReadFile 子例程从套接字异步读取数据:
void buffer;
int amount_read;
LPOVERLAPPED overlapped;
b = ReadFile (34, &buffer, 128, &amount_read, overlapped);注: 仅当无法立即满足请求时,才会异步处理该请求。