* Sync up to trunk head (r65353).
[reactos.git] / drivers / storage / classpnp / xferpkt.c
index 7cd1f92..390afe7 100644 (file)
@@ -22,7 +22,6 @@ Revision History:
 --*/
 
 #include "classp.h"
-#include "debug.h"
 
 #ifdef ALLOC_PRAGMA
     #pragma alloc_text(PAGE, InitializeTransferPackets)
@@ -41,7 +40,7 @@ ULONG MaxWorkingSetTransferPackets = MAX_WORKINGSET_TRANSFER_PACKETS_Consumer;
  *
  *      Allocate/initialize TRANSFER_PACKETs and related resources.
  */
-NTSTATUS InitializeTransferPackets(PDEVICE_OBJECT Fdo)
+NTSTATUS NTAPI InitializeTransferPackets(PDEVICE_OBJECT Fdo)
 {
     PCOMMON_DEVICE_EXTENSION commonExt = Fdo->DeviceExtension;
     PFUNCTIONAL_DEVICE_EXTENSION fdoExt = Fdo->DeviceExtension;
@@ -107,7 +106,7 @@ NTSTATUS InitializeTransferPackets(PDEVICE_OBJECT Fdo)
     while (fdoData->NumFreeTransferPackets < MIN_INITIAL_TRANSFER_PACKETS){
         PTRANSFER_PACKET pkt = NewTransferPacket(Fdo);
         if (pkt){
-            InterlockedIncrement(&fdoData->NumTotalTransferPackets);
+            InterlockedIncrement((PLONG)&fdoData->NumTotalTransferPackets);
             EnqueueFreeTransferPacket(Fdo, pkt);
         }
         else {
@@ -132,8 +131,7 @@ NTSTATUS InitializeTransferPackets(PDEVICE_OBJECT Fdo)
     return status;
 }
 
-
-VOID DestroyAllTransferPackets(PDEVICE_OBJECT Fdo)
+VOID NTAPI DestroyAllTransferPackets(PDEVICE_OBJECT Fdo)
 {
     PFUNCTIONAL_DEVICE_EXTENSION fdoExt = Fdo->DeviceExtension;
     PCLASS_PRIVATE_FDO_DATA fdoData = fdoExt->PrivateFdoData;
@@ -143,16 +141,15 @@ VOID DestroyAllTransferPackets(PDEVICE_OBJECT Fdo)
     
     ASSERT(IsListEmpty(&fdoData->DeferredClientIrpList));
 
-    while (pkt = DequeueFreeTransferPacket(Fdo, FALSE)){
+    while ((pkt = DequeueFreeTransferPacket(Fdo, FALSE))){
         DestroyTransferPacket(pkt);
-        InterlockedDecrement(&fdoData->NumTotalTransferPackets);    
+        InterlockedDecrement((PLONG)&fdoData->NumTotalTransferPackets);    
     }
 
     ASSERT(fdoData->NumTotalTransferPackets == 0);
 }
 
-
-PTRANSFER_PACKET NewTransferPacket(PDEVICE_OBJECT Fdo)
+PTRANSFER_PACKET NTAPI NewTransferPacket(PDEVICE_OBJECT Fdo)
 {
     PFUNCTIONAL_DEVICE_EXTENSION fdoExt = Fdo->DeviceExtension;
     PCLASS_PRIVATE_FDO_DATA fdoData = fdoExt->PrivateFdoData;
@@ -188,12 +185,11 @@ PTRANSFER_PACKET NewTransferPacket(PDEVICE_OBJECT Fdo)
     return newPkt;
 }
 
-
 /*
  *  DestroyTransferPacket
  *
  */
-VOID DestroyTransferPacket(PTRANSFER_PACKET Pkt)
+VOID NTAPI DestroyTransferPacket(PTRANSFER_PACKET Pkt)
 {
     PFUNCTIONAL_DEVICE_EXTENSION fdoExt = Pkt->Fdo->DeviceExtension;
     PCLASS_PRIVATE_FDO_DATA fdoData = fdoExt->PrivateFdoData;
@@ -218,8 +214,7 @@ VOID DestroyTransferPacket(PTRANSFER_PACKET Pkt)
     ExFreePool(Pkt);
 }
 
-
-VOID EnqueueFreeTransferPacket(PDEVICE_OBJECT Fdo, PTRANSFER_PACKET Pkt)
+VOID NTAPI EnqueueFreeTransferPacket(PDEVICE_OBJECT Fdo, PTRANSFER_PACKET Pkt)
 {
     PFUNCTIONAL_DEVICE_EXTENSION fdoExt = Fdo->DeviceExtension;
     PCLASS_PRIVATE_FDO_DATA fdoData = fdoExt->PrivateFdoData;
@@ -229,7 +224,7 @@ VOID EnqueueFreeTransferPacket(PDEVICE_OBJECT Fdo, PTRANSFER_PACKET Pkt)
     ASSERT(!Pkt->SlistEntry.Next);
 
     InterlockedPushEntrySList(&fdoData->FreeTransferPacketsList, &Pkt->SlistEntry);
-    newNumPkts = InterlockedIncrement(&fdoData->NumFreeTransferPackets);
+    newNumPkts = InterlockedIncrement((PLONG)&fdoData->NumFreeTransferPackets);
     ASSERT(newNumPkts <= fdoData->NumTotalTransferPackets);
 
     /*
@@ -268,7 +263,7 @@ VOID EnqueueFreeTransferPacket(PDEVICE_OBJECT Fdo, PTRANSFER_PACKET Pkt)
                 pktToDelete = DequeueFreeTransferPacket(Fdo, FALSE);   
                 if (pktToDelete){
                     SimplePushSlist(&pktList, &pktToDelete->SlistEntry);
-                    InterlockedDecrement(&fdoData->NumTotalTransferPackets);    
+                    InterlockedDecrement((PLONG)&fdoData->NumTotalTransferPackets);    
                 }
                 else {
                     DBGTRACE(ClassDebugTrace, ("Extremely unlikely condition (non-fatal): %d packets dequeued at once for Fdo %p. NumTotalTransferPackets=%d (1).", MaxWorkingSetTransferPackets, Fdo, fdoData->NumTotalTransferPackets));
@@ -277,7 +272,7 @@ VOID EnqueueFreeTransferPacket(PDEVICE_OBJECT Fdo, PTRANSFER_PACKET Pkt)
             }
             KeReleaseSpinLock(&fdoData->SpinLock, oldIrql);
 
-            while (slistEntry = SimplePopSlist(&pktList)){
+            while ((slistEntry = SimplePopSlist(&pktList))){
                 pktToDelete = CONTAINING_RECORD(slistEntry, TRANSFER_PACKET, SlistEntry);
                 DestroyTransferPacket(pktToDelete);
             }
@@ -307,7 +302,7 @@ VOID EnqueueFreeTransferPacket(PDEVICE_OBJECT Fdo, PTRANSFER_PACKET Pkt)
                 
                 pktToDelete = DequeueFreeTransferPacket(Fdo, FALSE);
                 if (pktToDelete){
-                    InterlockedDecrement(&fdoData->NumTotalTransferPackets);    
+                    InterlockedDecrement((PLONG)&fdoData->NumTotalTransferPackets);    
                 }
                 else {
                     DBGTRACE(ClassDebugTrace, ("Extremely unlikely condition (non-fatal): %d packets dequeued at once for Fdo %p. NumTotalTransferPackets=%d (2).", MinWorkingSetTransferPackets, Fdo, fdoData->NumTotalTransferPackets));
@@ -324,21 +319,20 @@ VOID EnqueueFreeTransferPacket(PDEVICE_OBJECT Fdo, PTRANSFER_PACKET Pkt)
   
 }
 
-
-PTRANSFER_PACKET DequeueFreeTransferPacket(PDEVICE_OBJECT Fdo, BOOLEAN AllocIfNeeded)
+PTRANSFER_PACKET NTAPI DequeueFreeTransferPacket(PDEVICE_OBJECT Fdo, BOOLEAN AllocIfNeeded)
 {
     PFUNCTIONAL_DEVICE_EXTENSION fdoExt = Fdo->DeviceExtension;
     PCLASS_PRIVATE_FDO_DATA fdoData = fdoExt->PrivateFdoData;
     PTRANSFER_PACKET pkt;
     PSINGLE_LIST_ENTRY slistEntry;
-    KIRQL oldIrql;
+    //KIRQL oldIrql;
 
     slistEntry = InterlockedPopEntrySList(&fdoData->FreeTransferPacketsList);
     if (slistEntry){
         slistEntry->Next = NULL;
         pkt = CONTAINING_RECORD(slistEntry, TRANSFER_PACKET, SlistEntry);
         ASSERT(fdoData->NumFreeTransferPackets > 0);
-        InterlockedDecrement(&fdoData->NumFreeTransferPackets);
+        InterlockedDecrement((PLONG)&fdoData->NumFreeTransferPackets);
     }
     else {
         if (AllocIfNeeded){
@@ -350,7 +344,7 @@ PTRANSFER_PACKET DequeueFreeTransferPacket(PDEVICE_OBJECT Fdo, BOOLEAN AllocIfNe
              */
             pkt = NewTransferPacket(Fdo);
             if (pkt){
-                InterlockedIncrement(&fdoData->NumTotalTransferPackets);
+                InterlockedIncrement((PLONG)&fdoData->NumTotalTransferPackets);
                 fdoData->DbgPeakNumTransferPackets = max(fdoData->DbgPeakNumTransferPackets, fdoData->NumTotalTransferPackets);
             }
             else {
@@ -365,8 +359,6 @@ PTRANSFER_PACKET DequeueFreeTransferPacket(PDEVICE_OBJECT Fdo, BOOLEAN AllocIfNe
     return pkt;
 }
 
-
-
 /*
  *  SetupReadWriteTransferPacket
  *
@@ -377,11 +369,11 @@ PTRANSFER_PACKET DequeueFreeTransferPacket(PDEVICE_OBJECT Fdo, BOOLEAN AllocIfNe
  *        The Irp is set up in SubmitTransferPacket because it must be reset
  *        for each packet submission.
  */
-VOID SetupReadWriteTransferPacket(  PTRANSFER_PACKET Pkt, 
-                                            PVOID Buf, 
-                                            ULONG Len, 
-                                            LARGE_INTEGER DiskLocation,
-                                            PIRP OriginalIrp)
+VOID NTAPI SetupReadWriteTransferPacket(PTRANSFER_PACKET Pkt, 
+                                        PVOID Buf, 
+                                        ULONG Len, 
+                                        LARGE_INTEGER DiskLocation,
+                                        PIRP OriginalIrp)
 {
     PFUNCTIONAL_DEVICE_EXTENSION fdoExt = Pkt->Fdo->DeviceExtension;
     PCLASS_PRIVATE_FDO_DATA fdoData = fdoExt->PrivateFdoData;
@@ -460,13 +452,12 @@ VOID SetupReadWriteTransferPacket(  PTRANSFER_PACKET Pkt,
     Pkt->CompleteOriginalIrpWhenLastPacketCompletes = TRUE;
 }
 
-
 /*
  *  SubmitTransferPacket
  *
  *        Set up the IRP for the TRANSFER_PACKET submission and send it down.
  */
-VOID SubmitTransferPacket(PTRANSFER_PACKET Pkt)
+VOID NTAPI SubmitTransferPacket(PTRANSFER_PACKET Pkt)
 {
     PCOMMON_DEVICE_EXTENSION commonExtension = Pkt->Fdo->DeviceExtension;
     PDEVICE_OBJECT nextDevObj = commonExtension->LowerDeviceObject;
@@ -508,8 +499,7 @@ VOID SubmitTransferPacket(PTRANSFER_PACKET Pkt)
     IoCallDriver(nextDevObj, Pkt->Irp);
 }
 
-
-NTSTATUS TransferPktComplete(IN PDEVICE_OBJECT NullFdo, IN PIRP Irp, IN PVOID Context)
+NTSTATUS NTAPI TransferPktComplete(IN PDEVICE_OBJECT NullFdo, IN PIRP Irp, IN PVOID Context)
 {
     PTRANSFER_PACKET pkt = (PTRANSFER_PACKET)Context;
     PFUNCTIONAL_DEVICE_EXTENSION fdoExt = pkt->Fdo->DeviceExtension;
@@ -718,19 +708,17 @@ NTSTATUS TransferPktComplete(IN PDEVICE_OBJECT NullFdo, IN PIRP Irp, IN PVOID Co
     return STATUS_MORE_PROCESSING_REQUIRED;
 }
 
-
 /*
  *  SetupEjectionTransferPacket
  *
  *      Set up a transferPacket for a synchronous Ejection Control transfer.
  */
-VOID SetupEjectionTransferPacket(   TRANSFER_PACKET *Pkt,
+VOID NTAPI SetupEjectionTransferPacket(   TRANSFER_PACKET *Pkt,
                                         BOOLEAN PreventMediaRemoval,
                                         PKEVENT SyncEventPtr,
                                         PIRP OriginalIrp)
 {
     PFUNCTIONAL_DEVICE_EXTENSION fdoExt = Pkt->Fdo->DeviceExtension;
-    PCLASS_PRIVATE_FDO_DATA fdoData = fdoExt->PrivateFdoData;
     PCDB pCdb;
 
     PAGED_CODE();
@@ -762,14 +750,13 @@ VOID SetupEjectionTransferPacket(   TRANSFER_PACKET *Pkt,
     Pkt->SyncEventPtr = SyncEventPtr;
     Pkt->CompleteOriginalIrpWhenLastPacketCompletes = FALSE;
 }
-                                
 
 /*
  *  SetupModeSenseTransferPacket
  *
  *      Set up a transferPacket for a synchronous Mode Sense transfer.
  */
-VOID SetupModeSenseTransferPacket(   TRANSFER_PACKET *Pkt,
+VOID NTAPI SetupModeSenseTransferPacket(TRANSFER_PACKET *Pkt,
                                         PKEVENT SyncEventPtr,
                                         PVOID ModeSenseBuffer,
                                         UCHAR ModeSenseBufferLen,
@@ -777,7 +764,6 @@ VOID SetupModeSenseTransferPacket(   TRANSFER_PACKET *Pkt,
                                         PIRP OriginalIrp)
 {
     PFUNCTIONAL_DEVICE_EXTENSION fdoExt = Pkt->Fdo->DeviceExtension;
-    PCLASS_PRIVATE_FDO_DATA fdoData = fdoExt->PrivateFdoData;
     PCDB pCdb;
 
     PAGED_CODE();
@@ -814,20 +800,18 @@ VOID SetupModeSenseTransferPacket(   TRANSFER_PACKET *Pkt,
     Pkt->CompleteOriginalIrpWhenLastPacketCompletes = FALSE;
 }
 
-
 /*
  *  SetupDriveCapacityTransferPacket
  *
  *      Set up a transferPacket for a synchronous Drive Capacity transfer.
  */
-VOID SetupDriveCapacityTransferPacket(   TRANSFER_PACKET *Pkt,
-                                        PVOID ReadCapacityBuffer,
-                                        ULONG ReadCapacityBufferLen,
-                                        PKEVENT SyncEventPtr,
-                                        PIRP OriginalIrp)
+VOID NTAPI SetupDriveCapacityTransferPacket(TRANSFER_PACKET *Pkt,
+                                            PVOID ReadCapacityBuffer,
+                                            ULONG ReadCapacityBufferLen,
+                                            PKEVENT SyncEventPtr,
+                                            PIRP OriginalIrp)
 {
     PFUNCTIONAL_DEVICE_EXTENSION fdoExt = Pkt->Fdo->DeviceExtension;
-    PCLASS_PRIVATE_FDO_DATA fdoData = fdoExt->PrivateFdoData;
     PCDB pCdb;
 
     RtlZeroMemory(&Pkt->Srb, sizeof(SCSI_REQUEST_BLOCK));
@@ -860,7 +844,6 @@ VOID SetupDriveCapacityTransferPacket(   TRANSFER_PACKET *Pkt,
     Pkt->CompleteOriginalIrpWhenLastPacketCompletes = FALSE;
 }
 
-
 #if 0
     /*
      *  SetupSendStartUnitTransferPacket
@@ -907,5 +890,3 @@ VOID SetupDriveCapacityTransferPacket(   TRANSFER_PACKET *Pkt,
         Pkt->CompleteOriginalIrpWhenLastPacketCompletes = FALSE;
     }
 #endif
-
-