From aad3e1c393f6aa487ce52a09a70e3fee24e164c9 Mon Sep 17 00:00:00 2001 From: Johannes Anderwald Date: Sat, 12 Dec 2009 16:27:17 +0000 Subject: [PATCH] [PORTCLS] - Return correct status code from InterruptSync::CallSynchronizedRoutine svn path=/trunk/; revision=44551 --- .../drivers/wdm/audio/backpln/portcls/interrupt.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/reactos/drivers/wdm/audio/backpln/portcls/interrupt.cpp b/reactos/drivers/wdm/audio/backpln/portcls/interrupt.cpp index 84dd17123b4..a0c78ad9f21 100644 --- a/reactos/drivers/wdm/audio/backpln/portcls/interrupt.cpp +++ b/reactos/drivers/wdm/audio/backpln/portcls/interrupt.cpp @@ -52,6 +52,7 @@ public: PINTERRUPTSYNCROUTINE m_SyncRoutine; PVOID m_DynamicContext; + NTSTATUS m_Status; LONG m_Ref; @@ -97,10 +98,10 @@ CInterruptSynchronizedRoutine( IN PVOID ServiceContext) { CInterruptSync * This = (CInterruptSync*)ServiceContext; - NTSTATUS Status = This->m_SyncRoutine(This, This->m_DynamicContext); + This->m_Status = This->m_SyncRoutine(This, This->m_DynamicContext); - DPRINT("CInterruptSynchronizedRoutine this %p SyncRoutine %p Context %p Status %x\n", This, This->m_SyncRoutine, This->m_DynamicContext, Status); - return NT_SUCCESS(Status); + DPRINT("CInterruptSynchronizedRoutine this %p SyncRoutine %p Context %p Status %x\n", This, This->m_SyncRoutine, This->m_DynamicContext, This->m_Status); + return TRUE; } NTSTATUS @@ -112,7 +113,7 @@ CInterruptSync::CallSynchronizedRoutine( KIRQL OldIrql; DPRINT("CInterruptSync::CallSynchronizedRoutine this %p Routine %p DynamicContext %p Irql %x Interrupt %p\n", this, Routine, DynamicContext, KeGetCurrentIrql(), m_Interrupt); - + if (!m_Interrupt) { DPRINT("CInterruptSync_CallSynchronizedRoutine %p no interrupt connected\n", this); @@ -125,14 +126,14 @@ CInterruptSync::CallSynchronizedRoutine( CInterruptSynchronizedRoutine((PVOID)this); KeReleaseSpinLock(&m_Lock, OldIrql); - return STATUS_SUCCESS; + return m_Status; } m_SyncRoutine = Routine; m_DynamicContext = DynamicContext; if (KeSynchronizeExecution(m_Interrupt, CInterruptSynchronizedRoutine, (PVOID)this)) - return STATUS_SUCCESS; + return m_Status; else return STATUS_UNSUCCESSFUL; }