您當前位置:
首頁 >
php開源 >
php教程 > 使用CreateFile, ReadFile, WriteFile在Windows NT/2000/XP下讀寫絕對扇區的方法
使用CreateFile, ReadFile, WriteFile在Windows NT/2000/XP下讀寫絕對扇區的方法
來源:程序員人生 發布時間:2015-08-10 08:53:29 閱讀次數:4188次
也就是在CreateFile的時候打開文件名指定: “.Device”就能夠了. 由于代碼比較短, 所以我不做注釋, 相信大家看代碼就可以明白意思了. 另外這里讀寫的都是軟盤A盤第0扇區, 如果想讀寫其他的扇區, 那末可使用API SetFilePointer. 讀扇區的方法(下面的代碼演示從A盤的第0扇區讀出數據, 寫入到文件BOOT.BIN中): #include <windows.h> #include <assert.h> #include <stdio.h> void main() { HANDLE hFile; hFile = CreateFile("\.A:", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL); assert(hFile && "CreateFile failed!"); PBYTE pBuffer = (PBYTE)malloc(512); assert(pBuffer && "Allocate memory failed!"); DWORD dwLen; ReadFile(hFile, pBuffer, 512, &dwLen, NULL); FILE * fp; fp = fopen("boot.bin", "wb"); assert(fp && "Open file failed!"); fwrite(pBuffer, 512, 1, fp); fclose(fp); CloseHandle(hFile); free(pBuffer); } 那末相應的, 寫扇區的方法的就是這樣的咯(以下代碼演示從BOOT.BIN中讀出數據寫入到A盤第0扇區): #include <windows.h> #include <assert.h> #include <stdio.h> void main() { HANDLE hFile; hFile = CreateFile("\.A:", GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL); assert(hFile && "CreateFile failed!"); PBYTE pBuffer = (PBYTE)malloc(512); assert(pBuffer && "Allocate memory failed!"); FILE * fp; fp = fopen("boot.bin", "rb"); assert(fp && "Open file failed!"); fread(pBuffer, 512, 1, fp); fclose(fp); DWORD dwLen; WriteFile(hFile, pBuffer, 512, &dwLen, NULL); CloseHandle(hFile); free(pBuffer); }
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
------分隔線----------------------------
------分隔線----------------------------