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