/*++
*******************************************************************************
* 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:

   sohioctl.h

Abstract:

   This module contains definitions, typedefs and prototypes for exported
   sohioctl routines.

Author:

   Ron Gredvig

Revision History:

   $History: sohioctl.h $
 * 
 * *****************  Version 2  *****************
 * User: Ron          Date: 10/09/97   Time: 9:55a
 * Updated in $/Components/Windows/NT/Sync/Build/DigiSoh/Src
 * Periodic check-in to Prepare for Sandy. Functional with external
 * loopback on 570.
 * 
 * *****************  Version 1  *****************
 * User: Ron          Date: 3/27/97    Time: 5:04p
 * Created in $/Components/Windows/NT/Sync/Build/DigiSoh/Src
 * Initial check in of DigiSOH (STREAMS On Host) driver components.

--*/

#ifndef _SOHIOCTL_H
#define _SOHIOCTL_H

///////////////////////////////////////////////////////////////////////////////
//
// Exported Routine Prototypes
//

NTSTATUS
SohDsOpen( IN PDEVICE_OBJECT,
		   IN PIRP );

NTSTATUS
SohDsClose( IN PDEVICE_OBJECT,
			IN PIRP );

NTSTATUS
SohDsIoctl( IN PDEVICE_OBJECT,
			IN PIRP );

NTSTATUS
SohDsPush( IN PDEVICE_OBJECT,
		   IN PIRP );

NTSTATUS
SohDsLink( IN PDEVICE_OBJECT,
		   IN PIRP );

NTSTATUS
SohDsPutmsg( IN PDEVICE_OBJECT,
			 IN PIRP );

NTSTATUS
SohDsGetmsg( IN PDEVICE_OBJECT,
			 IN PIRP );

NTSTATUS
SohDsPurge( IN PDEVICE_OBJECT,
			IN PIRP );

NTSTATUS
SohKmeRead( IN PDEVICE_OBJECT,
			IN PIRP );

NTSTATUS
SohKmeWrite( IN PDEVICE_OBJECT,
			 IN PIRP );

NTSTATUS
SohQueueMsg( IN PIRP pIrp,
			 IN PKSPIN_LOCK pSpinLock,
			 IN PLIST_ENTRY pListHead,
			 IN PDRIVER_CANCEL pCancelRoutine );

PIRP
SohDequeueMsg( IN PKSPIN_LOCK pSpinLock,
			   IN PLIST_ENTRY pListHead );

VOID
SohRequeueMsg( IN PIRP pIrp, 
				IN PKSPIN_LOCK pSpinLock, 
				IN PLIST_ENTRY pListHead, 
				IN PDRIVER_CANCEL pCancelRoutine );

VOID
SohCancelPutGetMsg( IN PDEVICE_OBJECT pDeviceObj,
					IN PIRP pIrp );


#endif // _SOHIOCTL_H

