if ((DriveNumber != AUTO_DRIVE) && (DriveNumber < 26))
{
/* Force assignment */
+ KeAcquireGuardedMutex(&ObpDeviceMapLock);
if ((ObSystemDeviceMap->DriveMap & (1 << DriveNumber)) != 0)
{
DbgPrint("Drive letter already used!\n");
+ KeReleaseGuardedMutex(&ObpDeviceMapLock);
return FALSE;
}
+ KeReleaseGuardedMutex(&ObpDeviceMapLock);
}
else
{
/* Automatic assignment */
DriveNumber = AUTO_DRIVE;
-
+ KeAcquireGuardedMutex(&ObpDeviceMapLock);
for (i = 2; i < 26; i++)
{
if ((ObSystemDeviceMap->DriveMap & (1 << i)) == 0)
break;
}
}
+ KeReleaseGuardedMutex(&ObpDeviceMapLock);
if (DriveNumber == AUTO_DRIVE)
{
DPRINT("DriveNumber %d\n", DriveNumber);
- /* Update the System Device Map */
- ObSystemDeviceMap->DriveMap |= (1 << DriveNumber);
- ObSystemDeviceMap->DriveType[DriveNumber] = DriveType;
-
/* Build drive name */
swprintf(DriveNameBuffer,
L"\\??\\%C:",