Win32编程之异步完成IO(十)

发布时间 2023-09-17 16:23:25作者: TechNomad

一、文件的异步写入

#include <Windows.h>
#include <stdio.h>

int main() {
	HANDLE hFile = CreateFile(TEXT("test.txt"), GENERIC_WRITE | GENERIC_READ, 0, 
   NULL, OPEN_ALWAYS, FILE_FLAG_SEQUENTIAL_SCAN | FILE_FLAG_OVERLAPPED, NULL); if (hFile == INVALID_HANDLE_VALUE) { printf("无法打开文件。错误码:%d\n", GetLastError()); return 0; } OVERLAPPED ol1 = { 0 }; char buffer[] = "Hello World"; DWORD writeCount = 0; BOOL ret = WriteFile(hFile, buffer, strlen(buffer), &writeCount, &ol1); if (!ret) { CloseHandle(hFile); printf("文件写入失败!\n"); return 0; } CloseHandle(hFile); return 1; }

二、文件的异步读取  

#include <Windows.h>
#include <stdio.h>

int main() {
	HANDLE hFile = CreateFile(TEXT("test.txt"), GENERIC_WRITE | GENERIC_READ, 0, NULL, OPEN_EXISTING, 
   FILE_FLAG_SEQUENTIAL_SCAN | FILE_FLAG_OVERLAPPED, NULL); if (hFile == INVALID_HANDLE_VALUE) { printf("无法打开文件。错误码:%d\n", GetLastError()); return 0; } OVERLAPPED ol2 = { 0 }; char readBuffer[255] = { 0 }; DWORD readCount = 0; ret = ReadFile(hFile, readBuffer, 255, &readCount, &ol2); if (!ret) { CloseHandle(hFile); printf("文件读取失败!\n"); return 0; } printf("readBuffer:%s\n", readBuffer); CloseHandle(hFile); return 1; }