[ros-dev] [ros-diffs] [cgutman] 36580: - Raise IRQL to DISPATCH_LEVEL before using KeAcquireSpinLockAtDpcLevel/KeReleaseSpinLockFromDpcLevel

Aleksey Bragin aleksey at reactos.org
Mon Sep 29 11:11:37 CEST 2008


Is it really supposed to be so?

Why don't you just use KeAcquireSpinlock, which would save you the  
current IRQL level?

For me it looks like a hack.


WBR,
Aleksey Bragin.

On Sep 28, 2008, at 11:58 PM, cgutman at svn.reactos.org wrote:

> Author: cgutman
> Date: Sun Sep 28 14:58:09 2008
> New Revision: 36580
>
> URL: http://svn.reactos.org/svn/reactos?rev=36580&view=rev
> Log:
>  - Raise IRQL to DISPATCH_LEVEL before using  
> KeAcquireSpinLockAtDpcLevel/KeReleaseSpinLockFromDpcLevel
>
> Modified:
>     branches/aicom-network-fixes/drivers/network/ndis/ndis/protocol.c
>
> Modified: branches/aicom-network-fixes/drivers/network/ndis/ndis/ 
> protocol.c
> URL: http://svn.reactos.org/svn/reactos/branches/aicom-network- 
> fixes/drivers/network/ndis/ndis/protocol.c? 
> rev=36580&r1=36579&r2=36580&view=diff
> ====================================================================== 
> ========
> --- branches/aicom-network-fixes/drivers/network/ndis/ndis/ 
> protocol.c [iso-8859-1] (original)
> +++ branches/aicom-network-fixes/drivers/network/ndis/ndis/ 
> protocol.c [iso-8859-1] Sun Sep 28 14:58:09 2008
> @@ -67,6 +67,7 @@
>  {
>    UINT BufferedLength;
>    UINT PacketLength;
> +  KIRQL OldIrql;
>
>    NDIS_DbgPrint(MAX_TRACE, ("Called.\n"));
>
> @@ -75,6 +76,8 @@
>  #endif
>
>    NdisQueryPacket(Packet, NULL, NULL, NULL, &PacketLength);
> +
> +  KeRaiseIrql(DISPATCH_LEVEL, &OldIrql);
>
>    NDIS_DbgPrint(MAX_TRACE, ("acquiring miniport block lock\n"));
>    KeAcquireSpinLockAtDpcLevel(&Adapter->NdisMiniportBlock.Lock);
> @@ -102,6 +105,8 @@
>        Adapter->NdisMiniportBlock.IndicatedPacket 
> [KeGetCurrentProcessorNumber()] = NULL;
>      }
>    KeReleaseSpinLockFromDpcLevel(&Adapter->NdisMiniportBlock.Lock);
> +
> +  KeLowerIrql(OldIrql);
>
>    return STATUS_SUCCESS;
>  }
>



More information about the Ros-dev mailing list