--*/
-#define CLASS_INIT_GUID 1
#include "classp.h"
-#include "debug.h"
+
+#include <stddef.h>
+
+#include <initguid.h>
+#include <mountdev.h>
#ifdef ALLOC_PRAGMA
#pragma alloc_text(INIT, DriverEntry)
status = IoAllocateDriverObjectExtension(DriverObject,
CLASS_DRIVER_EXTENSION_KEY,
sizeof(CLASS_DRIVER_EXTENSION),
- &driverExtension);
+ (PVOID *)&driverExtension);
if(NT_SUCCESS(status)) {
PCLASS_DEV_INFO devInfo;
PIO_STACK_LOCATION irpStack = IoGetCurrentIrpStackLocation(Irp);
- PIO_STACK_LOCATION nextIrpStack = IoGetNextIrpStackLocation(Irp);
NTSTATUS status = Irp->IoStatus.Status;
BOOLEAN completeRequest = TRUE;
BOOLEAN lockReleased = FALSE;
- ULONG isRemoved;
-
PAGED_CODE();
//
devInfo = &(initData->PdoData);
}
- isRemoved = ClassAcquireRemoveLock(DeviceObject, Irp);
+ ClassAcquireRemoveLock(DeviceObject, Irp);
DebugPrint((2, "ClassDispatchPnp (%p,%p): minor code %#x for %s %p\n",
DeviceObject, Irp,
case IRP_MN_REMOVE_DEVICE:
case IRP_MN_SURPRISE_REMOVAL: {
- PDEVICE_OBJECT lowerDeviceObject = commonExtension->LowerDeviceObject;
UCHAR removeType = irpStack->MinorFunction;
if (commonExtension->PagingPathCount != 0) {
if (NT_SUCCESS(status)) {
IoAdjustPagingPathCount(
- &commonExtension->PagingPathCount,
+ (PLONG)&commonExtension->PagingPathCount,
irpStack->Parameters.UsageNotification.InPath);
if (irpStack->Parameters.UsageNotification.InPath) {
case DeviceUsageTypeHibernation: {
IoAdjustPagingPathCount(
- &commonExtension->HibernationPathCount,
+ (PLONG)&commonExtension->HibernationPathCount,
irpStack->Parameters.UsageNotification.InPath
);
status = ClassForwardIrpSynchronous(commonExtension, Irp);
if (!NT_SUCCESS(status)) {
IoAdjustPagingPathCount(
- &commonExtension->HibernationPathCount,
+ (PLONG)&commonExtension->HibernationPathCount,
!irpStack->Parameters.UsageNotification.InPath
);
}
case DeviceUsageTypeDumpFile: {
IoAdjustPagingPathCount(
- &commonExtension->DumpPathCount,
+ (PLONG)&commonExtension->DumpPathCount,
irpStack->Parameters.UsageNotification.InPath
);
status = ClassForwardIrpSynchronous(commonExtension, Irp);
if (!NT_SUCCESS(status)) {
IoAdjustPagingPathCount(
- &commonExtension->DumpPathCount,
+ (PLONG)&commonExtension->DumpPathCount,
!irpStack->Parameters.UsageNotification.InPath
);
}
status = ClassGetDescriptor(
commonExtension->LowerDeviceObject,
&propertyId,
- &fdoExtension->AdapterDescriptor);
+ (PSTORAGE_DESCRIPTOR_HEADER *)&fdoExtension->AdapterDescriptor);
if(!NT_SUCCESS(status)) {
status = ClassGetDescriptor(
commonExtension->LowerDeviceObject,
&propertyId,
- &fdoExtension->DeviceDescriptor);
+ (PSTORAGE_DESCRIPTOR_HEADER *)&fdoExtension->DeviceDescriptor);
if(!NT_SUCCESS(status)) {
ClassAcquireRemoveLock(Fdo, irp);
IoSetCompletionRoutine(irp,
- (PIO_COMPLETION_ROUTINE)ClassAsynchronousCompletion,
+ ClassAsynchronousCompletion,
context,
TRUE,
TRUE,
DebugPrint((1, "ClassSendSrbSynchronous: Exception %lx "
"locking buffer\n", status));
- return status;
+ _SEH2_YIELD(return status);
} _SEH2_END;
}
)
{
PFUNCTIONAL_DEVICE_EXTENSION fdoExtension = Fdo->DeviceExtension;
- PCOMMON_DEVICE_EXTENSION commonExtension = Fdo->DeviceExtension;
PCLASS_PRIVATE_FDO_DATA fdoData = fdoExtension->PrivateFdoData;
PSENSE_DATA senseBuffer = Srb->SenseInfoBuffer;
// count for the physical device
//
- count = InterlockedIncrement(&fdoExtension->MediaChangeCount);
+ count = InterlockedIncrement((PLONG)&fdoExtension->MediaChangeCount);
DebugPrint((ClassDebugSenseInfo, "ClassInterpretSenseInfo: "
"Media change count for device %d incremented to %#lx\n",
fdoExtension->DeviceNumber, count));
ULONG totalSize;
ULONG senseBufferSize = 0;
IO_ERROR_LOG_PACKET staticErrLogEntry = {0};
- CLASS_ERROR_LOG_DATA staticErrLogData = {0};
+ CLASS_ERROR_LOG_DATA staticErrLogData = { { { 0 } } };
//
// Calculate the total size of the error log entry.
IN BOOLEAN Use6Byte
)
{
- PUCHAR limit;
+ PCHAR limit;
ULONG parameterHeaderLength;
PVOID result = NULL;
ClassSignalCompletion(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
- IN PKEVENT Event
+ IN PVOID Context
)
{
+ PKEVENT Event = Context;
+
KeSetEvent(Event, IO_NO_INCREMENT, FALSE);
return STATUS_MORE_PROCESSING_REQUIRED;
PCLASS_DRIVER_EXTENSION
driverExtension = IoGetDriverObjectExtension(Fdo->DriverObject,
CLASS_DRIVER_EXTENSION_KEY);
- NTSTATUS status;
PAGED_CODE();
// one.
//
- if(InterlockedIncrement(&(fdoExtension->EnumerationInterlock)) == 1) {
- status = driverExtension->InitData.ClassEnumerateDevice(Fdo);
+ if(InterlockedIncrement((PLONG)&fdoExtension->EnumerationInterlock) == 1) {
+ driverExtension->InitData.ClassEnumerateDevice(Fdo);
}
Irp->IoStatus.Information = (ULONG_PTR) NULL;
Fdo,
BusRelations,
(PDEVICE_RELATIONS*)&Irp->IoStatus.Information);
- InterlockedDecrement(&(fdoExtension->EnumerationInterlock));
+ InterlockedDecrement((PLONG)&fdoExtension->EnumerationInterlock);
return Irp->IoStatus.Status;
} // end ClassPnpQueryFdoRelations()
ASSERT_FDO(Fdo);
ASSERT(driverExtension->InitData.ClassEnumerateDevice != NULL);
- if(InterlockedIncrement(&(fdoExtension->EnumerationInterlock)) == 1) {
+ if(InterlockedIncrement((PLONG)&fdoExtension->EnumerationInterlock) == 1) {
status = driverExtension->InitData.ClassEnumerateDevice(Fdo);
}
- InterlockedDecrement(&(fdoExtension->EnumerationInterlock));
+ InterlockedDecrement((PLONG)&fdoExtension->EnumerationInterlock);
if(!NT_SUCCESS(status)) {
* to delete it ourselves.
*/
ClassAcquireChildLock(fdoExtension);
- while (child = ClassRemoveChild(fdoExtension, NULL, FALSE)){
+ while ((child = ClassRemoveChild(fdoExtension, NULL, FALSE))){
//
// Yank the pdo. This routine will unlink the device from the
IN ULONG InquiryDataLength
)
{
- PFUNCTIONAL_DEVICE_EXTENSION fdoExtension;
NTSTATUS status;
SCSI_ADDRESS scsiAddress;
OBJECT_ATTRIBUTES objectAttributes;
- PUCHAR buffer;
+ PSTR buffer;
STRING string;
UNICODE_STRING unicodeName;
UNICODE_STRING unicodeRegistryPath;
PAGED_CODE();
ASSERT(DeviceName);
- fdoExtension = Fdo->DeviceExtension;
buffer = NULL;
targetKey = NULL;
RtlZeroMemory(&unicodeName, sizeof(UNICODE_STRING));
RtlInitUnicodeString(&unicodeName, L"DeviceName");
- sprintf(buffer, "%s%d", DeviceName, DeviceNumber);
+ sprintf(buffer, "%s%lu", DeviceName, DeviceNumber);
RtlInitString(&string, buffer);
status = RtlAnsiStringToUnicodeString(&unicodeData,
&string,
NTAPI
ClasspRetryRequestDpc(
IN PKDPC Dpc,
- IN PDEVICE_OBJECT DeviceObject,
+ IN PVOID Context,
IN PVOID Arg1,
IN PVOID Arg2
)
{
+ PDEVICE_OBJECT deviceObject = Context;
PFUNCTIONAL_DEVICE_EXTENSION fdoExtension;
PCOMMON_DEVICE_EXTENSION commonExtension;
PCLASS_PRIVATE_FDO_DATA fdoData;
KIRQL irql;
- commonExtension = DeviceObject->DeviceExtension;
+ commonExtension = deviceObject->DeviceExtension;
ASSERT(commonExtension->IsFdo);
- fdoExtension = DeviceObject->DeviceExtension;
+ fdoExtension = deviceObject->DeviceExtension;
fdoData = fdoExtension->PrivateFdoData;