This commit is contained in:
Bill Zissimopoulos 2015-11-29 15:40:34 -08:00
parent 97924ea65e
commit 7bd979a3fd
4 changed files with 17 additions and 8 deletions

View File

@ -12,6 +12,7 @@ VOID FspDeviceDeleteList(
PDEVICE_OBJECT *DeviceObjects, ULONG DeviceObjectCount);
NTSTATUS FspDeviceOwned(
PDRIVER_OBJECT DriverObject, PDEVICE_OBJECT DeviceObject);
VOID FspDeviceInitExtension(PDEVICE_OBJECT DeviceObject, UINT8 Kind);
static VOID FspFsctlDeviceDeleteObject(PDEVICE_OBJECT DeviceObject);
static VOID FspFsvrtDeviceDeleteObject(PDEVICE_OBJECT DeviceObject);
static VOID FspFsvolDeviceDeleteObject(PDEVICE_OBJECT DeviceObject);
@ -22,6 +23,7 @@ VOID FspDeviceDeleteObjects(PDRIVER_OBJECT DriverObject);
#pragma alloc_text(PAGE, FspDeviceCreateList)
#pragma alloc_text(PAGE, FspDeviceDeleteList)
#pragma alloc_text(PAGE, FspDeviceOwned)
#pragma alloc_text(PAGE, FspDeviceInitExtension)
#pragma alloc_text(PAGE, FspFsctlDeviceDeleteObject)
#pragma alloc_text(PAGE, FspFsvrtDeviceDeleteObject)
#pragma alloc_text(PAGE, FspFsvolDeviceDeleteObject)
@ -91,6 +93,16 @@ NTSTATUS FspDeviceOwned(
return Result;
}
VOID FspDeviceInitExtension(PDEVICE_OBJECT DeviceObject, UINT8 Kind)
{
PAGED_CODE();
FSP_DEVICE_EXTENSION *DeviceExtension = FspDeviceExtension(DeviceObject);
DeviceExtension->Kind = Kind;
ExInitializeResourceLite(&DeviceExtension->Resource);
}
static VOID FspFsctlDeviceDeleteObject(PDEVICE_OBJECT DeviceObject)
{
PAGED_CODE();

View File

@ -39,10 +39,8 @@ NTSTATUS DriverEntry(
&FspFsctlNetDeviceObject);
if (!NT_SUCCESS(Result))
FSP_RETURN(IoDeleteDevice(FspFsctlDiskDeviceObject));
FspDeviceExtension(FspFsctlDiskDeviceObject)->Kind = FspFsctlDeviceExtensionKind;
ExInitializeResourceLite(&FspDeviceExtension(FspFsctlDiskDeviceObject)->Resource);
FspDeviceExtension(FspFsctlNetDeviceObject)->Kind = FspFsctlDeviceExtensionKind;
ExInitializeResourceLite(&FspDeviceExtension(FspFsctlNetDeviceObject)->Resource);
FspDeviceInitExtension(FspFsctlDiskDeviceObject, FspFsctlDeviceExtensionKind);
FspDeviceInitExtension(FspFsctlNetDeviceObject, FspFsctlDeviceExtensionKind);
/* setup the driver object */
DriverObject->DriverUnload = FspUnload;

View File

@ -294,6 +294,7 @@ VOID FspDeviceDeleteList(
PDEVICE_OBJECT *DeviceObjects, ULONG DeviceObjectCount);
NTSTATUS FspDeviceOwned(
PDRIVER_OBJECT DriverObject, PDEVICE_OBJECT DeviceObject);
VOID FspDeviceInitExtension(PDEVICE_OBJECT DeviceObject, UINT8 Kind);
VOID FspDeviceDeleteObject(PDEVICE_OBJECT DeviceObject);
VOID FspDeviceDeleteObjects(PDRIVER_OBJECT DriverObject);

View File

@ -101,9 +101,8 @@ static NTSTATUS FspFsctlCreateVolume(
&FsvrtDeviceObject);
if (NT_SUCCESS(Result))
{
FspDeviceInitExtension(FsvrtDeviceObject, FspFsvrtDeviceExtensionKind);
FSP_FSVRT_DEVICE_EXTENSION *FsvrtDeviceExtension = FspFsvrtDeviceExtension(FsvrtDeviceObject);
FsvrtDeviceExtension->Base.Kind = FspFsvrtDeviceExtensionKind;
ExInitializeResourceLite(&FsvrtDeviceExtension->Base.Resource);
FsvrtDeviceExtension->FsctlDeviceObject = DeviceObject;
FsvrtDeviceExtension->VolumeParams = *Params;
FspIoqInitialize(&FsvrtDeviceExtension->Ioq);
@ -161,9 +160,8 @@ static NTSTATUS FspFsctlMountVolume(
#pragma prefast(suppress:28175, "We are a filesystem: ok to access SectorSize")
FsvolDeviceObject->SectorSize =
FspFsvrtDeviceExtension(FsvrtDeviceObject)->VolumeParams.SectorSize;
FspDeviceInitExtension(FsvolDeviceObject, FspFsvolDeviceExtensionKind);
FSP_FSVOL_DEVICE_EXTENSION *FsvolDeviceExtension = FspFsvolDeviceExtension(FsvolDeviceObject);
FsvolDeviceExtension->Base.Kind = FspFsvolDeviceExtensionKind;
ExInitializeResourceLite(&FsvolDeviceExtension->Base.Resource);
FsvolDeviceExtension->FsvrtDeviceObject = FsvrtDeviceObject;
ClearFlag(FsvolDeviceObject->Flags, DO_DEVICE_INITIALIZING);
Vpb->DeviceObject = FsvolDeviceObject;