使用writefile写入原始的usb c ++

时间:2015-11-03 13:11:51

标签: c++ winapi usb writefile

这是我的代码:

#include <string.h>
#include <malloc.h>
#include <stdlib.h>
#include <math.h>
#include <assert.h>
#include <Windows.h>
#include <stdio.h>
#include <iostream> 

int main(int argc, CHAR* argv[]) {
PVOID data[1024];
DWORD dwBytesRead = 0;
DWORD dwBytesWrite = 512;
HANDLE hFile = CreateFile(L"\\\\.\\E:", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0);
if (hFile == INVALID_HANDLE_VALUE) {
    printf("Error %x", GetLastError());
    return 1;
}

PVOID ToBe = "hello world from usb";
if (WriteFile(hFile,&ToBe,512,&dwBytesWrite,    NULL) == 0)
{
    printf("writeFile error: %x", GetLastError());
    return 1;
}

while (ReadFile(hFile, &data, 512, &dwBytesRead, NULL) != 0) {
    printf("%s", data);
}
if (ReadFile(hFile, &data, 512, &dwBytesRead, NULL) == 0) {
    printf("ReadFile error: %x", GetLastError());
    return 1;
}
return 0;
}

现在它看起来像是在工作,但我看不到USB中的“hello world”...... 我做错了什么?

(p.s。我运行程序后,我无法再打开我的USB而没有形成他,所以确实写了一些东西,但在那之后我无法用径向功能看到它......)

1 个答案:

答案 0 :(得分:2)

您写入512个字节,并使文件指针前进512个字节。然后你从那一点开始阅读。相反,你需要寻找文件指针回到开头。使用SetFilePointerEx来执行此操作。