/*++
/*****************************************************************************
* Copyright (c) 1990-97 Digi International Inc., All Rights Reserved
* 
* This software contains proprietary and confidential information of Digi
* International Inc.  By accepting transfer of this copy, Recipient agrees
* to retain this software in confidence, to prevent disclosure to others,
* and to make no use of this software other than that for which it was
* delivered.  This is an unpublished copyrighted work of Digi International
* Inc.  Except as permitted by federal law, 17 USC 117, copying is strictly
* prohibited.
* 
* Restricted Rights Legend
*
* Use, duplication, or disclosure by the Government is subject to
* restrictions set forth in sub-paragraph (c)(1)(ii) of The Rights in
* Technical Data and Computer Software clause at DFARS 252.227-7031 or
* subparagraphs (c)(1) and (2) of the Commercial Computer Software -
* Restricted Rights at 48 CFR 52.227-19, as applicable.
*
* Digi International Inc. 11001 Bren Road East, Minnetonka, MN 55343
*
******************************************************************************

Module Name:

   dispatch.c

Abstract:

   Dispatch routines for standard NT kernel driver APIs, such as IRP_MJ_CREATE.

Author:

   Michael Zarns

--*/

#include <ntddk.h>
#include "digilib.h"
#include "debug.h"


NTSTATUS
StressCreate(
	IN PDEVICE_OBJECT pDeviceObject, 
	IN PIRP pIrp )
/*++

Description:

	Called by IO manager when client calls CreateFile.

Parameters:

	pDeviceObject
		Device object being opened.

	pIrp
		Irp containing the create request.

Return Value:

	STATUS_SUCCESS

--*/
{
	DigiDump( DIGIFLOW, ( "Stress: Enter StressCreate\n"
								 "   pDeviceObject 0x%x\n"
								 "   pIrp 0x%x\n",
								 pDeviceObject, pIrp ) );

	pIrp->IoStatus.Information = 0;
	pIrp->IoStatus.Status = STATUS_SUCCESS;
	IoCompleteRequest( pIrp, IO_NO_INCREMENT );

	DigiDump( DIGIFLOW, ( "Stress: Leave StressCreate\n" ) );
	return( STATUS_SUCCESS );
}


NTSTATUS
StressClose(
	IN PDEVICE_OBJECT pDeviceObject, 
	IN PIRP pIrp )
/*++

Description:

	Called by IO manager when client calls CloseHandle.

Parameters:

	pDeviceObject
		Device object being closed.

	pIrp
		Irp containing the close request.

Return Value:

	STATUS_SUCCESS

--*/
{
	DigiDump( DIGIFLOW, ( "Stress: Enter StressClose\n"
								 "   pDeviceObject 0x%x\n"
								 "   pIrp 0x%x\n",
								 pDeviceObject, pIrp ) );

	pIrp->IoStatus.Information = 0;
	pIrp->IoStatus.Status = STATUS_SUCCESS;
	IoCompleteRequest( pIrp, IO_NO_INCREMENT );

	DigiDump( DIGIFLOW, ( "Stress: Leave StressClose\n" ) );
	return( STATUS_SUCCESS );
}


NTSTATUS
StressDeviceControl(
	IN PDEVICE_OBJECT pDeviceObject, 
	IN PIRP pIrp )
/*++

Description:

	Called by IO manager when client calls DeviceIoControl or IoCallDriver.

Parameters:

	pDeviceObject
		Device object on which the request is being made.

	pIrp
		Irp containing the request.

Return Value:

	STATUS_SUCCESS

--*/
{
	DigiDump( DIGIFLOW, ( "Stress: Enter StressDeviceControl\n"
								 "   pDeviceObject 0x%x\n"
								 "   pIrp 0x%x\n",
								 pDeviceObject, pIrp ) );

	pIrp->IoStatus.Information = 0;
	pIrp->IoStatus.Status = STATUS_SUCCESS;
	IoCompleteRequest( pIrp, IO_NO_INCREMENT );

	DigiDump( DIGIFLOW, ( "Stress: Leave StressDeviceControl\n" ) );
	return( STATUS_SUCCESS );
}
