/** * @file sys/volinfo.c * * @copyright 2015 Bill Zissimopoulos */ #include static NTSTATUS FspFsvolQueryVolumeInformation( PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); FSP_IOCMPL_DISPATCH FspFsvolQueryVolumeInformationComplete; static NTSTATUS FspFsvolSetVolumeInformation( PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); FSP_IOCMPL_DISPATCH FspFsvolSetVolumeInformationComplete; FSP_DRIVER_DISPATCH FspQueryVolumeInformation; FSP_DRIVER_DISPATCH FspSetVolumeInformation; #ifdef ALLOC_PRAGMA #pragma alloc_text(PAGE, FspFsvolQueryVolumeInformation) #pragma alloc_text(PAGE, FspFsvolQueryVolumeInformationComplete) #pragma alloc_text(PAGE, FspFsvolSetVolumeInformation) #pragma alloc_text(PAGE, FspFsvolSetVolumeInformationComplete) #pragma alloc_text(PAGE, FspQueryVolumeInformation) #pragma alloc_text(PAGE, FspSetVolumeInformation) #endif static NTSTATUS FspFsvolQueryVolumeInformation( PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp) { PAGED_CODE(); return STATUS_INVALID_DEVICE_REQUEST; } VOID FspFsvolQueryVolumeInformationComplete( PIRP Irp, const FSP_FSCTL_TRANSACT_RSP *Response) { FSP_ENTER_IOC(PAGED_CODE()); FSP_LEAVE_IOC("%s", ""); } static NTSTATUS FspFsvolSetVolumeInformation( PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp) { PAGED_CODE(); return STATUS_INVALID_DEVICE_REQUEST; } VOID FspFsvolSetVolumeInformationComplete( PIRP Irp, const FSP_FSCTL_TRANSACT_RSP *Response) { FSP_ENTER_IOC(PAGED_CODE()); FSP_LEAVE_IOC("%s", ""); } NTSTATUS FspQueryVolumeInformation( PDEVICE_OBJECT DeviceObject, PIRP Irp) { FSP_ENTER_MJ(PAGED_CODE()); switch (FspDeviceExtension(DeviceObject)->Kind) { case FspFsvolDeviceExtensionKind: FSP_RETURN(Result = FspFsvolQueryVolumeInformation(DeviceObject, Irp, IrpSp)); default: FSP_RETURN(Result = STATUS_INVALID_DEVICE_REQUEST); } FSP_LEAVE_MJ("%s", ""); } NTSTATUS FspSetVolumeInformation( PDEVICE_OBJECT DeviceObject, PIRP Irp) { FSP_ENTER_MJ(PAGED_CODE()); switch (FspDeviceExtension(DeviceObject)->Kind) { case FspFsvolDeviceExtensionKind: FSP_RETURN(Result = FspFsvolSetVolumeInformation(DeviceObject, Irp, IrpSp)); default: FSP_RETURN(Result = STATUS_INVALID_DEVICE_REQUEST); } FSP_LEAVE_MJ("%s", ""); }