我正在研究多线程。我将 Win32Api 用于 CreateThread。我有 char 数组,其中包含 5 个驱动器号。我需要将这些驱动器一个一个地MessageBox。
这是我的代码:
DWORD WINAPI Fun(LPVOID param)
{
const char* str = (const char*)param;
MessageBox(NULL, str, "hello", MB_OK | MB_ICONQUESTION);
return 0;
}
void StartWork()
{
int n, d, b = 0;
char dd;
DWORD dr = GetLogicalDrives();
HANDLE threads[26];
for (int i = 0; i < 26; i++)
{
n = ((dr >> i) & 1);
if (n == 1)
{
dd = char(65 + i);
std::string text(1, dd);
d = GetDriveType((text + ":\\").c_str());
if (d == DRIVE_REMOVABLE || d == DRIVE_FIXED || d == DRIVE_REMOTE)
{
threads[b] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Evil, (LPVOID)text.c_str(), 0, NULL);
b += 1;
}
}
}
WaitForMultipleObjects(b, threads, TRUE, 1000);
}
输出不是我想要的。我得到了最后一个磁盘字母(我有 3 个磁盘 - C、D、E,我的输出是 msgbox "E" 的 3 倍)