Jim Norman 30913d4867 Bug 280562 - Client interoperability problem with miCasa and ZEN agent.
Update to latest nwlogin.h and use correct params.
2007-06-08 04:32:58 +00:00

956 lines
33 KiB
C

/****************************************************************************
Source module name: nwlogin.h
Release %version: 112 %
Copyright (c) 1989-1999 Novell, Inc. All Rights Reserved.
U.S. Patent Number 5,781,724 -- Novell, Inc.
THIS WORK IS SUBJECT TO U.S. AND INTERNATIONAL COPYRIGHT LAWS AND
TREATIES. NO PART OF THIS WORK MAY BE USED, PRACTICED, PERFORMED
COPIED, DISTRIBUTED, REVISED, MODIFIED, TRANSLATED, ABRIDGED, CONDENSED,
EXPANDED, COLLECTED, COMPILED, LINKED, RECAST, TRANSFORMED OR ADAPTED
WITHOUT THE PRIOR WRITTEN CONSENT OF NOVELL, INC. ANY USE OR EXPLOITATION
OF THIS WORK WITHOUT AUTHORIZATION COULD SUBJECT THE PERPETRATOR TO
CRIMINAL AND CIVIL LIABILITY.$
****************************************************************************/
/****************************************************************************
2-6-98 KPW remove PRE_NETWARE_LOGIN event - never used and don't plan to
2-18-98 KPW added NWLG_RESTART_PRIMARY_LOGIN restartMode
****************************************************************************/
#ifndef NWLOGIN_H
#define NWLOGIN_H
#ifndef NTYPES_H
#include <ntypes.h>
#endif
// MSVC 4.x MSVC 1.52 4.x BC4.x BC5.x
#if !defined (_WINDOWS_) && !defined(_INC_WINDOWS) && !defined(__WINDOWS_H)
// take care of a compile error for modules that do not need windows.h
// but do include nwlogin.h
typedef nuint HWND;
#if defined(_WIN64)
typedef __int64 INT_PTR;
#else
typedef _W64 int INT_PTR;
#endif
#endif
#ifndef NWCALDEF_H
#include <nwcaldef.h>
#endif
#ifndef __NWDSDEFS_H
#include <nwdsdefs.h>
#endif
// #if defined (N_ARCH_32)
#if ! defined ( NWAPIDEF_H )
#include <nwapidef.h>
#endif
// #endif
#ifndef _NWDSDC_HEADER_
#include <nwdsdc.h>
#endif
#ifdef __cplusplus
extern "C" {
#endif
/*
Event constants
Command Line parsing events
*/
#define NWLG_CMD_LINE_PARSING_EVENTS \
NWLG_EVENT(INITIALIZE,0) \
NWLG_EVENT(CMD_LINE_SERVICE,1) \
NWLG_EVENT(CMD_LINE_USER,2) \
NWLG_EVENT(CMD_LINE_NS,3) \
NWLG_EVENT(PRESCRIPT_CLS,4) \
NWLG_EVENT(CMD_LINE_SCRIPT_FILE,5) \
NWLG_EVENT(CMD_LINE_PROFILE,51) \
NWLG_EVENT(CMD_LINE_FLAGS,52) \
NWLG_EVENT(CMD_LINE_ARGS,53) \
NWLG_EVENT(CMD_LINE_BIND_LOGIN,6) \
NWLG_EVENT(CMD_LINE_TREE,7) \
NWLG_EVENT(RESOLVE_USER_NAME,8) \
NWLG_EVENT(NO_BANNER,9) \
NWLG_EVENT(CMD_LINE_ARG_DONE,10) \
NWLG_EVENT(CMD_LINE_HELP,11)
/*
Script related events
*/
#define NWLG_SCRIPT_EVENTS \
NWLG_EVENT(PRE_SCRIPTS,12) \
NWLG_EVENT(OPEN_SCRIPT,13) \
NWLG_EVENT(GET_SCRIPT_LINE,14) \
NWLG_EVENT(SCRIPT_BREAK,15) \
NWLG_EVENT(REWIND_SCRIPT,16) \
NWLG_EVENT(BIND_ATTACH,17) \
NWLG_EVENT(TERMINATE,18) \
NWLG_EVENT(CLEAR_SCREEN,19) \
NWLG_EVENT(DOS_COMSPEC,20) \
NWLG_EVENT(DS_CONTEXT,21) \
NWLG_EVENT(DISP_FILE,22) \
NWLG_EVENT(DOS_BREAK,23) \
NWLG_EVENT(DOS_VERIFY,24) \
NWLG_EVENT(DRIVE,25) \
NWLG_EVENT(EXIT,26) \
NWLG_EVENT(EXEC,27) \
NWLG_EVENT(FIRE_PHASERS,28) \
NWLG_EVENT(DISP_LTIME,29) \
NWLG_EVENT(MACHINE,30) \
NWLG_EVENT(MEMBER_OF,31) \
NWLG_EVENT(NO_DEFAULT,32) \
NWLG_EVENT(TERM_CMD,33) \
NWLG_EVENT(PAUSE,34) \
NWLG_EVENT(DOS_PC_COMPAT,35) \
NWLG_EVENT(PROFILE,36) \
NWLG_EVENT(NOTHING,37) \
NWLG_EVENT(BIND_SCRIPT_SERVER,38) \
NWLG_EVENT(SET_ENV_VAR,39) \
NWLG_EVENT(SYNC_TIME_FLAG,40) \
NWLG_EVENT(DOS_SWAP_PATH,41) \
NWLG_EVENT(DISP_LINE,42) \
NWLG_EVENT(INCLUDE,43) \
NWLG_EVENT(TREE_ATTACH,44) \
NWLG_EVENT(SWAP_CMD,45) \
NWLG_EVENT(NO_SWAP_CMD,46) \
NWLG_EVENT(CHDIR,47) \
NWLG_EVENT(LOGOUT_ALL,48) \
NWLG_EVENT(LOGOUT_ONE,49) \
NWLG_EVENT(CONTINUE,50) \
NWLG_EVENT(RUN_SCRIPT,60) \
NWLG_EVENT(POST_SCRIPTS,61) \
NWLG_EVENT(DISP_BANNER,62) \
NWLG_EVENT(PWD_EXP_CHK,63) \
NWLG_EVENT(PWD_EXP_CHK_STAT,64) \
NWLG_EVENT(PWD_EXP_UPD,65)
/*
Connection Events
*/
#define NWLG_CONN_EVENTS \
NWLG_EVENT(CONN_GET,90) \
NWLG_EVENT(CONN_AUTH,91) \
NWLG_EVENT(CONN_EXPIRED,92) \
NWLG_EVENT(SYNC_PWD_START,93) \
NWLG_EVENT(SYNC_PWD_END,94) \
NWLG_EVENT(SYNC_LIST_BLD,95) \
NWLG_EVENT(SYNC_LIST_UPD,96) \
NWLG_EVENT(SYNC_LIST_FREE,97) \
NWLG_EVENT(PRE_LOGIN,98)
/* Internal SYSTEM type message */
#define NWLG_SYSTEM_EVENTS \
NWLG_EVENT(SYSTEM,100) \
NWLG_EVENT(NETWARE_LOGIN,101) \
NWLG_EVENT(START_LOGIN,102) \
NWLG_EVENT(ELSE,190) \
NWLG_EVENT(END,191) \
NWLG_EVENT(GOTO,192) \
NWLG_EVENT(IF,193) \
NWLG_EVENT(IFDO,194) \
NWLG_EVENT(LABEL,195) \
NWLG_EVENT(MAP,196) \
NWLG_EVENT(SHIFT,197)
/*
Map events
*/
/* Individual map events */
#define NWLG_MAP_EVENTS \
NWLG_EVENT(MAP_ADD,200) \
NWLG_EVENT(MAP_DEL,201) \
NWLG_EVENT(MAP_CHANGE,202) \
NWLG_EVENT(MAP_MOVE,203) \
NWLG_EVENT(MAP_DISP,204) \
NWLG_EVENT(MAP_MSG,205) \
NWLG_EVENT(MAP_ERR,206)
/* detail map events from parser
summary events below are passed to event handler
*/
#define NWLG_MAP_DETAIL_EVENTS \
NWLG_EVENT(MAP_ADD_DRV,210) \
NWLG_EVENT(MAP_ADD_DRV_TO_SDRV,211) \
NWLG_EVENT(MAP_ADD_SRCH,212) \
NWLG_EVENT(MAP_ADD_SRCH_TO_SDRV,213) \
NWLG_EVENT(MAP_CHG_DRV_TO_SDRV,214) \
NWLG_EVENT(MAP_CHG_INS_DRV_TO_SDRV,215) \
NWLG_EVENT(MAP_CHG_SRCH,216) \
NWLG_EVENT(MAP_DEL_DRV,217) \
NWLG_EVENT(MAP_DEL_SRCH,218) \
NWLG_EVENT(MAP_DISP_ALL_DRVS,219) \
NWLG_EVENT(MAP_DISP_DRV,220) \
NWLG_EVENT(MAP_DISP_OFF,221) \
NWLG_EVENT(MAP_DISP_ON,222) \
NWLG_EVENT(MAP_DISP_SRCH,223) \
NWLG_EVENT(MAP_ERRORS_OFF,224) \
NWLG_EVENT(MAP_ERRORS_ON,225) \
NWLG_EVENT(MAP_INS_SRCH,226) \
NWLG_EVENT(MAP_INS_SRCH_TO_SDRV,227) \
NWLG_EVENT(MAP_NEXT_DRV,228)
/*
event types for extended script commands and to introduce some new hooks
used by Mobile
*/
#define NWLG_SCRIPT_EX_EVENTS \
NWLG_EVENT(CAPTURE_PRINTER,301) \
NWLG_EVENT(DCACHE_ADD,302) \
NWLG_EVENT(DCACHE_FIND,303) \
NWLG_EVENT(DO_GOTO,305) \
NWLG_EVENT(AVAILABLE_DRIVE,309) \
NWLG_EVENT(NOTIFY_PARENT_WINDOW,310) \
NWLG_EVENT(PARSE_SCRIPT_LINE,311) \
NWLG_EVENT(NOTIFY_LOGIN_NAMES,312) \
NWLG_EVENT(GET_LOCATION_NAME,314) \
NWLG_EVENT(GET_FIRST_NETWORK_DRIVE,315)
/*
Event types for communication between extensions and default UI.
*/
#define NWLG_EXT_UI_EVENTS \
NWLG_EVENT(UI_DATA_CHANGED,400) \
NWLG_EVENT(UI_DC_USERNAME,0x0101) \
NWLG_EVENT(UI_DC_TREE_LOGIN,0x0201) \
NWLG_EVENT(UI_DC_TREE,0x0202) \
NWLG_EVENT(UI_DC_SERVER,0x0203) \
NWLG_EVENT(UI_DC_BINDERY_CONN,0x0204) \
NWLG_EVENT(UI_DC_CONTEXT,0x0205) \
NWLG_EVENT(UI_DC_CLEAR_CONNS,0x0206) \
NWLG_EVENT(UI_DC_RUN_SCRIPTS,0x0301) \
NWLG_EVENT(UI_DC_DISPLAY_RESULTS,0x0302) \
NWLG_EVENT(UI_DC_AUTO_CLOSE,0x0303) \
NWLG_EVENT(UI_DC_LOGIN_SCRIPT,0x0304) \
NWLG_EVENT(UI_DC_PROFILE_SCRIPT,0x0305) \
NWLG_EVENT(UI_DC_VAR,0x0400) \
NWLG_EVENT(FORGOTTEN_PWD_CLICK,0x0500) \
NWLG_EVENT(DHCP_CHECK, 0x0501) \
NWLG_EVENT(UI_DC_MOBILE_PROFILE,0x4101) \
NWLG_EVENT(UI_DC_CONNECT_OFFLINE,0x4102) \
NWLG_EVENT(UI_DC_DEBUG_MODE,0x4301) \
NWLG_EVENT(UI_DC_VERBOSE_MODE,0x4302)
#define NWLG_MISC_EVENTS \
NWLG_EVENT(UNKNOWN,999)
#define NWLG_EVENT_LIST \
NWLG_CMD_LINE_PARSING_EVENTS \
NWLG_SCRIPT_EVENTS \
NWLG_CONN_EVENTS \
NWLG_SYSTEM_EVENTS \
NWLG_MAP_EVENTS \
NWLG_MAP_DETAIL_EVENTS \
NWLG_SCRIPT_EX_EVENTS \
NWLG_EXT_UI_EVENTS \
NWLG_MISC_EVENTS \
#undef NWLG_EVENT
#define NWLG_EVENT(name,number) \
NWLG_##name=number,
typedef enum { NWLG_EVENT_LIST } NWLG_Event_t ;
/*
END OF Event constants
*/
/*
NWLogin Shared Data identifier tags
*/
#define NWLG_SD_SERVER 1
#define NWLG_SD_USER 2
#define NWLG_SD_NS 3
#define NWLG_SD_CLS 4
#define NWLG_SD_SCRIPT_FILE 5
#define NWLG_SD_BIND_LOGIN 6
#define NWLG_SD_TREE_NAME 7
#define NWLG_SD_SWAP_FLAG 8
#define NWLG_SD_SWAP_PATH 9
#define NWLG_SD_NB 10
#define NWLG_SD_ACCESS_SERVER 11
#define NWLG_SD_AM_PM 12
#define NWLG_SD_DAY 13
#define NWLG_SD_DAY_OF_WEEK 14
#define NWLG_SD_ENVAR 15
#define NWLG_SD_FILE_SERVER 16
#define NWLG_SD_FULL_NAME 17
#define NWLG_SD_GREETING_TIME 18
#define NWLG_SD_HOUR 19
#define NWLG_SD_HOUR24 20
#define NWLG_SD_LAST_NAME 21
#define NWLG_SD_LOGIN_NAME 22
#define NWLG_SD_LOGIN_CONTEXT 23
#define NWLG_SD_MACHINE 24
#define NWLG_SD_MINUTE 25
#define NWLG_SD_MONTH 26
#define NWLG_SD_MONTH_NAME 27
#define NWLG_SD_NDAY_OF_YEAR 28
#define NWLG_SD_NET_ADDRESS 29
#define NWLG_SD_MAIL_STATUS 30
#define NWLG_SD_PASSWORD_EXPIRES 31
#define NWLG_SD_OS_VERSION 32
#define NWLG_SD_OS_NAME 33
#define NWLG_SD_REQ_VERSION 34
#define NWLG_SD_REQ_CONTEXT 35
#define NWLG_SD_SECOND 36
#define NWLG_SD_SHORT_YEAR 37
#define NWLG_SD_SHELL_VERSION 38
#define NWLG_SD_SHORT_MACHINE 39
#define NWLG_SD_STATION 40
#define NWLG_SD_USER_OBJ 41
#define NWLG_SD_YEAR 42
#define NWLG_SD_CL_USER 43
#define NWLG_SD_CL_SERVER 44
#define NWLG_SD_PROFILE 45
#define NWLG_SD_PASSWORD 46
#define NWLG_SD_LOADPATH 47
#define NWLG_SD_CMD_LINE_FLAGS 48
#define NWLG_SD_CMD_LINE_ARG 49
#define NWLG_SD_CONTEXT_HND 50
#define NWLG_SD_PC_COMPATIBLE 51
#define NWLG_SD_PRI_CONN_HANDLE 52
#define NWLG_SD_APP_INSTANCE_HND 53
#define NWLG_SD_ERROR_LEVEL 54
#define NWLG_SD_START_INFO 55
#define NWLG_SD_MULTI_TREE 56
/* Extensions to the Shared Data identifier tags for Mobile */
#define NWLG_SD_DISPLAY_ERRORS 100
#define NWLG_SD_DISPLAY_MAPPINGS 101
#define NWLG_SD_PARSED_NAME 102
#define NWLG_SD_PARSED_STRING 103
#define NWLG_SD_PARSED_CMD_TYPE 104
#define NWLG_SD_CL_SERVER_VERSION 105
#define NWLG_SD_CL_SERVER_TYPE 106
#define NWLG_SD_CL_TREE 107
/*
END OF NWLogin Shared Data identifier tags
*/
/*
Error codes
*/
#define NWLG_ERR_VERSION 0xff
/*
Return codes for handlers
*/
#define NWLG_OK 0
#define NWLG_RETRY 1
#define NWLG_ABORT 2
#define NWLG_FAIL 3
#define NWLG_IGNORE 4
#define NWLG_STOP_CYCLE 5
#define NWLG_CANCEL 6
#define NWLG_SHUT_DOWN 7
#define NWLG_SHUT_DOWN_RESTART 8
/*
END OF Return codes for handlers
*/
#define NWLG_ON N_TRUE
#define NWLG_OFF N_FALSE
/*
Command Line Flag masks (NWLG_SD_CMD_LINE_FLAGS)
*/
#define NWLG_CL_FLAG_CLS 0x00000001 /* Clear screen before login */
#define NWLG_CL_FLAG_NS 0x00000002 /* Attach to a server and do not run script */
#define NWLG_CL_FLAG_ATTACH 0x00000002
#define NWLG_CL_FLAG_UNUSED 0x00000004 /* Was bindery flag */
#define NWLG_CL_FLAG_TREE 0x00000008 /* name specified on cmd line is a tree name */
#define NWLG_CL_FLAG_NB 0x00000010 /* Do not show login banner */
#define NWLG_CL_FLAG_SWAP 0x00000020 /* (DOS) Swap to mem or disk for external cmds */
#define NWLG_CL_FLAG_NOSWAP 0x00000040 /* (DOS) Do not swap to mem or disk for external cmds */
#define NWLG_CL_FLAG_SCRIPT 0x00000080 /* Script file name specified on command line */
#define NWLG_CL_FLAG_RDF 0x00000100 /* (WIN) Restore permanent connections when done */
#define NWLG_CL_FLAG_EXTFORK 0x00000200 /* external command is another process */
#define NWLG_CL_FLAG_NO_DISPLAY 0x00000400 /* Do not display script results */
#define NWLG_CL_FLAG_NA 0x00000800 /* /NA only, do not login just run scripts
/NA and /AT(/NS) login and do not run scripts */
#define NWLG_CL_FLAG_NO_CLOSE 0x00001000 /* /NC Do not close script results */
#define NWLG_CL_FLAG_ADVANCED 0x00002000 /* /A Advanced level login UI */
#define NWLG_CL_FLAG_CONTINUE 0x00004000 /* /CONT accept command line and pass to API without stopping for initial UI */
#define NWLG_CL_FLAG_SIMPLE 0x00008000 /* /SI Simple UI */
#define NWLG_CL_FLAG_MAP_ROOT_OFF 0x00010000 /* do not force map root on NT or other platform that can handle relative mapping */
#define NWLG_CL_FLAG_START_UI 0x00020000 /* Internal flag to that start_UI in progress */
#define NWLG_CL_FLAG_DUI 0x00040000 /* Internal flag to set skipUI = NWLG_OPTION_ON | NWLG_DISABLE_UI */
#define NWLG_CL_FLAG_STATE_ADVANCED 0x00080000 /* Internal flag to force the Advanced dialog to display */
#define NWLG_CL_FLAG_FPW 0x00100000 /* Internal flag to signal Forgotten Password Invocation */
#define NWLG_CL_FLAG_RUN_SCRIPT 0x20000000 /* Internal flag to run scripts */
#define NWLG_CL_FLAG_CLEAR_CONN 0x40000000 /* Internal flag to clear connection (logout) before login */
#define NWLG_CL_FLAG_DEBUG 0x80000000 /* API in debug mode */
/* Map flags */
#define NWLG_MAP_FLAG_INSERT 0x00000001
#define NWLG_MAP_FLAG_ROOT 0x00000002
#define NWLG_MAP_FLAG_PHYSICAL 0x00000004
/*
Get Service connection type flags
*/
#define NWLG_CONN_GET_DEFAULT 0
#define NWLG_CONN_GET_SERVER 1
#define NWLG_CONN_GET_TREE 2
/*
Known Service types
*/
#define NWLG_TYPE_DS 0
#define NWLG_TYPE_BINDERY 1
#define NWLG_TYPE_HOST_OS 9
/*
Message type and login process definitions.
Allows room for future expansion and definitions
Defines are used mainly for defining what type of messages are
sent to IO routines.
The first defines show what part of the login process we are in.
The NWLG_MSGTYP_... are || with _PROC_ to indicate specific message type within
process. Currently, the only one that is looked at is _MSGTYP_ERROR in
IO event NWLG_IO_DATA_BLOCK
*/
#define NWLG_PROC 0x00ff
#define NWLG_PROC_INIT 0x0000
#define NWLG_PROC_LOGIN 0x0010
#define NWLG_PROC_SCRIPT 0x0020
#define NWLG_PROC_TERM 0x0040
#define NWLG_MSGTYP 0xff00
#define NWLG_MSGTYP_INFO 0x0100
#define NWLG_MSGTYP_ERROR 0x0200
#define NWLG_MSGTYP_SCRIPT 0x0400
/************************ Handler definitions ********************/
/*
I/O handler events
*/
#define NWLG_IO_MSG_PAUSE 0
#define NWLG_IO_IDENTITY 1
#define NWLG_IO_YES_NO 2
#define NWLG_IO_DATA_BLOCK 3
#define NWLG_IO_BANNER 4
#define NWLG_IO_FILE 5
#define NWLG_IO_ERROR 6
#define NWLG_IO_CLS 7
#define NWLG_IO_SOUNDS 8
#define NWLG_IO_CHANGE_PWD 9
#define NWLG_IO_CONFIRM_REATTACH 10
#define NWLG_IO_DOS_SWAP_PATH 11
#define NWLG_IO_START_UI 12
#define NWLG_IO_FINISH_UI 13
#define NWLG_IO_START_LOG 14
#define NWLG_IO_FINISH_LOG 15
#define NWLG_IO_WAIT 16
#define NWLG_IO_GET_TEXT 17
#define NWLG_IO_EXP_PWD 22
#define NWLG_IO_LOGIN_CR 23
#define NWLG_IO_PWD_CHG 1
#define NWLG_IO_PWD_SYNC 0
#define NWLG_IO_WAIT_ON 1
#define NWLG_IO_WAIT_OFF 0
#define NWLG_IO_BRING_TO_FRONT 99
/* IO routine optional extensions */
#define NWLG_IO_GET_DATA_LINE 900
#define NWLG_IO_GET_DATA_BUF 901
#if defined (N_PLAT_MSW)
/*
Special values for the progress to NWMLGUIUpdate().
A positive integer indicates the line count of a disconnected script
*/
#define NWLG_UIU_LOGIN_BEGIN (-1) // Connected/Disconnected: output dialog opens
#define NWLG_UIU_LOGIN_PROPER_UPDATE (-2) // Connected: regular update from login proper (called many times)
#define NWLG_UIU_SCRIPTS_BEGIN (-3) // Connected/Disconnected: signal that login proper is complete and scripts are about to run
#define NWLG_UIU_END_OF_SCRIPT (-4) // Connected: signal that a script has closed
#define NWLG_UIU_ALL_PROCESSING_COMPLETE (-5) // Connected/Disconnected: all login and script processing done
#define NWLG_UIU_DISC_SCRIPT_LINE (-6) // Disconnected: signal that a new line is about to execute
#define NWLG_UIU_ABORTED_INCOMPLETE (-7) // Connected/Disconnected: user aborted from debug dialog with script exec incomplete
#endif
/*
Event manager return codes
*/
#define NWLG_EVT_OK NWLG_OK
#define NWLG_EVT_RETRY NWLG_RETRY
#define NWLG_EVT_ABORT NWLG_ABORT
#define NWLG_EVT_FAIL NWLG_FAIL
#define NWLG_EVT_IGNORE NWLG_IGNORE
#define NWLG_EVT_STOP_CYCLE NWLG_STOP_CYCLE
/*
Event delivery types
*/
#define NWLG_EVT_SYSTEM 0
#define NWLG_EVT_PRIVATE 1
#define NWLG_EVT_BROADCAST 2
#define NWLG_EVT_UNTIL_OK 3
#define NWLG_EVT_UNTIL_FAIL 4
#define NWLG_RESTART_NONE 0x0000
/* only set during initial pass of NT login */
#define NWLG_RESTART_AUTH_ONLY 0x0001
#define NWLG_RESTART_SCRIPT 0x0002
/* only set if netware authentication is performed in another module */
#define NWLG_RESTART_ALT_AUTH 0x0004
#define NWLG_RESTART_UNLOCK 0x0008
#define NWLG_RESTART_CITRIX_AUTH 0x0080
#define NWLG_RESTART_NETWARE_LOGIN 0x0100
#define NWLG_RESTART_PRIMARY_LOGIN 0x4000
/*
Flag set/clear/test macros
*/
#define NWLGSetFlag( flag, var ) ((var) = (flag) | (var))
#define NWLGSetFlagP( flag, pvar ) ((*pvar) = (flag) | (*pvar))
#define NWLGClearFlag( flag, var ) ((var) = (~(flag)) & (var))
#define NWLGClearFlagP( flag, pvar ) ((*pvar) = (~(flag)) & (*pvar))
#define NWLGTestFlag( flag, var ) (((var) & (flag)) ? N_TRUE : N_FALSE)
#define NWLGTestFlagP( flag, pvar ) (((*pvar) & (flag)) ? N_TRUE : N_FALSE)
/***
Version information
***/
#define NWLG_MAJOR_VER 5
#define NWLG_MINOR_VER 0
#define NWLG_REV_VER 0
#define NWLGSetVersionP( pVersion ) pVersion->major = NWLG_MAJOR_VER;\
pVersion->minor=NWLG_MINOR_VER;pVersion->revision = NWLG_REV_VER;
#define NWLGSetVersion( version ) version.major = NWLG_MAJOR_VER;\
version.minor=NWLG_MINOR_VER;version.revision = NWLG_REV_VER;
#define NWLGVersionLong( version ) (unsigned long) (version.major * 1000000L \
+ version.minor * 1000 \
+ version.revision)
#define NWLGVersionLongP( pVersion ) (unsigned long) (pVersion->major * 1000000L \
+ pVersion->minor * 1000 \
+ pVersion->revision)
#define NWLGVersionLongV( major, minor, revision ) (unsigned long) (major * 1000000L \
+ minor * 1000 + revision)
#define NWLG_CURRENT_VERSION NWLGUIVersionLongV( NWLG_MAJOR_VER, NWLG_MINOR_VER, NWLG_REV_VER )
typedef struct tagNWLGAccessRec N_FAR * pNWLGAccessRec;
N_TYPEDEF_CALLBACK( NWCCODE, pEVTSend )
(
nint deliveryType,
pNWLGAccessRec pAccess,
nint event,
nint eventType,
nint eventSubType,
INT_PTR param1,
INT_PTR param2,
nflag32 flags
);
N_TYPEDEF_CALLBACK( NWCCODE, pEvtHndlr )
(
pNWLGAccessRec pAccess,
nint event,
nint eventType,
nint eventSubType,
INT_PTR param1,
INT_PTR param2,
nflag32 flag
);
N_TYPEDEF_CALLBACK( NWCCODE, pIOHndlr )
(
pNWLGAccessRec pAccess,
nint ioEvent,
INT_PTR param1,
INT_PTR param2,
nflag32 flags
);
#if defined(__BORLANDC__) // Don't pack the structs.
# pragma option -a
#elif defined(N_ARCH_16)
# pragma pack(2)
#else
# pragma pack(4)
#endif
typedef struct tagNWLGAccessRec
{
INT_PTR id; /* event handlers' unique id assigned by NWLogin */
NWCCODE status; /* NWLG_OK, ... */
NWRCODE errCode; /* Additional error code information */
pEvtHndlr pEventHandler; /* callback to extension Event Handler */
pEvtHndlr pExceptionHandler; /* callback to extension Exception Handler */
pIOHndlr pIOHandler; /* callback to extension IO Event Handler */
nptr pUserData; /* optional extension defined data pointer */
} NWLGAccessRec;
typedef struct tagNWVersion
{
nuint16 major;
nuint8 minor;
nuint8 revision;
} NWVersion;
typedef NWVersion N_FAR * pNWVersion;
/***************************************************************************/
/* Start up information structures */
/***************************************************************************/
/* Elemnts for a generic linked list where id contains the type of data */
typedef struct tagNWLGStartInfoData
{
nuint32 id;
struct tagNWLGStartInfoData *next;
nptr data;
} NWLGStartInfoData;
typedef NWLGStartInfoData N_FAR * pNWLGStartInfoData;
/* Elements for a linked list of strings. */
typedef struct tagNWLGStringElement
{
pnstr text;
struct tagNWLGStringElement *next;
} NWLGStringElement;
typedef NWLGStringElement N_FAR * pNWLGStringElement;
/* linked list of command line args */
typedef struct tagNWLGStartInfoCmdArgs
{
pnstr arg;
struct tagNWLGStartInfoCmdArgs *next;
nint argLen;
} NWLGStartInfoCmdArgs;
typedef NWLGStartInfoCmdArgs N_FAR * pNWLGStartInfoCmdArgs;
#define NWLG_CMDLINE_ARG_LEN 65
#define NWLG_STARTINFO_NONE 0
#define NWLG_STARTINFO_USE 1
#define NWLG_STARTINFO_CMDLINE 2
typedef struct tagNWLGStartInfo
{
NWVersion APIVersion;
pNWLGStartInfoData dataList;// linked list pointer or NULL
pEVTSend pNWLGEVTSend;
nint useStartInfo; // NWLG_STARTINFO_NONE:0, NWLG_STARTINFO_USE:1, NWLG_STARTINFO_CMDLINE:2
nint serverLen;
pnstr server; // server to log into
nint treeLen;
pnstr tree; // tree name if logging into tree instead of specific server
nint userLen;
pnstr user; // real login user name (normally no context)
nint scriptUserLen;
pnstr scriptUser; // user name to use when executing scripts
nint passwordLen;
pnstr password;
nint profileLen;
pnstr profile; // profile file/object name
nint scriptFileLen;
pnstr scriptFile; // override script file/object name
nint contextLen;
pnstr context; // full text context without leading '.'
nint bannerInfoLen;
pnstr bannerInfo; // name of banner file (NI)
nint swapPathLen;
pnstr swapPath; // DOS only
pNWLGStartInfoCmdArgs cmdLine;// linked list of command line args (%2 %3 %4...%MAX_SCRIPT_ARGS+2)
nbool noBanner;
nbool _unused; // force bindery conns
nbool clearConns; // combination of /NS
nbool clearScreen; // cmd line versions
nbool singleTree; // TRUE = do not allow multi-tree login
nbool restorePerm; // W31 restore permanent connections
nbool runScripts; // and /NA
nint noSwap; // DOS - swap flag
nint internalFlags; // 9-21-98 KPW Reserved
nptr pData; /** Start Version 1.0.1 **/
nint restartMode; /* NT - 0=Full Login, 1=Authenticate only, 2=Restart at Script NWLG_RESTART_... */
nbool disableLoginExt; /* TRUE do not allow extensions */
HWND hwndParent; /* HWND to treat as this DLL's main window */
nuint32 NWMLGFlags; /* Mobile flags */
nuint32 callingModule; //
pnstr providerName; // Shell Login Extension DLL name (NOVELLNP, EDCMOBILE...)
pEvtHndlr providerCallBack; // used to call back W95 provider (not implemented)
pEvtHndlr pReserved1; // future FN pointers
pEvtHndlr pReserved2; // future FN pointers
pEvtHndlr pReserved3; // future FN pointers
// 04-02-98 Make available for all 32bit platforms - start
// #if defined (N_ARCH_32) IKM- Removed ifdef 08-23-99 as per Ransom's suggestion to make this available to ALL platforms
NWCONN_HANDLE expiredConnID;
nstr expiredPassword[MAX_DN_BYTES]; /* password that expired */
nstr expiredServiceName[NW_MAX_SERVER_NAME_BYTES]; /* server or tree name or workstation description (WindowsNT...) */
nint expiredServiceType; /* NDS or BINDERY */
nbool expiredDSbinderyServer; /* ds server attached bindery mode SPD 47924 */
nbool expiredPrimaryLogin; /* is this from the initial or primary login */
nbool expiredWkstaPassword;
nstr expiredWkstaNewPassword[MAX_DN_BYTES];
// #endif IKM- Removed ifdef 08-23-99 as per Ransom's suggestion to make this available to ALL platforms
// 04-02-98 Make available for all 32bit platforms - end
} NWLGStartInfo;
typedef NWLGStartInfo N_FAR * pNWLGStartInfo;
/* IDs for items found in linked list 'dataList' */
#define NWLGID_COMMAND_LINE 0x00000000L /* Command-line string */
#define NWLGID_SI 0x00000001L /* NWLGStartInfo */
#define NWLGID_SI_ORIG 0x00000002L /* Original NWLGStartInfo */
#define NWLGID_UI 0x00000011L /* NWLGUIStartInfo */
#define NWLGID_UI_ORIG 0x00000012L /* Original NWLGUIStartInfo */
//
// Other NWLGStartInfoData ID types not defined here:
//
// #define NWLGID_LOCKED_9X 0x00000023 /* UNLOCK.H */
// #define NWLGID_CMD_LINE_INFO 0x00000030 /* NWLGUICL.H */
// #define NWLGID_TAB_BINDERY 0x00000031 /* AXBNDRYTAB.H */
// #define NWLGID_TAB_CRED 0x00000032 /* AXCREDTAB.H */
// #define NWLGID_TAB_CREDNT 0x00000033 /* AXCREDNTTAB.H */
// #define NWLGID_TAB_DIALUP 0x00000034 /* AXDIALTAB.H */
// #define NWLGID_TAB_NDS 0x00000035 /* AXNDSTAB.H */
// #define NWLGID_TAB_SCRIPT 0x00000036 /* AXSCRIPTTAB.H */
// #define NWLGID_NMAS 0x00000055 /* NWLNMAS.H */
// #define NWLGID_UI_CONTAINER 0x00000056 /* LOGW32DLG.H */
//
/* End of StartInfo */
/***************************************************************************/
typedef struct tagNWLGMapRec
{
nchar driveLetter; /* NULL char for next drive i.e. c = (char)0 */
nuint searchOrder; /* 0 for not a search drive */
pnstr path; /* call NWParsePath to get it parsed */
} NWLGMapRec;
typedef NWLGMapRec N_FAR * pNWLGMapRec;
/************************ NWLOGIN structures ********************/
typedef struct tagNWLGUserIDStruct
{
NWDSContextHandle context;
pnstr server;
pnstr user;
pnstr password;
nbool changeServer; /* allow server/tree to change */
nbool DSLogin; /* NDS or bindery login */
NWCONN_HANDLE connID;
nptr data;
nflag32 flags;
pnstr tree;
pnstr szContext;
nbool treeLogin; /* tree or server login */
char hintMagic[4]; /* if set to "HINT" then pointer to string follows */
pnstr pHint;
} NWLGUserID;
typedef NWLGUserID N_FAR * pNWLGUserID;
typedef struct tagNWLGSrvcConnStruct
{
pnstr server; /* connect(ed) to server name */
pnstr tree; /* connect(ed) to tree name */
nint serviceType; /* server, tree or default */
pnint connType;
NWCONN_HANDLE N_FAR *connID;
} NWLGSrvcConn;
typedef NWLGSrvcConn N_FAR * pNWLGSrvcConn;
typedef struct tagNWLGScriptInfoStruct
{
nint idx;
nint scriptNameLen;
pnstr scriptName;
nint len;
pnstr line;
nint scriptLineNum;
nbool crt;
struct CLoginScript* OloginScript; // ref to C++ CLoginScript instance
} NWLGScriptInfo;
typedef NWLGScriptInfo N_FAR * pNWLGScriptInfo;
#if defined(__BORLANDC__) // Restore to compiler specified.
# pragma option -a.
#else
# pragma pack()
#endif
/************************ NWLOGIN API's ********************/
N_EXTERN_LIBRARY( NWCCODE )
NWLoginInit
(
pNWLGAccessRec pAccess,
pNWVersion pRuntimeVersion
);
N_EXTERN_LIBRARY( NWCCODE )
NWLogin
(
pNWLGAccessRec pAccess,
pnstr cmdLine,
pnstr password,
pNWLGStartInfo infoStruct
);
N_EXTERN_LIBRARY( NWCCODE )
NWLoginTerm
(
pNWLGAccessRec pAccess,
nflag32 reserved
);
N_EXTERN_LIBRARY( void )
NWLoginVersion
(
pNWVersion pRuntimeVersion
);
N_EXTERN_LIBRARY( nbool )
NWLGBringLoginToFront
(
void
);
N_EXTERN_LIBRARY( NWCCODE )
NWLGDefaultEvtHandler
(
pNWLGAccessRec pAccess,
nint event,
nint eventType,
nint eventSubType,
INT_PTR param1,
INT_PTR param2,
nflag32 flags
);
N_EXTERN_LIBRARY( NWCCODE )
NWLGDefaultExcptHandler
(
pNWLGAccessRec pAccess,
nint event,
nint eventType,
nint eventSubType,
INT_PTR param1,
INT_PTR param2,
nflag32 flags
);
N_EXTERN_LIBRARY( NWCCODE )
NWLGDefaultIOHandler
(
pNWLGAccessRec pAccess,
nint ioEvent,
nparam param1,
nparam param2,
nflag32 flags
);
N_EXTERN_LIBRARY( NWCCODE )
NWLGGetLoginData
(
nint identifier, /* NWLG_SD_... value*/
nint itemIndex, /* 0 or 0.. for multi valued */
nptr retvalue,
nint len
);
N_EXTERN_LIBRARY( NWCCODE )
NWLGSetLoginData
(
nint identifier,
nint itemIndex,
INT_PTR value
);
N_EXTERN_LIBRARY( NWCCODE )
NWLGOpenScriptFD
(
nint fd,
nbool crt,
pnint ccode
);
N_EXTERN_LIBRARY( void )
NWLGSetCtrlBreak
(
void
);
N_EXTERN_LIBRARY( NWCCODE )
NWLGEVTSend
(
nint deliveryType,
pNWLGAccessRec pAccess,
nint event,
nint eventType,
nint eventSubType,
INT_PTR param1,
INT_PTR param2,
nflag32 flags
);
N_EXTERN_LIBRARY( NWCCODE )
NWLGIOEVTSend
(
pNWLGAccessRec pAccess,
nint ioEvent,
INT_PTR param1,
INT_PTR param2,
nflag32 flags
);
N_EXTERN_LIBRARY( NWCCODE )
_NWLGGetInitialConn
(
pNWLGAccessRec pAccess
);
#ifdef __cplusplus
}
#endif
#endif