[CDROM]
[reactos.git] / reactos / drivers / storage / class / cdrom / cdrom.c
index 12531ba..e90825a 100644 (file)
@@ -6,9 +6,10 @@
  * PROGRAMMERS:     Based on a source code sample from Microsoft NT4 DDK
  */
 
+#include "precomp.h"
+
 #include <ntddk.h>
 #include <scsi.h>
-#include <ntddscsi.h>
 #include <ntdddisk.h>
 #include <ntddcdrm.h>
 #include <include/class2.h>
@@ -1294,7 +1295,7 @@ Return Value:
                 //
 
                 cddata->XAFlags &= ~XA_USE_6_BYTE;
-                cddata->XAFlags = XA_USE_READ_CD | XA_USE_10_BYTE;
+                cddata->XAFlags |= XA_USE_READ_CD | XA_USE_10_BYTE;
             } else {
 
                 RtlCopyMemory(&cddata->u1.Header, buffer, sizeof(ERROR_RECOVERY_DATA10));
@@ -3930,10 +3931,7 @@ CdRomSwitchModeCompletion(
                 IoCompleteRequest(realIrp, IO_DISK_INCREMENT);
 
                 ExFreePool(srb->SenseInfoBuffer);
-                ExFreePool(srb->DataBuffer);
                 ExFreePool(srb);
-                IoFreeMdl(Irp->MdlAddress);
-                IoFreeIrp(Irp);
 
                 IoStartNextPacket(DeviceObject, FALSE);
 
@@ -4367,7 +4365,6 @@ RetryControl:
 
         LARGE_INTEGER  startingOffset;
         ULONG          transferBytes;
-        ULONG          startingSector;
         PRAW_READ_INFO rawReadInfo = (PRAW_READ_INFO)irpStack->Parameters.DeviceIoControl.Type3InputBuffer;
         PUCHAR         userData = (PUCHAR)Irp->AssociatedIrp.SystemBuffer;
 
@@ -4421,7 +4418,6 @@ RetryControl:
         }
 
         startingOffset.QuadPart = rawReadInfo->DiskOffset.QuadPart;
-        startingSector = (ULONG)(rawReadInfo->DiskOffset.QuadPart >> deviceExtension->SectorShift);
         transferBytes = rawReadInfo->SectorCount * RAW_SECTOR_SIZE;
 
         if (irpStack->Parameters.DeviceIoControl.OutputBufferLength < transferBytes) {
@@ -6748,7 +6744,6 @@ Return Value:
     PREAD_CAPACITY_DATA capacityBuffer;
     PIO_STACK_LOCATION  irpStack;
     PUCHAR              senseBuffer;
-    NTSTATUS            status;
 
     irp = IoAllocateIrp((CCHAR)(DeviceExtension->DeviceObject->StackSize+1),
                         FALSE);
@@ -6853,7 +6848,7 @@ Return Value:
                         IrpToComplete->IoStatus.Status = STATUS_VERIFY_REQUIRED;
                         IoMarkIrpPending(IrpToComplete);
 
-                        status = IoCallDriver(DeviceExtension->PortDeviceObject, irp);
+                        IoCallDriver(DeviceExtension->PortDeviceObject, irp);
 
                         //
                         // status is not checked because the completion routine for this