char drivenamestr[32]; strcpy(drivenamestr, "C:\\"); DWORD sn=0, ignored1, ignored2; for (int drivename='C'; drivename<='Z'; drivename++) { drivenamestr[0]=drivename; if (GetVolumeInformation(drivenamestr, 0, 0, &sn, &ignored1, &ignored2,0, 0)) break; }; if (!sn) sn=0xE16E; sn^=0x35AF; srand(sn); volatile DWORD r32=0; for (int i=0; i<11; i++) { r32<<=15; r32|=rand(); }; DWORD generated_check=(rand()<<16) | rand(); char gcheck[64]; sprintf(gcheck, "%x", generated_check);