我还是直接贴代码吧
BOOL GetLogicalDriver(HWND hDlg)
{
static char szBuffer[32] = {0};
static int index = 0;
static HANDLE hFile = NULL;
char szTemp[512] = {0};
static char szDiskData[512] = {0};
static DWORD ReadNum = 0;
char szRootPathName[8] = TEXT("\\\\.\\");
index = SendDlgItemMessage(hDlg, IDC_COMBO_DRIVE, CB_GETCURSEL, NULL, NULL);
if (index == CB_ERR)
return FALSE;
SendDlgItemMessage(hDlg, IDC_COMBO_DRIVE, CB_GETLBTEXT, (WPARAM)index, (LPARAM)szBuffer);
szRootPathName[strlen(szRootPathName)] = szBuffer[strlen(szBuffer)-4];
szRootPathName[strlen(szRootPathName)] = szBuffer[strlen(szBuffer)-3];
szRootPathName[strlen(szRootPathName)] = '\0';
hFile = CreateFile(szRootPathName, GENERIC_WRITE | GENERIC_READ, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
MessageBox(hDlg, TEXT("磁盘打开失败"), NULL, MB_OK);
memset(szRootPathName, 0, sizeof(szRootPathName));
return FALSE;
}
// SetFilePointer(hFile, 512 * 128, 0, FILE_BEGIN);
ReadFileEx(hFile, (void *)szTemp, 16, (LPDWORD)&ReadNum, NULL);
if (ReadNum != 0)
{
wsprintf((char *)szDiskData, TEXT("%0X"), szTemp);
SetDlgItemText(hDlg, IDC_VIEW, szDiskData);
}
else
{
ReadNum = GetLastError(); // 0x57参数不正确
wsprintf(szTemp, TEXT("%0X"), ReadNum);
MessageBox(hDlg, szTemp, NULL, MB_OK);
MessageBox(hDlg, TEXT("磁盘读取失败"), NULL, MB_OK);
memset(szRootPathName, 0, sizeof(szRootPathName));
}
CloseHandle(hFile);
return TRUE;
}
前面打开C盘已经成功了,但是每次读取数据的时候总是失败, ReadFile函数一直就是这么用的,不知道哪里出错了,也上网查了下,但还是没有解决,哪位大侠来指教下,万分感谢 WINDOWSXP系统
[课程]Linux pwn 探索篇!