读书人

怎么用C调用windowsAPI将一个文件的前

发布时间: 2012-05-11 12:55:37 作者: rapoo

如何用C调用windowsAPI将一个文件的前512个字节写到一个.img中
rt,这是我们的作业,要用四种方法,先问问一个,剩下的三个应该会比较类似
求大神帮帮忙……

[解决办法]
4个方法

1.

C/C++ code
HANDLE WINAPI CreateFile(  __in      LPCTSTR lpFileName,  __in      DWORD dwDesiredAccess,  __in      DWORD dwShareMode,  __in_opt  LPSECURITY_ATTRIBUTES lpSecurityAttributes,  __in      DWORD dwCreationDisposition,  __in      DWORD dwFlagsAndAttributes,  __in_opt  HANDLE hTemplateFile);
[解决办法]
探讨

4个方法

1.C/C++ code
HANDLE WINAPI CreateFile(
__in LPCTSTR lpFileName,
__in DWORD dwDesiredAccess,
__in DWORD dwShareMode,
__in_opt LPSECURITY_ATTRIBUTES lpSecurityAttribut……

[解决办法]
呵呵,假设有一个文件叫做c_ghost,我们要将它写到floppy.img里。
看看Linux的做法:
Shell的写法:
1. head -c 512 c_ghost > floppy.img
2. dd if=c_ghost of=floppy2.img bs=512 count=1
Linux API的写法:
C/C++ code
#include <stdio.h>#include <sys/stat.h>#include <sys/types.h>#include <fcntl.h>int main(void){        int fdin, fdout;        int n;        char buf[512] = {0};        fdin = open("c_ghost", O_RDONLY);        if(fdin < 0) {                perror("");                exit(1);        }        fdout = open("floppy.img", O_WRONLY | O_CREAT);        if(fdout < 0) {                perror("");                exit(1);        }        if((n = read(fdin, buf, 512)) < 512) {                printf("c_ghost is %d bytes, smaller than 512 bytes.\n", n);                exit(1);        }        write(fdout, buf, 512);        close(fdout);        close(fdin);        return 0;} 

读书人网 >C语言

热点推荐