ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

clntirp.c
Go to the documentation of this file.
00001 /*++
00002 
00003 Copyright (C) Microsoft Corporation, 1991 - 1999
00004 
00005 Module Name:
00006 
00007     clntirp.c
00008 
00009 Abstract:
00010 
00011     Client IRP queuing routines for CLASSPNP
00012 
00013 Environment:
00014 
00015     kernel mode only
00016 
00017 Notes:
00018 
00019 
00020 Revision History:
00021 
00022 --*/
00023 
00024 #include "classp.h"
00025 #include "debug.h"
00026 
00027 
00028 /*
00029  *  EnqueueDeferredClientIrp
00030  *
00031  *      Note: we currently do not support Cancel for storage irps.
00032  */
00033 VOID EnqueueDeferredClientIrp(PCLASS_PRIVATE_FDO_DATA FdoData, PIRP Irp)
00034 {
00035     KIRQL oldIrql;
00036 
00037     KeAcquireSpinLock(&FdoData->SpinLock, &oldIrql);
00038     InsertTailList(&FdoData->DeferredClientIrpList, &Irp->Tail.Overlay.ListEntry);
00039     KeReleaseSpinLock(&FdoData->SpinLock, oldIrql);
00040 }
00041 
00042 
00043 /*
00044  *  DequeueDeferredClientIrp
00045  *
00046  */
00047 PIRP DequeueDeferredClientIrp(PCLASS_PRIVATE_FDO_DATA FdoData)
00048 {
00049     KIRQL oldIrql;
00050     PLIST_ENTRY listEntry;
00051     PIRP irp;
00052 
00053     KeAcquireSpinLock(&FdoData->SpinLock, &oldIrql);
00054     if (IsListEmpty(&FdoData->DeferredClientIrpList)){
00055         listEntry = NULL;
00056     }
00057     else {
00058         listEntry = RemoveHeadList(&FdoData->DeferredClientIrpList);
00059     }
00060     KeReleaseSpinLock(&FdoData->SpinLock, oldIrql);
00061 
00062     if (listEntry == NULL) {
00063         irp = NULL;
00064     } else {
00065         irp = CONTAINING_RECORD(listEntry, IRP, Tail.Overlay.ListEntry);
00066         ASSERT(irp->Type == IO_TYPE_IRP);
00067         InitializeListHead(&irp->Tail.Overlay.ListEntry);
00068     }
00069 
00070     return irp;
00071 }
00072 
00073 
00074 

Generated on Sun May 27 2012 04:28:21 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.