《Windows API》文件的复制

本文详细介绍了如何利用Windows API函数实现文件的高效复制,涵盖了缓冲区管理和不同类型的文件操作,帮助开发者深入理解Windows底层文件操作机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

#define BUFFER_SIZE 1024

int main(int argc,LPTSTR argv[]) {
    handle_t hRead, hWrite;
    DWORD readLength, writeLength;
    CHAR buffer[BUFFER_SIZE];

    if (argc != 3) {
        printf("*****************HELP****************\n");
        printf("(1)\n");
        printf("\t *.exe file1 file2\n");
        return 1;
    }

    hRead = CreateFile(argv[1],
        GENERIC_READ,
        FILE_SHARE_READ,
        NULL,
        OPEN_EXISTING,
        FILE_ATTRIBUTE_NORMAL,
        NULL);
    if (hRead == INVALID_HANDLE_VALUE) {
        printf("Read File1 Error:%x\n",GetLastError());
        return 2;
    }

    hWrite = CreateFile(argv[2],
        GENERIC_WRITE,
        FILE_SHARE_WRITE,
        NULL,
        CREATE_ALWAYS,
        FILE_ATTRIBUTE_NORMAL,
        NULL);
    if (hWrite == INVALID_HANDLE_VALUE) {
        printf("Read File2 Error:%x\n", GetLastError());
        return 3;
    }

    while (ReadFile(hRead, buffer, BUFFER_SIZE,&readLength,NULL) && readLength> 0) {
        WriteFile(hWrite, buffer, readLength, &writeLength, NULL);
        if (readLength != writeLength) {
            printf("File size does not match:%x\n", GetLastError());
            return 4;
        }
    }
    printf("Success\n");
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值