Index: int10.c =================================================================== --- win32ss/drivers/videoprt/int10.c (revision 74578) +++ win32ss/drivers/videoprt/int10.c (working copy) @@ -296,7 +296,9 @@ BiosContext.SegEs = BiosArguments->SegEs; /* Do the ROM BIOS call */ + (void)KeWaitForMutexObject(&VideoPortInt10Mutex, Executive, KernelMode, FALSE, NULL); Status = Ke386CallBios(0x10, &BiosContext); + KeReleaseMutex(&VideoPortInt10Mutex, FALSE); /* Return the arguments */ BiosArguments->Eax = BiosContext.Eax; @@ -354,7 +356,9 @@ BiosContext.Ebp = BiosArguments->Ebp; /* Do the ROM BIOS call */ + (void)KeWaitForMutexObject(&VideoPortInt10Mutex, Executive, KernelMode, FALSE, NULL); Status = Ke386CallBios(0x10, &BiosContext); + KeReleaseMutex(&VideoPortInt10Mutex, FALSE); /* Return the arguments */ BiosArguments->Eax = BiosContext.Eax; Index: videoprt.c =================================================================== --- win32ss/drivers/videoprt/videoprt.c (revision 74578) +++ win32ss/drivers/videoprt/videoprt.c (working copy) @@ -33,6 +33,7 @@ ULONG CsrssInitialized = FALSE; PKPROCESS Csrss = NULL; ULONG VideoPortDeviceNumber = 0; +KMUTEX VideoPortInt10Mutex; /* PRIVATE FUNCTIONS **********************************************************/ @@ -464,9 +465,16 @@ NTSTATUS Status; PVIDEO_PORT_DRIVER_EXTENSION DriverExtension; BOOLEAN PnpDriver = FALSE, LegacyDetection = FALSE; + static BOOLEAN Int10MutexInitialized; TRACE_(VIDEOPRT, "VideoPortInitialize\n"); + if (!Int10MutexInitialized) + { + KeInitializeMutex(&VideoPortInt10Mutex, 0); + Int10MutexInitialized = TRUE; + } + /* As a first thing do parameter checks. */ if (HwInitializationData->HwInitDataSize > sizeof(VIDEO_HW_INITIALIZATION_DATA)) { Index: videoprt.h =================================================================== --- win32ss/drivers/videoprt/videoprt.h (revision 74578) +++ win32ss/drivers/videoprt/videoprt.h (working copy) @@ -247,6 +247,7 @@ extern ULONG CsrssInitialized; extern PKPROCESS Csrss; extern ULONG VideoPortDeviceNumber; +extern KMUTEX VideoPortInt10Mutex; VOID FASTCALL IntAttachToCSRSS(PKPROCESS *CallingProcess, PKAPC_STATE ApcState);