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;
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;
ULONG CsrssInitialized = FALSE;
PKPROCESS Csrss = NULL;
ULONG VideoPortDeviceNumber = 0;
+KMUTEX VideoPortInt10Mutex;
/* PRIVATE FUNCTIONS **********************************************************/
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))
{
extern ULONG CsrssInitialized;
extern PKPROCESS Csrss;
extern ULONG VideoPortDeviceNumber;
+extern KMUTEX VideoPortInt10Mutex;
VOID FASTCALL
IntAttachToCSRSS(PKPROCESS *CallingProcess, PKAPC_STATE ApcState);