* 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>
//
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));
IoCompleteRequest(realIrp, IO_DISK_INCREMENT);
ExFreePool(srb->SenseInfoBuffer);
- ExFreePool(srb->DataBuffer);
ExFreePool(srb);
- IoFreeMdl(Irp->MdlAddress);
- IoFreeIrp(Irp);
IoStartNextPacket(DeviceObject, FALSE);
LARGE_INTEGER startingOffset;
ULONG transferBytes;
- ULONG startingSector;
PRAW_READ_INFO rawReadInfo = (PRAW_READ_INFO)irpStack->Parameters.DeviceIoControl.Type3InputBuffer;
PUCHAR userData = (PUCHAR)Irp->AssociatedIrp.SystemBuffer;
}
startingOffset.QuadPart = rawReadInfo->DiskOffset.QuadPart;
- startingSector = (ULONG)(rawReadInfo->DiskOffset.QuadPart >> deviceExtension->SectorShift);
transferBytes = rawReadInfo->SectorCount * RAW_SECTOR_SIZE;
if (irpStack->Parameters.DeviceIoControl.OutputBufferLength < transferBytes) {
PREAD_CAPACITY_DATA capacityBuffer;
PIO_STACK_LOCATION irpStack;
PUCHAR senseBuffer;
- NTSTATUS status;
irp = IoAllocateIrp((CCHAR)(DeviceExtension->DeviceObject->StackSize+1),
FALSE);
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