2025-04-27 07:49:33 -04:00

273 lines
9.1 KiB
C

/********************************************************************/
/** Microsoft LAN Manager **/
/** Copyright (c) 1987-2001 Microsoft Corporation, All Rights Reserved **/
/********************************************************************/
/********************************************************************
* *
* About this file ... CHARDEV.H *
* *
* This file contains information about the NetCharDev *
* and NetHandle class APIs. *
* *
* Function prototypes. *
* *
* Data structure templates. *
* *
* Definition of special values. *
* *
* *
* NOTE: You must include NETCONS.H before this file, since this *
* file depends on values defined in NETCONS.H. *
* *
* This file is always included by LAN.H. *
* *
********************************************************************/
/****************************************************************
* *
* Character Device Class *
* *
****************************************************************/
#if (defined( INCL_NETCHARDEV ) || !defined( LAN_INCLUDED )) \
&& !defined( NETCHARDEV_INCLUDED )
#define NETCHARDEV_INCLUDED
/****************************************************************
* *
* Function prototypes - CHARDEV *
* *
****************************************************************/
extern API_FUNCTION
NetCharDevControl ( const char far * pszServer,
const char far * pszDevName,
short sOpCode );
extern API_FUNCTION
NetCharDevEnum ( const char far * pszServer,
short sLevel,
char far * pbBuffer,
unsigned short cbBuffer,
unsigned short far * pcEntriesRead,
unsigned short far * pcTotalAvail );
extern API_FUNCTION
NetCharDevGetInfo ( const char far * pszServer,
const char far * pszDevName,
short sLevel,
char far * pbBuffer,
unsigned short cbBuffer,
unsigned short far * pcbTotalAvail );
extern API_FUNCTION
NetCharDevQEnum ( const char far * pszServer,
const char far * pszUserName,
short sLevel,
char far * pbBuffer,
unsigned short cbBuffer,
unsigned short far * pcEntriesRead,
unsigned short far * pcTotalAvail );
extern API_FUNCTION
NetCharDevQGetInfo ( const char far * pszServer,
const char far * pszQueueName,
const char far * pszUserName,
short sLevel,
char far * pbBuffer,
unsigned short cbBuffer,
unsigned short far * pcbTotalAvail );
extern API_FUNCTION
NetCharDevQSetInfo ( const char far * pszServer,
const char far * pszQueueName,
short sLevel,
const char far * pbBuffer,
unsigned short cbBuffer,
short sParmNum );
extern API_FUNCTION
NetCharDevQPurge ( const char far * pszServer,
const char far * pszQueueName );
extern API_FUNCTION
NetCharDevQPurgeSelf ( const char far * pszServer,
const char far * pszQueueName,
const char far * pszComputerName );
/****************************************************************
* *
* Data structure templates - CHARDEV *
* *
****************************************************************/
struct chardev_info_0 {
char ch0_dev[DEVLEN+1]; /* device name */
}; /* chardev_info_0 */
struct chardev_info_1 {
char ch1_dev[DEVLEN+1]; /* device name */
char ch1_pad1; /* pad to a word boundary */
unsigned short ch1_status; /* status */
/* bit 0 reserved */
/* bit 1 on = opened */
/* bit 1 off = idle */
/* bit 2 on = error */
/* bit 2 off = no error */
char ch1_username[UNLEN+1]; /* name of device's current user */
char ch1_pad2; /* pad to a word boundary */
unsigned long ch1_time; /* time current user attached */
}; /* chardev_info_1 */
struct chardevQ_info_0 {
char cq0_dev[NNLEN+1]; /* queue name (network name) */
}; /* chardevQ_info_0 */
struct chardevQ_info_1 {
char cq1_dev[NNLEN+1]; /* queue name (network name) */
char cq1_pad; /* pad to a word boundary */
unsigned short cq1_priority; /* priority (1 - 9) */
char far * cq1_devs; /* names of devices assigned to queue */
unsigned short cq1_numusers; /* # of users waiting in queue */
unsigned short cq1_numahead; /* # of users in queue ahead of this */
/* user. -1 is returned if the */
/* user is not in the queue. */
}; /* chardevQ_info_1 */
/****************************************************************
* *
* Special values and constants - CHARDEV *
* *
****************************************************************/
/*
* Bits for chardev_info_1 field ch1_status.
*/
#define CHARDEV_STAT_OPENED 0x02
#define CHARDEV_STAT_ERROR 0x04
/*
* Opcodes for NetCharDevControl
*/
#define CHARDEV_CLOSE 0
/*
* Values for parmnum parameter to NetCharDevQSetInfo.
*/
#define CHARDEVQ_PRIORITY_PARMNUM 2
#define CHARDEVQ_DEVICES_PARMNUM 3
/*
* Minimum, maximum, and recommended default for priority.
*/
#define CHARDEVQ_MAX_PRIORITY 1
#define CHARDEVQ_MIN_PRIORITY 9
#define CHARDEVQ_DEF_PRIORITY 5
/*
* Value indicating no requests in the queue.
*/
#define CHARDEVQ_NO_REQUESTS -1
#endif /* NETCHARDEV_INCLUDED */
/****************************************************************
* *
* Handle Class *
* *
****************************************************************/
#if (defined( INCL_NETHANDLE ) || !defined( LAN_INCLUDED )) \
&& !defined( NETHANDLE_INCLUDED )
#define NETHANDLE_INCLUDED
/****************************************************************
* *
* Function prototypes - HANDLE *
* *
****************************************************************/
extern API_FUNCTION
NetHandleGetInfo ( unsigned short hHandle,
short sLevel,
char far * pbBuffer,
unsigned short cbBuffer,
unsigned short far * pcbTotalAvail );
extern API_FUNCTION
NetHandleSetInfo ( unsigned short hHandle,
short sLevel,
char far * pbBuffer,
unsigned short cbBuffer,
unsigned short sParmNum );
/****************************************************************
* *
* Data structure templates - HANDLE *
* *
****************************************************************/
struct handle_info_1 {
unsigned long hdli1_chartime; /* time in msec to wait before send */
unsigned short hdli1_charcount; /* max size of send buffer */
}; /* handle_info_1 */
struct handle_info_2 {
char far * hdli2_username; /* owner of name-pipe handle */
}; /* handle_info_2 */
struct handle_info_3 {
char far * hdli3_username; /* User name attached to pipe */
char far * hdli3_computername; /* Computername of user */
unsigned short hdli3_priv; /* Privilege for user */
unsigned long hdli3_authflags; /* Operator rights for user */
char far * hdli3_reserved; /* reserved */
}; /* handle_info_3 */
/****************************************************************
* *
* Special values and constants - HANDLE *
* *
****************************************************************/
/*
* Handle Get Info Levels
*/
#define HANDLE_INFO_LEVEL_1 1
#define HANDLE_INFO_LEVEL_2 2
#define HANDLE_INFO_LEVEL_3 3
/*
* Handle Set Info parm numbers
*/
#define HANDLE_SET_CHAR_TIME 1
#define HANDLE_SET_CHAR_COUNT 2
#endif /* NETHANDLE_INCLUDED */