262 lines
5.1 KiB
C
262 lines
5.1 KiB
C
|
/*++
|
|||
|
|
|||
|
Copyright (c) 1991 Microsoft Corporation
|
|||
|
|
|||
|
Module Name:
|
|||
|
|
|||
|
fileinfo.c
|
|||
|
|
|||
|
Abstract:
|
|||
|
|
|||
|
This module implements the NtQueryInformationFile and
|
|||
|
NtQueryVolumeInformationFile API's for the NT datagram receiver (bowser).
|
|||
|
|
|||
|
|
|||
|
Author:
|
|||
|
|
|||
|
Larry Osterman (larryo) 6-May-1991
|
|||
|
|
|||
|
Revision History:
|
|||
|
|
|||
|
6-May-1991 larryo
|
|||
|
|
|||
|
Created
|
|||
|
|
|||
|
--*/
|
|||
|
|
|||
|
#include "precomp.h"
|
|||
|
#pragma hdrstop
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
BowserCommonQueryVolumeInformationFile (
|
|||
|
IN BOOLEAN Wait,
|
|||
|
IN PBOWSER_FS_DEVICE_OBJECT DeviceObject,
|
|||
|
IN PIRP Irp
|
|||
|
);
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
BowserCommonQueryInformationFile (
|
|||
|
IN BOOLEAN Wait,
|
|||
|
IN PBOWSER_FS_DEVICE_OBJECT DeviceObject,
|
|||
|
IN PIRP Irp
|
|||
|
);
|
|||
|
|
|||
|
#ifdef ALLOC_PRAGMA
|
|||
|
#pragma alloc_text(PAGE, BowserFspQueryVolumeInformationFile)
|
|||
|
#pragma alloc_text(PAGE, BowserFsdQueryVolumeInformationFile)
|
|||
|
#pragma alloc_text(PAGE, BowserCommonQueryVolumeInformationFile)
|
|||
|
#pragma alloc_text(PAGE, BowserFspQueryInformationFile)
|
|||
|
#pragma alloc_text(PAGE, BowserFsdQueryInformationFile)
|
|||
|
#pragma alloc_text(PAGE, BowserCommonQueryInformationFile)
|
|||
|
#endif
|
|||
|
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
BowserFspQueryVolumeInformationFile (
|
|||
|
IN PBOWSER_FS_DEVICE_OBJECT DeviceObject,
|
|||
|
IN PIRP Irp
|
|||
|
)
|
|||
|
/*++
|
|||
|
|
|||
|
Routine Description:
|
|||
|
|
|||
|
This routine is called when the last handle to the NT Bowser device
|
|||
|
driver is closed.
|
|||
|
|
|||
|
Arguments:
|
|||
|
|
|||
|
IN PDEVICE_OBJECT DeviceObject - Supplies a device object for the request.
|
|||
|
IN PIRP Irp - Supplies an IRP for the create request.
|
|||
|
|
|||
|
Return Value:
|
|||
|
|
|||
|
NTSTATUS - Final Status of operation
|
|||
|
|
|||
|
--*/
|
|||
|
{
|
|||
|
NTSTATUS Status;
|
|||
|
PAGED_CODE();
|
|||
|
Status = BowserCommonQueryVolumeInformationFile (TRUE,
|
|||
|
DeviceObject,
|
|||
|
Irp);
|
|||
|
return Status;
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
BowserFsdQueryVolumeInformationFile (
|
|||
|
IN PBOWSER_FS_DEVICE_OBJECT DeviceObject,
|
|||
|
IN PIRP Irp
|
|||
|
)
|
|||
|
/*++
|
|||
|
|
|||
|
Routine Description:
|
|||
|
|
|||
|
This routine is called when the last handle to the NT Bowser device
|
|||
|
driver is closed.
|
|||
|
|
|||
|
Arguments:
|
|||
|
|
|||
|
IN PDEVICE_OBJECT DeviceObject - Supplies a device object for the request.
|
|||
|
IN PIRP Irp - Supplies an IRP for the create request.
|
|||
|
|
|||
|
Return Value:
|
|||
|
|
|||
|
NTSTATUS - Final Status of operation
|
|||
|
|
|||
|
--*/
|
|||
|
{
|
|||
|
NTSTATUS Status;
|
|||
|
|
|||
|
PAGED_CODE();
|
|||
|
Status = BowserCommonQueryVolumeInformationFile (IoIsOperationSynchronous(Irp),
|
|||
|
DeviceObject,
|
|||
|
Irp);
|
|||
|
return Status;
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
BowserCommonQueryVolumeInformationFile (
|
|||
|
IN BOOLEAN Wait,
|
|||
|
IN PBOWSER_FS_DEVICE_OBJECT DeviceObject,
|
|||
|
IN PIRP Irp
|
|||
|
)
|
|||
|
/*++
|
|||
|
|
|||
|
Routine Description:
|
|||
|
|
|||
|
This routine is called when the last handle to the NT Bowser device
|
|||
|
driver is closed.
|
|||
|
|
|||
|
Arguments:
|
|||
|
|
|||
|
IN PDEVICE_OBJECT DeviceObject - Supplies a device object for the request.
|
|||
|
IN PIRP Irp - Supplies an IRP for the create request.
|
|||
|
|
|||
|
Return Value:
|
|||
|
|
|||
|
NTSTATUS - Final Status of operation
|
|||
|
|
|||
|
--*/
|
|||
|
{
|
|||
|
NTSTATUS Status = STATUS_SUCCESS;
|
|||
|
|
|||
|
PAGED_CODE();
|
|||
|
BowserCompleteRequest(Irp, Status);
|
|||
|
|
|||
|
return Status;
|
|||
|
|
|||
|
DBG_UNREFERENCED_PARAMETER(Wait);
|
|||
|
UNREFERENCED_PARAMETER(DeviceObject);
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
BowserFspQueryInformationFile (
|
|||
|
IN PBOWSER_FS_DEVICE_OBJECT DeviceObject,
|
|||
|
IN PIRP Irp
|
|||
|
)
|
|||
|
/*++
|
|||
|
|
|||
|
Routine Description:
|
|||
|
|
|||
|
This routine is called when the last handle to the NT Bowser device
|
|||
|
driver is closed.
|
|||
|
|
|||
|
Arguments:
|
|||
|
|
|||
|
IN PDEVICE_OBJECT DeviceObject - Supplies a device object for the request.
|
|||
|
IN PIRP Irp - Supplies an IRP for the create request.
|
|||
|
|
|||
|
Return Value:
|
|||
|
|
|||
|
NTSTATUS - Final Status of operation
|
|||
|
|
|||
|
--*/
|
|||
|
{
|
|||
|
NTSTATUS Status;
|
|||
|
|
|||
|
PAGED_CODE();
|
|||
|
Status = BowserCommonQueryInformationFile (TRUE,
|
|||
|
DeviceObject,
|
|||
|
Irp);
|
|||
|
return Status;
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
BowserFsdQueryInformationFile (
|
|||
|
IN PBOWSER_FS_DEVICE_OBJECT DeviceObject,
|
|||
|
IN PIRP Irp
|
|||
|
)
|
|||
|
/*++
|
|||
|
|
|||
|
Routine Description:
|
|||
|
|
|||
|
This routine is called when the last handle to the NT Bowser device
|
|||
|
driver is closed.
|
|||
|
|
|||
|
Arguments:
|
|||
|
|
|||
|
IN PDEVICE_OBJECT DeviceObject - Supplies a device object for the request.
|
|||
|
IN PIRP Irp - Supplies an IRP for the create request.
|
|||
|
|
|||
|
Return Value:
|
|||
|
|
|||
|
NTSTATUS - Final Status of operation
|
|||
|
|
|||
|
--*/
|
|||
|
{
|
|||
|
NTSTATUS Status;
|
|||
|
|
|||
|
PAGED_CODE();
|
|||
|
Status = BowserCommonQueryInformationFile(IoIsOperationSynchronous(Irp),
|
|||
|
DeviceObject,
|
|||
|
Irp);
|
|||
|
return Status;
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
BowserCommonQueryInformationFile (
|
|||
|
IN BOOLEAN Wait,
|
|||
|
IN PBOWSER_FS_DEVICE_OBJECT DeviceObject,
|
|||
|
IN PIRP Irp
|
|||
|
)
|
|||
|
/*++
|
|||
|
|
|||
|
Routine Description:
|
|||
|
|
|||
|
This routine is called when the last handle to the NT Bowser device
|
|||
|
driver is closed.
|
|||
|
|
|||
|
Arguments:
|
|||
|
|
|||
|
IN PDEVICE_OBJECT DeviceObject - Supplies a device object for the request.
|
|||
|
IN PIRP Irp - Supplies an IRP for the create request.
|
|||
|
|
|||
|
Return Value:
|
|||
|
|
|||
|
NTSTATUS - Final Status of operation
|
|||
|
|
|||
|
--*/
|
|||
|
{
|
|||
|
//
|
|||
|
// Return an error until we figure out valid information to return.
|
|||
|
NTSTATUS Status = STATUS_NOT_IMPLEMENTED;
|
|||
|
|
|||
|
PAGED_CODE();
|
|||
|
|
|||
|
BowserCompleteRequest(Irp, Status);
|
|||
|
|
|||
|
return Status;
|
|||
|
|
|||
|
DBG_UNREFERENCED_PARAMETER(Wait);
|
|||
|
|
|||
|
UNREFERENCED_PARAMETER(DeviceObject);
|
|||
|
|
|||
|
}
|