Exemplo n.º 1
0
/*++
    @doc    INTERNAL

    @func   VOID | AcquireLock | Cancel safe queue callback for locking

    @parm   IN PIO_CSQ | csq | Points to cancel safe queue.
    @parm   IN PKIRQL | Irql | Points to KIRQL for lock.
    
--*/
__drv_raisesIRQL(DISPATCH_LEVEL)
__drv_maxIRQL(DISPATCH_LEVEL)
VOID 
HbtnAcquireLock(
   __in                                   PIO_CSQ csq, 
   __out __drv_out_deref(__drv_savesIRQL) PKIRQL Irql
   )
{
    PDEVICE_EXTENSION DevExt =  GET_DEV_EXT(csq);
    //
    // Suppressing because the address below csq is valid since it's
    // part of DEVICE_EXTENSION structure.
    //
#pragma prefast(suppress: __WARNING_BUFFER_UNDERFLOW, "Underflow using expression 'DevExt->QueueLock'")
    KeAcquireSpinLock(&DevExt->QueueLock, Irql);
} //HbtnAcquireLock


/*++
    @doc    INTERNAL
Exemplo n.º 2
0
            }
        }
        else
        {
            break;
        }
        pNextIrp = NULL;
        pNextList = pNextList->Flink;
    }

    return pNextIrp;
}

__drv_raisesIRQL(DISPATCH_LEVEL)
__drv_maxIRQL(DISPATCH_LEVEL)
VOID DkCsqAcquireLock(__in PIO_CSQ pCsq, __out __drv_out_deref(__drv_savesIRQL) PKIRQL pKIrql)
{
    PDEVICE_EXTENSION  pDevExt = NULL;

    pDevExt = CONTAINING_RECORD(pCsq, DEVICE_EXTENSION,
                                context.control.ioCsq);

    ASSERT(pDevExt->deviceMagic == USBPCAP_MAGIC_CONTROL);

    KeAcquireSpinLock(&pDevExt->context.control.csqSpinLock, pKIrql);
}

__drv_requiresIRQL(DISPATCH_LEVEL)
VOID DkCsqReleaseLock(__in PIO_CSQ pCsq, __in __drv_in(__drv_restoresIRQL) KIRQL kIrql)
{
    PDEVICE_EXTENSION  pDevExt = NULL;