Files
ncpfs/include/ncp/nwcalls.h
ncpfs archive import b48389be22 Import ncpfs 2.2.5
2026-04-28 20:40:00 +02:00

660 lines
18 KiB
C

/*
nwcalls.h
Copyright (C) 1998-2001 Petr Vandrovec
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Revision history:
0.00 1998 Petr Vandrovec <vandrove@vc.cvut.cz>
Initial revision.
1.00 1999, November 20 Petr Vandrovec <vandrove@vc.cvut.cz>
Added license.
1.01 2000, June 1 Petr Vandrovec <vandrove@vc.cvut.cz>
Added NWGetBinderyAccessLevel.
1.02 2001, January 7 Patrick Pollet <patrick.pollet@insa-lyon.fr>
Added NWCC_INFO_TREE_NAME, NWCCOpenConnByName and
NWCC_NAME_FORMAT_*.
1.03 2001, January 8 Patrick Pollet <patrick.pollet@insa-lyon.fr>
Added disk retrictions API calls.
1.04 2001, January 9 Patrick Pollet <patrick.pollet@insa-lyon.fr>
Added semaphores API calls.
1.05 2001, January 27 Petr Vandrovec <vandrove@vc.cvut.cz>
Added NWScanOpenFilesByConn2, ncp_ns_scan_connections_using_file.
Added NWGetNumberNCPExtensions, NWScanNCPExtensions.
1.06 2001, February 7 Patrick Pollet <patrick.pollet@insa-lyon.fr>
Added Broadcast API calls & defines
1.07 2001, February 4 Petr Vandrovec <vandrove@vc.cvut.cz>
Added ncp_ns_scan_physical_locks_by_file.
1.08 2001, February 10 Petr Vandrovec <vandrove@vc.cvut.cz>
Added NWGetVolumeName to header.
1.09 2001, February 25 Patrick Pollet <patrick.pollet@insa-lyon.fr>
Added NWIsObjectInSet.
1.10 2001, March 4 Petr Vandrovec <vandrove@vc.cvut.cz>
Added OT_TREE_NAME.
1.11 2001, June 3 Petr Vandrovec <vandrove@vc.cvut.cz>
Added NWGetDirSpaceLimitList, NWGetDirSpaceLimitList2,
ncp_get_directory_info.
Added NW_LIMIT_LIST, NW_MAX_VOLUME_NAME_LEN, DIR_SPACE_INFO.
1.12 2001, July 16 Petr Vandrovec <vandrove@vc.cvut.cz>
Added __NWDisableBroadcasts and __NWEnableBroadcasts.
1.13 2001, September 15 Petr Vandrovec <vandrove@vc.cvut.cz>
Fixes for SWIG. Unwind nested structs so that names are defined
in this header and not by SWIG.
1.14 2001, December 12 Hans Grobler <grobh@sun.ac.za>
Added TR_ALL define.
1.15 2001, December 30 Petr Vandrovec <vandrove@vc.cvut.cz>
Updates for SWIG.
*/
#ifndef __NWCALLS_H__
#define __NWCALLS_H__
#include <ncp/ncplib.h>
#include <ncp/ext/stdint.h>
typedef unsigned int nuint;
typedef u_int8_t nuint8;
typedef u_int16_t nuint16;
typedef u_int32_t nuint32;
typedef int nint;
typedef int16_t nint16;
typedef int32_t nint32;
typedef uint_least16_t nuint16a;
typedef uint_least32_t nuint32a;
typedef int_least16_t nint16a;
typedef int_least32_t nint32a;
typedef u_int8_t nbool8;
typedef nuint32a nflag32;
typedef struct nw_info_struct NW_ENTRY_INFO;
typedef nuint NWCONN_NUM; /* nuint16 ? */
#define nameLength nameLen
union NW_FRAGMENT_fragAddr {
void* rw;
const void* ro;
};
typedef struct {
union NW_FRAGMENT_fragAddr fragAddr;
#define fragAddress fragAddr.rw
size_t fragSize;
} NW_FRAGMENT;
/* including null byte... */
#define NW_MAX_VOLUME_NAME_LEN 17
#define TR_READ NCP_PERM_READ
#define TR_WRITE NCP_PERM_WRITE
#define TR_CREATE NCP_PERM_CREATE
#define TR_ERASE NCP_PERM_DELETE
#define TR_ACCESS_CTRL NCP_PERM_OWNER
#define TR_SEARCH NCP_PERM_SEARCH
#define TR_MODIFY NCP_PERM_MODIFY
#define TR_SUPERVISOR NCP_PERM_SUPER
#define TR_ALL NCP_PERM_ALL
#define OT_USER NCP_BINDERY_USER
#define OT_USER_GROUP NCP_BINDERY_UGROUP
#define OT_FILE_SERVER NCP_BINDERY_FSERVER
#define OT_TREE_NAME NCP_BINDERY_TREE
#define IM_NAME RIM_NAME
#define IM_DIRECTORY RIM_DIRECTORY
#define IM_ALL RIM_ALL
#define A_READ_ONLY 0x00000001 /* aRDONLY... but it is htonl-ed... fixme... */
#define A_HIDDEN 0x00000002
#define A_SYSTEM 0x00000004
#define A_EXECUTE_ONLY 0x00000008
#define A_DIRECTORY 0x00000010
#define A_NEEDS_ARCHIVED 0x00000020
#define A_EXECUTE_CONFIRM 0x00000040 /* does not occur in flags */
#define A_SHAREABLE 0x00000080
#define A_SEARCH_MODE 0x00000700
#define A_DONT_SUBALLOCATE 0x00000800
#define A_TRANSACTIONAL 0x00001000
#define A_INDEXED 0x00002000
#define A_READ_AUDIT 0x00004000
#define A_WRITE_AUDIT 0x00008000
#define A_IMMEDIATE_PURGE 0x00010000
#define A_RENAME_INHIBIT 0x00020000
#define A_DELETE_INHIBIT 0x00040000
#define A_COPY_INHIBIT 0x00080000
#define A_FILE_AUDITING 0x00100000
/* reserved 0x00200000 */
#define A_FILE_MIGRATED 0x00400000
#define A_DONT_MIGRATE 0x00800000
#define A_DATA_MIGRATION_SAVE_KEY \
0x01000000
#define A_IMMEDIATE_COMPRESS 0x02000000
#define A_FILE_COMPRESSED 0x04000000
#define A_DONT_COMPRESS 0x08000000
#define A_CREATE_HARDLINK 0x10000000
#define A_CANT_COMPRESS 0x20000000
#define A_ATTRIBUTES_ARCHIVE 0x40000000
/* reserved 0x80000000 */
#define NWCC_RESERVED 0x00000000
/* note that NWCC_TRAN_TYPE_x must match NT_x */
/* in past NWCC_TRAN_TYPE_IPX was equal to 1, but no API
returned it, they returned NT_IPX instead */
#define NWCC_TRAN_TYPE_IPX 0x00000000
#define NWCC_TRAN_TYPE_IPX_old 0x00000001
#define NWCC_TRAN_TYPE_UDP 0x00000008
#define NWCC_TRAN_TYPE_TCP 0x00000009
#define NWCC_TRAN_TYPE_WILD 0x00008000
#define NWCC_OPEN_PRIVATE 0x00000004
#define NWCC_OPEN_PUBLIC 0x00000008
#define NWCC_OPEN_NEW_CONN 0x00080000 /* ncpfs specific */
#define NWCC_INFO_AUTHENT_STATE 1
#define NWCC_INFO_BCAST_STATE 2
#define NWCC_INFO_TREE_NAME 4
#define NWCC_INFO_CONN_NUMBER 5
#define NWCC_INFO_USER_ID 6
#define NWCC_INFO_SERVER_NAME 7
#define NWCC_INFO_MAX_PACKET_SIZE 9
#define NWCC_INFO_SERVER_VERSION 12
#define NWCC_INFO_TRAN_ADDR 13
#define NWCC_INFO_USER_NAME 0x4000
#define NWCC_INFO_ROOT_ENTRY 0x4001
#define NWCC_INFO_MOUNT_UID 0x4002
#define NWCC_INFO_SECURITY 0x4003
#define NWCC_INFO_MOUNT_POINT 0x4004
#define NW_MAX_SERVER_NAME_LEN 49
#define NWCC_SECUR_SIGNING_IN_USE 0x0001
#define NWCC_SECUR_LEVEL_CHECKSUM 0x0100
#define NWCC_SECUR_LEVEL_SIGN_HEADERS 0x0200
#define NWCC_SECUR_LEVEL_SIGN_ALL 0x0400
#define NWCC_SECUR_LEVEL_ENCRYPT 0x0800
/* Authentication States */
#define NWCC_AUTHENT_STATE_NONE 0x0000
#define NWCC_AUTHENT_STATE_BIND 0x0001
#define NWCC_AUTHENT_STATE_NDS 0x0002
/* Broadcast States */
#define NWCC_BCAST_PERMIT_ALL 0x0000
#define NWCC_BCAST_PERMIT_SYSTEM 0x0001
#define NWCC_BCAST_PERMIT_NONE 0x0002
#define NWCC_BCAST_PERMIT_POLL 0x0003
/* Name Format types */
#define NWCC_NAME_FORMAT_NDS 0x0001
#define NWCC_NAME_FORMAT_BIND 0x0002
#define NWCC_NAME_FORMAT_NDS_TREE 0x0008
#define NWCC_NAME_FORMAT_WILD 0x8000
typedef struct {
unsigned int major;
unsigned int minor;
unsigned int revision;
} NWCCVersion;
typedef struct {
nuint32 type;
#ifdef SWIG
%pragma(swig) readonly
size_t len;
%pragma(swig) readwrite
NWCCTranAddr_buffer buffer[32];
#else
size_t len;
void* buffer;
#endif
#if defined(SWIG_BUILD)
nuint8 bufferdata[32];
#endif
} NWCCTranAddr;
struct NWCCRootEntry {
NWVOL_NUM volume;
NWDIR_ENTRY dirEnt;
};
#ifdef __cplusplus
extern "C" {
#endif
/* misc */
NWCCODE NWCallsInit(void* __NULL1, void* __NULL2);
NWCCODE NWRequest(NWCONN_HANDLE __conn, nuint, nuint, const NW_FRAGMENT*, nuint, NW_FRAGMENT*);
NWCCODE NWRequestSimple(NWCONN_HANDLE __conn, nuint, const void*, size_t, NW_FRAGMENT*);
/* bindery */
NWCCODE NWGetObjectName(NWCONN_HANDLE __conn, NWObjectID __objectid,
char* __objectname, NWObjectType* __objecttype);
NWCCODE NWGetObjectID(NWCONN_HANDLE __conn, const char* __objectname,
NWObjectType __objecttype, NWObjectID* __objectid);
NWCCODE NWGetBinderyAccessLevel(NWCONN_HANDLE __conn, nuint8* __rights,
NWObjectID* __objectid);
NWCCODE NWLogoutFromFileServer(NWCONN_HANDLE __conn); /* ncplib.c */
NWCCODE NWVerifyObjectPassword(NWCONN_HANDLE __conn, const char* __objectname,
NWObjectType __objecttype, const char* __objectpassword); /* ncplib.c */
/* filesystem */
NWCCODE NWGetNSEntryInfo(NWCONN_HANDLE __conn, nuint __dirhandle,
const char* __path, nuint __srcns, nuint __dstns,
nuint16 __attr, nuint32 __rim, NW_ENTRY_INFO* target);
NWCCODE NWParsePath(const char* __path, char* __server,
NWCONN_HANDLE* __pconn, char* __volume, char* __volpath);
NWCCODE ncp_get_volume_name(NWCONN_HANDLE __conn, NWVOL_NUM __vol, char* __name, size_t __maxlen); /* filemgmt.c */
NWCCODE NWGetVolumeNumber(NWCONN_HANDLE __conn, const char* __name, NWVOL_NUM* __vol);
NWCCODE NWGetVolumeName(NWCONN_HANDLE __conn, NWVOL_NUM __vol, char* __volume);
NWCCODE NWGetNSLoadedList(NWCONN_HANDLE __conn,
NWVOL_NUM __vol,
size_t __maxlen,
nuint8* __nslist,
size_t* __nslen); /* filemgmt.c */
typedef struct {
u_int16_t nextRequest;
u_int16_t openCount;
#ifdef SWIG
fixedArray buffer[512];
#else
u_int8_t buffer[512];
#endif
u_int16_t curRecord;
} OPEN_FILE_CONN_CTRL;
typedef struct {
u_int16_t taskNumber;
u_int8_t lockType;
u_int8_t accessControl;
u_int8_t lockFlag;
NWVOL_NUM volNumber;
NWDIR_ENTRY parent;
NWDIR_ENTRY dirEntry;
u_int8_t forkCount;
u_int8_t nameSpace;
#ifdef SWIG
%pragma(swig) readonly
size_t nameLen;
%pragma(swig) readwrite
size_tLenPrefixCharArray fileName[255];
#else
size_t nameLen;
char fileName[255];
#endif
} OPEN_FILE_CONN;
NWCCODE
NWScanOpenFilesByConn2(NWCONN_HANDLE conn,
NWCONN_NUM connNum,
u_int16_t *iterHandle,
OPEN_FILE_CONN_CTRL *openCtrl,
OPEN_FILE_CONN *openFile);
typedef struct
#ifndef SWIG
__CONN_USING_FILE
#endif
{
NWCONN_NUM connNumber;
u_int16_t taskNumber;
u_int8_t lockType;
u_int8_t accessControl;
u_int8_t lockFlag;
} CONN_USING_FILE;
typedef struct {
u_int16_t nextRequest;
u_int16_t useCount;
u_int16_t openCount;
u_int16_t openForReadCount;
u_int16_t openForWriteCount;
u_int16_t denyReadCount;
u_int16_t denyWriteCount;
u_int8_t locked;
u_int8_t forkCount;
u_int16_t connCount;
CONN_USING_FILE connInfo[70];
} CONNS_USING_FILE;
NWCCODE
ncp_ns_scan_connections_using_file(
NWCONN_HANDLE conn,
NWVOL_NUM vol,
NWDIR_ENTRY dirent,
int datastream,
u_int16_t *iterHandle,
CONN_USING_FILE *cf,
CONNS_USING_FILE *cfa);
typedef struct
#ifndef SWIG
__PHYSICAL_LOCK
#endif
{
u_int16_t loggedCount;
u_int16_t shareableLockCount;
ncp_off64_t recordStart;
ncp_off64_t recordEnd;
NWCONN_NUM connNumber;
u_int16_t taskNumber;
u_int8_t lockType;
} PHYSICAL_LOCK;
typedef struct {
u_int16_t nextRequest;
u_int16_t numRecords;
PHYSICAL_LOCK locks[32];
u_int16_t curRecord;
#ifdef SWIG
fixedArray reserved[8];
#else
u_int8_t reserved[8];
#endif
} PHYSICAL_LOCKS;
NWCCODE
ncp_ns_scan_physical_locks_by_file(
NWCONN_HANDLE conn,
NWVOL_NUM vol,
NWDIR_ENTRY dirent,
int datastream,
u_int16_t *iterHandle,
PHYSICAL_LOCK *lock,
PHYSICAL_LOCKS *locks);
typedef struct {
u_int16_t openCount;
u_int16_t semaphoreValue;
u_int16_t taskNumber;
#ifdef SWIG
fixedCharArray semaphoreName[128];
#else
char semaphoreName[128];
#endif
} CONN_SEMAPHORE;
typedef struct {
u_int16_t nextRequest;
u_int16_t numRecords;
#ifdef SWIG
fixedArray records[508];
#else
u_int8_t records[508];
#endif
u_int16_t curOffset;
u_int16_t curRecord;
} CONN_SEMAPHORES;
NWCCODE
NWScanSemaphoresByConn(
NWCONN_HANDLE conn,
NWCONN_NUM connNum,
u_int16_t *iterHandle,
CONN_SEMAPHORE *semaphore,
CONN_SEMAPHORES *semaphores);
/* management services */
NWCCODE NWOpenBindery(NWCONN_HANDLE __conn);
NWCCODE NWCloseBindery(NWCONN_HANDLE __conn);
NWCCODE NWDownFileServer(NWCONN_HANDLE __conn, nuint __force);
NWCCODE NWEnableFileServerLogin(NWCONN_HANDLE __conn);
NWCCODE NWDisableFileServerLogin(NWCONN_HANDLE __conn);
NWCCODE NWDisableTTS(NWCONN_HANDLE __conn);
NWCCODE NWEnableTTS(NWCONN_HANDLE __conn);
/* RPC services */
NWCCODE NWSMLoadNLM(NWCONN_HANDLE __conn, const char* __nlm);
NWCCODE NWSMUnloadNLM(NWCONN_HANDLE __conn, const char* __nlm);
NWCCODE NWSMMountVolume(NWCONN_HANDLE __conn, const char* __volume,
nuint32* __volnumber);
NWCCODE NWSMDismountVolumeByName(NWCONN_HANDLE __conn, const char* __volume);
NWCCODE NWSMDismountVolumeByNumber(NWCONN_HANDLE __conn, nuint32 __volnumber);
NWCCODE NWSMExecuteNCFFile(NWCONN_HANDLE __conn, const char* __ncf);
NWCCODE NWSMSetDynamicCmdStrValue(NWCONN_HANDLE __conn, const char* __param,
const char* __value);
NWCCODE NWSMSetDynamicCmdIntValue(NWCONN_HANDLE __conn, const char* __param,
nuint32 __value);
/* connection services */
NWCCODE NWClearConnectionNumber(NWCONN_HANDLE __conn, NWCONN_NUM __connnum);
NWCCODE NWGetObjectConnectionNumbers(NWCONN_HANDLE __conn,
const char* __objectname, NWObjectType __objecttype,
size_t* noOfReturnedConns, NWCONN_NUM* conns, size_t maxConns);
NWCCODE NWGetConnListFromObject(NWCONN_HANDLE __conn, NWObjectID objID,
NWCONN_NUM firstConn,
size_t* noOfReturnedConns, NWCONN_NUM* conns125); /* returned max. 125 */
/* message services */
NWCCODE NWSendBroadcastMessage(NWCONN_HANDLE __conn, const char* message,
size_t conns, NWCONN_NUM* connArray, nuint8* deliveryStatus);
/* local connection services */
NWCCODE NWGetConnectionNumber(NWCONN_HANDLE __conn, NWCONN_NUM* __connnum);
NWCCODE NWGetFileServerName(NWCONN_HANDLE __conn, char* __server);
NWCCODE NWGetFileServerVersion(NWCONN_HANDLE __conn, u_int16_t* version);
NWCCODE NWCCGetConnInfo(NWCONN_HANDLE __conn, nuint info,
size_t conninfolen, void* conninfoaddr);
NWCCODE NWCCOpenConnBySockAddr(const struct sockaddr* addr,
enum NET_ADDRESS_TYPE type, nuint openState,
nuint reserved, NWCONN_HANDLE* __pconn);
NWCCODE NWCCOpenConnByAddr(const NWCCTranAddr* addr, nuint openState,
nuint reserved, NWCONN_HANDLE* __pconn);
NWCCODE NWCCCloseConn(NWCONN_HANDLE __conn);
/* ncp extensions */
#define MAX_NCP_EXTENSION_NAME_BYTES 33
NWCCODE NWGetNumberNCPExtensions(NWCONN_HANDLE __conn, nuint* __exts);
NWCCODE NWScanNCPExtensions(NWCONN_HANDLE __conn, nuint32* __iter,
char* __extname, nuint8* __majorVersion,
nuint8* __minorVersion, nuint8* __revision,
nuint8 __queryData[32]);
NWCCODE NWFragNCPExtensionRequest(NWCONN_HANDLE conn, nuint32 NCPExtensionID,
nuint reqFragCount, NW_FRAGMENT* reqFragList,
nuint replyFragCount, NW_FRAGMENT* replyFragList);
NWCCODE NWNCPExtensionRequest(NWCONN_HANDLE conn, nuint32 NCPExtensionID,
const void* requestData, size_t requestDataLen,
void* replyData, size_t* replyDataLen);
NWCCODE NWEnableBroadcasts(NWCONN_HANDLE __conn);
NWCCODE NWDisableBroadcasts(NWCONN_HANDLE __conn);
#ifdef NCPFS_VERSION
NWCCODE __NWEnableBroadcasts(NWCONN_HANDLE __conn);
NWCCODE __NWDisableBroadcasts(NWCONN_HANDLE __conn);
#endif
NWCCODE NWGetBroadcastMode(NWCONN_HANDLE __conn, nuint16* __bcstmode) ;
NWCCODE NWSetBroadcastMode(NWCONN_HANDLE __conn, nuint16 __bcstmode);
NWCCODE NWCCOpenConnByName(NWCONN_HANDLE startConn, const char *serverName,
nuint nameFormat,nuint openState,
nuint reserved, NWCONN_HANDLE* __pconn);
typedef struct
#ifndef SWIG
__NWOBJ_REST
#endif
{
NWObjectID objectID;
nuint32 restriction;
} NWOBJ_REST;
typedef struct {
nuint8 numberOfEntries;
NWOBJ_REST resInfo[12];
} NWVolumeRestrictions;
typedef struct {
nuint8 numberOfEntries;
NWOBJ_REST resInfo[16];
} NWVOL_RESTRICTIONS;
NWCCODE NWGetObjDiskRestrictions(
NWCONN_HANDLE conn,
NWVOL_NUM volNumber,
NWObjectID objectID,
nuint32* restriction,
nuint32* inUse
);
NWCCODE NWScanVolDiskRestrictions(
NWCONN_HANDLE conn,
NWVOL_NUM volNum,
nuint32* iterhandle,
NWVolumeRestrictions * volInfo
);
NWCCODE NWScanVolDiskRestrictions2(
NWCONN_HANDLE conn,
NWVOL_NUM volNum,
nuint32* iterhandle,
NWVOL_RESTRICTIONS* volInfo
);
NWCCODE NWRemoveObjectDiskRestrictions(
NWCONN_HANDLE conn,
NWVOL_NUM volNum,
NWObjectID objID
);
NWCCODE NWSetObjectVolSpaceLimit(
NWCONN_HANDLE conn,
NWVOL_NUM volNum,
NWObjectID objID,
nuint32 restriction
);
NWCCODE NWGetDirSpaceLimitList(NWCONN_HANDLE conn, NWDIR_HANDLE dirhandle,
nuint8* __buffer512);
typedef struct
#ifndef SWIG
__tag_NW_LIMIT_LIST_list
#endif
{
nuint32 level;
nuint32 max;
nuint32 current;
} __NW_LIMIT_LIST_list;
typedef struct {
size_t numEntries;
__NW_LIMIT_LIST_list list[102];
} NW_LIMIT_LIST;
NWCCODE NWGetDirSpaceLimitList2(NWCONN_HANDLE conn, NWDIR_HANDLE dirhandle,
NW_LIMIT_LIST* limitlist);
typedef struct {
nuint32 totalBlocks;
nuint32 availableBlocks;
nuint32 purgeableBlocks;
nuint32 notYetPurgeableBlocks;
nuint32 totalDirEntries;
nuint32 availableDirEntries;
nuint32 reserved;
nuint8 sectorsPerBlock;
#ifdef SWIG
%pragma(swig) readonly
nuint8 volLen;
%pragma(swig) readwrite
byteLenPrefixCharArray volName[NW_MAX_VOLUME_NAME_LEN];
#else
nuint8 volLen;
char volName[NW_MAX_VOLUME_NAME_LEN];
#endif
} DIR_SPACE_INFO;
NWCCODE ncp_get_directory_info(NWCONN_HANDLE conn, NWDIR_HANDLE dirhandle,
DIR_SPACE_INFO* target);
typedef struct {
NWCONN_NUM connNumber;
nuint16 taskNumber;
} SEMAPHORE;
typedef struct {
nuint16 nextRequest;
nuint16 openCount;
nuint16 semaphoreValue;
nuint16 semaphoreCount;
SEMAPHORE semaphores[170];
nuint16 curRecord;
} SEMAPHORES;
/********************* not yet
NWCCODE NWScanSemaphoresByName(
NWCONN_HANDLE conn,
const char* semName,
nint16* iterHandle,
SEMAPHORE * semaphore,
SEMAPHORES * semaphores
);
******************************/
NWCCODE NWSignalSemaphore(NWCONN_HANDLE conn, nuint32 semHandle);
NWCCODE NWCloseSemaphore(NWCONN_HANDLE conn, nuint32 semHandle);
NWCCODE NWOpenSemaphore(NWCONN_HANDLE conn, const char* semName,
nint16 maxCount, nuint32* semHandle, nuint16* semOpenCount);
NWCCODE NWExamineSemaphore(NWCONN_HANDLE conn, nuint32 semHandle,
nint16* semValue, nuint16* semOpenCount);
NWCCODE NWWaitOnSemaphore(NWCONN_HANDLE conn, nuint32 semHandle,
nuint16 timeOutValue);
NWCCODE NWCancelWait(NWCONN_HANDLE conn);
NWCCODE NWCCGetConnAddress(NWCONN_HANDLE conn, nuint32 bufLen,
NWCCTranAddr* tranAddr);
NWCCODE NWCCGetConnAddressLength(NWCONN_HANDLE conn, nuint32* bufLen);
NWCCODE NWIsObjectInSet(NWCONN_HANDLE conn, const char* objectName,
NWObjectType objectType, const char* propertyName,
const char* memberName, NWObjectType memberType);
#ifdef __cplusplus
}
#endif
#endif /* __NWCALLS_H__ */