windows-nt/Source/XPSP1/NT/base/busdrv/mf/common.c
2020-09-26 16:20:57 +08:00

101 lines
2 KiB
C

/*++
Copyright (c) 1997-2000 Microsoft Corporation
Module Name:
common.c
Abstract:
This module provides the functions which are common to both the PDO and FDO.
Author:
Andy Thornton (andrewth) 20-Oct-97
Revision History:
--*/
#include "mfp.h"
/*++
The majority of functions in this file are called based on their presence
in Pnp and Po dispatch tables. In the interests of brevity the arguments
to all those functions will be described below:
NTSTATUS
MfXxxCommon(
IN PIRP Irp,
IN PMF_COMMON_EXTENSION Common,
IN PIO_STACK_LOCATION IrpStack
)
Routine Description:
This function handles the Xxx requests for all multifunction devices
Arguments:
Irp - Points to the IRP associated with this request.
Parent - Points to the common device extension.
IrpStack - Points to the current stack location for this request.
Return Value:
Status code that indicates whether or not the function was successful.
STATUS_NOT_SUPPORTED indicates that the IRP should be passed down without
changing the Irp->IoStatus.Status field otherwise it is updated with this
status.
--*/
NTSTATUS
MfDeviceUsageNotificationCommon(
IN PIRP Irp,
IN PMF_COMMON_EXTENSION Common,
IN PIO_STACK_LOCATION IrpStack
)
{
PULONG counter;
//
// Select the appropriate counter
//
switch (IrpStack->Parameters.UsageNotification.Type) {
case DeviceUsageTypePaging:
counter = &Common->PagingCount;
break;
case DeviceUsageTypeHibernation:
counter = &Common->HibernationCount;
break;
case DeviceUsageTypeDumpFile:
counter = &Common->DumpCount;
break;
default:
return STATUS_NOT_SUPPORTED;
}
//
// Update it...
//
IoAdjustPagingPathCount(counter,
IrpStack->Parameters.UsageNotification.InPath
);
return STATUS_SUCCESS;
}