#include <Windows.h>
#include <stdio.h>
int main()
{
HANDLE hFile = CreateFile(L"Sync.txt", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
printf("创建文件失败\n");
return -1;
}
DWORD dwWriteBytes = 0;
BOOL bRet = WriteFile(hFile, L"测试同步文件", sizeof(wchar_t)* wcslen(L"测试同步文件") + 2, &dwWriteBytes, NULL);
if (bRet == FALSE || dwWriteBytes == 0)
{
printf("写入文件失败\n");
}
CloseHandle(hFile);
return 0;
}
#include <Windows.h>
#include <stdio.h>
int main()
{
OVERLAPPED over = { 0 };
over.hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
HANDLE hFile = CreateFile(L"async.txt",
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED,
NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
printf("创建文件失败\n");
return -1;
}
DWORD dwWriteBytes = 0;
BOOL bRet = WriteFile(hFile, L"异步写入文件", sizeof(wchar_t)* wcslen(L"异步写入文件") + 2, &dwWriteBytes, &over);
if (bRet == FALSE && GetLastError() != ERROR_IO_PENDING)
{
printf("写入文件失败\n");
}
WaitForSingleObject(over.hEvent, INFINITE);
CloseHandle(hFile);
return 0;
}
#include <Windows.h>
#include <stdio.h>
VOID CALLBACK ReadCompleteRoutine(DWORD dwErrorCode, DWORD dwNumberOfBytesWrite, LPOVERLAPPED lpOverlapped);
int main()
{
OVERLAPPED over = { 0 };
HANDLE hFile = CreateFile(L"asyncex.txt",
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED,
NULL);
if (INVALID_HANDLE_VALUE == hFile)
{
printf("创建文件失败\n");
return -1;
}
DWORD dwWriteBytes = 0;
BOOL bRet = WriteFileEx(hFile, L"IO异步操作", sizeof(wchar_t)* wcslen(L"IO异步操作") + 2, &over, ReadCompleteRoutine);
if (bRet == FALSE && GetLastError() != ERROR_IO_PENDING)
{
printf("写入文件失败\n");
}
SleepEx(10, TRUE);
CloseHandle(hFile);
getchar();
return 0;
}
VOID CALLBACK ReadCompleteRoutine(DWORD dwErrorCode, DWORD dwNumberOfBytesWrite, LPOVERLAPPED lpOverlapped)
{
printf("写入字节数:%d\n", dwNumberOfBytesWrite);
}