diff --git a/reactos/drivers/video/videoprt/dispatch.c b/reactos/drivers/video/videoprt/dispatch.c index 504cbbde074..a8831ce47ee 100644 --- a/reactos/drivers/video/videoprt/dispatch.c +++ b/reactos/drivers/video/videoprt/dispatch.c @@ -329,6 +329,10 @@ IntVideoPortPnPStartDevice( { DeviceExtension->InterruptLevel = Descriptor->u.Interrupt.Level; DeviceExtension->InterruptVector = Descriptor->u.Interrupt.Vector; + if (Descriptor->ShareDisposition == CmResourceShareShared) + DeviceExtension->InterruptShared = TRUE; + else + DeviceExtension->InterruptShared = FALSE; } } } diff --git a/reactos/drivers/video/videoprt/interrupt.c b/reactos/drivers/video/videoprt/interrupt.c index 7b856a133ed..04fa84a7849 100644 --- a/reactos/drivers/video/videoprt/interrupt.c +++ b/reactos/drivers/video/videoprt/interrupt.c @@ -85,7 +85,7 @@ IntVideoPortSetupInterrupt( Irql, Irql, ConfigInfo->InterruptMode, - FALSE, + DeviceExtension->InterruptShared, Affinity, FALSE); diff --git a/reactos/drivers/video/videoprt/resource.c b/reactos/drivers/video/videoprt/resource.c index ece08ed857a..00cd872f205 100644 --- a/reactos/drivers/video/videoprt/resource.c +++ b/reactos/drivers/video/videoprt/resource.c @@ -559,6 +559,10 @@ VideoPortGetAccessRanges( { DeviceExtension->InterruptLevel = Descriptor->u.Interrupt.Level; DeviceExtension->InterruptVector = Descriptor->u.Interrupt.Vector; + if (Descriptor->ShareDisposition == CmResourceShareShared) + DeviceExtension->InterruptShared = TRUE; + else + DeviceExtension->InterruptShared = FALSE; } } } diff --git a/reactos/drivers/video/videoprt/videoprt.h b/reactos/drivers/video/videoprt/videoprt.h index f25ed08a8a6..3a5df1caaf0 100644 --- a/reactos/drivers/video/videoprt/videoprt.h +++ b/reactos/drivers/video/videoprt/videoprt.h @@ -93,6 +93,7 @@ typedef struct _VIDEO_PORT_DEVICE_EXTENSTION PCM_RESOURCE_LIST AllocatedResources; ULONG InterruptVector; ULONG InterruptLevel; + BOOLEAN InterruptShared; ULONG AdapterInterfaceType; ULONG SystemIoBusNumber; ULONG SystemIoSlotNumber;