|
|
//////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 1993 Microsoft Corporation
//
// Module Name:
//
// nwapi32.h
//
// Abstract:
//
// This module contains the support for calls into CSNW.
//
// Author:
//
// Chris Sandys (a-chrisa) 09-Sep-1993
//
// Revision History:
// Chuck Y Chan Feb 3, 1994 Make it NT like
// Chuck Y Chan Feb 4, 1996 Merged in calls used by DSMN (from
// nwcapi32.h)
//
//////////////////////////////////////////////////////////////////////////////
#ifndef _NWAPI32_H_
#define _NWAPI32_H_
#ifdef __cplusplus
extern "C" { #endif /* __cplusplus */
//
// Order of Funtions
//
// NWAddTrusteeToDirectory
// NWAllocTemporaryDirectoryHandle
// NWAllocPermanentDirectoryHandle
// NWAttachToFileServer
// NWCheckConsolePrivileges
// NWDeallocateDirectoryHandle
// NWDetachFromFileServer
// NWGetFileServerVersionInfo
// NWGetInternetAddress
// NWGetObjectName
// NWGetVolumeInfoWithHandle
// NWGetVolumeInfoWithNumber
// NWGetVolumeName
// NWIsObjectInSet
// NWLoginToFileServer
// NWLogoutFromFileServer
// NWReadPropertyValue
// NWScanObject
// NWScanProperty
///////////////////////////////////////////////////////////////////////////////
// //
// Manifests and structures //
// //
///////////////////////////////////////////////////////////////////////////////
//
// Version Structure
//
#include <packon.h>
typedef struct _VERSION_INFO { BYTE szName[48]; BYTE Version; BYTE SubVersion; WORD ConnsSupported; WORD connsInUse; WORD maxVolumes; BYTE OSRev; BYTE SFTLevel; BYTE TTSLevel; WORD PeakConns; BYTE AcctVer; BYTE VAPVer; BYTE QueueVer; BYTE PrintVer; BYTE VirtualConsoleVer; BYTE SecurityResLevel; BYTE InternetworkBVer; BYTE Reserved[60]; } VERSION_INFO;
#include <packoff.h>
//
// DLL Defination
//
#define DLLEXPORT
//
// Misc type definitions
//
#define NWCCODE USHORT
#define NWLOCAL_SCOPE USHORT
#define NWCONN_HANDLE HANDLE
#define NWFAR
#define NWAPI WINAPI
#define NWOBJ_TYPE USHORT
#define NWOBJ_ID DWORD
#define NWFLAGS UCHAR
#define NWVOL_NUM UCHAR
#define NWDIR_HANDLE UCHAR
#define NWACCESS_RIGHTS BYTE
#define NWCONN_NUM USHORT
#define NWNET_ADDR UCHAR
#define NWNUMBER WORD
#define NWVOL_FLAGS WORD
#define NWSEGMENT_NUM UCHAR
#define NWSEGMENT_DATA BYTE
#define NWRIGHTS_MASK WORD
#define NWSEQUENCE BYTE
#define NWINDEX_TYPE USHORT
#define NWDATE_TIME DWORD
#define NWDIR_TRUSTEE_RIGHTS WORD
#define NWSEQUENCE BYTE
typedef struct { NWOBJ_ID objectID; NWDIR_TRUSTEE_RIGHTS objectRights; } TRUSTEE_INFO;
//
// Object Types (already in HI-LO format)
//
#define OT_WILD 0xFFFF
#define OT_UNKNOWN 0x0000
#define OT_USER 0x0100
#define OT_USER_GROUP 0x0200
#define OT_PRINT_QUEUE 0x0300
#define OT_FILE_SERVER 0x0400
#define OT_JOB_SERVER 0x0500
#define OT_GATEWAY 0x0600
#define OT_PRINT_SERVER 0x0700
#define OT_ARCHIVE_QUEUE 0x0800
#define OT_ARCHIVE_SERVER 0x0900
#define OT_JOB_QUEUE 0x0A00
#define OT_ADMINISTRATION 0x0B00
#define OT_NAS_SNA_GATEWAY 0x2100
#define OT_REMOTE_BRIDGE_SERVER 0x2600
#define OT_TCPIP_GATEWAY 0x2700
#define OT_DIRSERVER 0x7802
//
// Bindery object property flag
//
#define BF_STATIC 0x00
#define BF_DYNAMIC 0x01
#define BF_ITEM 0x00
#define BF_SET 0x02
//
// Bindery object security flag
//
#define BS_ANY_READ 0x00
#define BS_LOGGED_READ 0x01
#define BS_OBJECT_READ 0x02
#define BS_SUPER_READ 0x03
#define BS_BINDERY_READ 0x04
#define BS_ANY_WRITE 0x00
#define BS_LOGGED_WRITE 0x10
#define BS_OBJECT_WRITE 0x20
#define BS_SUPER_WRITE 0x30
#define BS_BINDERY_WRITE 0x40
//
// Size Of Things
//
#define OBJ_NAME_SIZE 48 // ScanObject name size
#define VOL_NAME_SIZE 16 // Get Volume Name Size
#define NW_USER_SIZE 50
#define NW_GROUP_SIZE 50
#define NW_PROP_SIZE 50
#define NW_DATA_SIZE 128
#define NW_PROP_SET 0x02
//
// Return Codes
//
#define UNSUCCESSFUL -1
#define SUCCESSFUL 0x0000
#define REQUESTER_ERROR 0x8800
#define ALREADY_ATTACHED 0x8800
#define INVALID_CONNECTION 0x8801
#define NO_CONSOLE_RIGHTS 0x89C6
#define SERVER_OUT_OF_MEMORY 0x8996
#define VOLUME_DOES_NOT_EXIST 0x8998
#define BAD_DIRECTORY_HANDLE 0x899B
#define INVALID_PATH 0x899C
#define OBJECT_ALREADY_EXISTS 0x89EE
#define NO_OBJECT_READ_PRIVILEGE 0x89FB
#define NO_SUCH_PROPERTY 0x89FB
#define UNKNOWN_FILE_SERVER 0x89FC
#define NO_SUCH_OBJECT 0x89FC
#define NO_FILES_FOUND_ERROR 0x89FF
//
// Swap MACROS
//
#define wSWAP(x) (USHORT)(((((USHORT)x)<<8)&0xFF00) | ((((USHORT)x)>>8)&0x00FF))
#define dwSWAP(x) (DWORD)( ((((DWORD)x)<<24)&0xFF000000) | ((((DWORD)x)<<8)&0x00FF0000) | ((((DWORD)x)>>8)&0x0000FF00) | ((((DWORD)x)>>24)&0x000000FF) )
#define DW_SIZE 4 // used for placing RAW bytes
#define W_SIZE 2
///////////////////////////////////////////////////////////////////////////////
// //
// Original functions from Chris Sandys. Keep for compatibility. //
// //
///////////////////////////////////////////////////////////////////////////////
NWCCODE NWAPI DLLEXPORT NWAddTrusteeToDirectory( NWCONN_HANDLE hConn, NWDIR_HANDLE dirHandle, const char NWFAR *pszPath, NWOBJ_ID dwTrusteeID, NWACCESS_RIGHTS rightsMask );
NWCCODE NWAPI DLLEXPORT NWAllocPermanentDirectoryHandle( NWCONN_HANDLE hConn, NWDIR_HANDLE dirHandle, char NWFAR *pszDirPath, NWDIR_HANDLE NWFAR *pbNewDirHandle, NWACCESS_RIGHTS NWFAR *pbRightsMask );
NWCCODE NWAPI DLLEXPORT NWAllocTemporaryDirectoryHandle( NWCONN_HANDLE hConn, NWDIR_HANDLE dirHandle, char NWFAR *pszDirPath, NWDIR_HANDLE NWFAR *pbNewDirHandle, NWACCESS_RIGHTS NWFAR *pbRightsMask );
NWCCODE NWAPI DLLEXPORT NWAttachToFileServer( const char NWFAR *pszServerName, NWLOCAL_SCOPE ScopeFlag, NWCONN_HANDLE NWFAR *phNewConn );
NWCCODE NWAPI DLLEXPORT NWAttachToFileServerW( const WCHAR NWFAR *pszServerName, NWLOCAL_SCOPE ScopeFlag, NWCONN_HANDLE NWFAR *phNewConn );
NWCCODE NWAPI DLLEXPORT NWCheckConsolePrivileges( NWCONN_HANDLE hConn );
NWCCODE NWAPI DLLEXPORT NWDeallocateDirectoryHandle( NWCONN_HANDLE hConn, NWDIR_HANDLE dirHandle );
NWCCODE NWAPI DLLEXPORT NWDetachFromFileServer( NWCONN_HANDLE hConn );
NWCCODE NWAPI DLLEXPORT NWGetFileServerVersionInfo( NWCONN_HANDLE hConn, VERSION_INFO NWFAR *lpVerInfo );
NWCCODE NWAPI DLLEXPORT NWGetInternetAddress( NWCONN_HANDLE hConn, NWCONN_NUM nConnNum, NWNET_ADDR NWFAR *pIntAddr );
NWCCODE NWAPI DLLEXPORT NWGetObjectName( NWCONN_HANDLE hConn, NWOBJ_ID dwObjectID, char NWFAR *pszObjName, NWOBJ_TYPE NWFAR *pwObjType );
NWCCODE NWAPI DLLEXPORT NWGetVolumeInfoWithHandle( NWCONN_HANDLE hConn, NWDIR_HANDLE nDirHand, char NWFAR *pszVolName, NWNUMBER NWFAR *pwTotalBlocks, NWNUMBER NWFAR *pwSectors, NWNUMBER NWFAR *pwAvailBlocks, NWNUMBER NWFAR *pwTotalDir, NWNUMBER NWFAR *pwAvailDir, NWVOL_FLAGS NWFAR *pfVolRemovable );
NWCCODE NWAPI DLLEXPORT NWGetVolumeInfoWithNumber( NWCONN_HANDLE hConn, NWVOL_NUM nVolNum, char NWFAR *pszVolName, NWNUMBER NWFAR *pwTotalBlocks, NWNUMBER NWFAR *pwSectors, NWNUMBER NWFAR *pwAvailBlocks, NWNUMBER NWFAR *pwTotalDir, NWNUMBER NWFAR *pwAvailDir, NWVOL_FLAGS NWFAR *pfVolRemovable );
NWCCODE NWAPI DLLEXPORT NWGetVolumeName( NWCONN_HANDLE hConn, NWVOL_NUM bVolNum, char NWFAR *pszVolName );
NWCCODE NWAPI DLLEXPORT /* ??? */ NWLoginToFileServer( NWCONN_HANDLE hConn, const char NWFAR *pszUserName, NWOBJ_TYPE wObType, const char NWFAR *pszPassword );
NWCCODE NWAPI DLLEXPORT /* ??? */ NWLogoutFromFileServer( NWCONN_HANDLE hConn );
NWCCODE NWAPI DLLEXPORT /* ??? */ NWReadPropertyValue( NWCONN_HANDLE hConn, const char NWFAR *pszObjName, NWOBJ_TYPE wObjType, char NWFAR *pszPropName, unsigned char ucSegment, char NWFAR *pValue, NWFLAGS NWFAR *pucMoreFlag, NWFLAGS NWFAR *pucPropFlag );
NWCCODE NWAPI DLLEXPORT NWScanObject( NWCONN_HANDLE hConn, const char NWFAR *pszSearchName, NWOBJ_TYPE wObjSearchType, NWOBJ_ID NWFAR *pdwObjectID, char NWFAR *pszObjectName, NWOBJ_TYPE NWFAR *pwObjType, NWFLAGS NWFAR *pucHasProperties, NWFLAGS NWFAR *pucObjectFlags, NWFLAGS NWFAR *pucObjSecurity );
NWCCODE NWAPI DLLEXPORT NWScanProperty( NWCONN_HANDLE hConn, const char NWFAR *pszObjectName, NWOBJ_TYPE wObjType, char NWFAR *pszSearchName, NWOBJ_ID NWFAR *pdwSequence, char NWFAR *pszPropName, NWFLAGS NWFAR *pucPropFlags, NWFLAGS NWFAR *pucPropSecurity, NWFLAGS NWFAR *pucHasValue, NWFLAGS NWFAR *pucMore );
NWCCODE NWAPI DLLEXPORT NWIsObjectInSet( NWCONN_HANDLE hConn, const char NWFAR *lpszObjectName, NWOBJ_TYPE wObjType, const char NWFAR *lpszPropertyName, const char NWFAR *lpszMemberName, NWOBJ_TYPE wMemberType );
NWCCODE NWAPI DLLEXPORT NWGetFileServerDateAndTime( NWCONN_HANDLE hConn, BYTE NWFAR *year, BYTE NWFAR *month, BYTE NWFAR *day, BYTE NWFAR *hour, BYTE NWFAR *minute, BYTE NWFAR *second, BYTE NWFAR *dayofweek );
NWCCODE NWAPI DLLEXPORT NWCreateQueue( NWCONN_HANDLE hConn, NWDIR_HANDLE dirHandle, const char NWFAR *pszQueueName, NWOBJ_TYPE wQueueType, const char NWFAR *pszPathName, NWOBJ_ID NWFAR *pdwQueueId );
NWCCODE NWAPI DLLEXPORT NWChangePropertySecurity( NWCONN_HANDLE hConn, const char NWFAR *pszObjName, NWOBJ_TYPE wObjType, const char NWFAR *pszPropertyName, NWFLAGS ucObjSecurity );
NWCCODE NWAPI DLLEXPORT NWDestroyQueue( NWCONN_HANDLE hConn, NWOBJ_ID dwQueueId );
///////////////////////////////////////////////////////////////////////////////
// //
// Newer and more complete NWC functions. //
// //
// These functions return NetWare compatible error codes. Win32 error may //
// be obtained by calling GetLastError(). //
// //
///////////////////////////////////////////////////////////////////////////////
NWCCODE NWCAddTrusteeToDirectory( NWCONN_HANDLE hConn, NWDIR_HANDLE dirHandle, const char *pszPath, NWOBJ_ID dwTrusteeID, NWACCESS_RIGHTS rightsMask );
NWCCODE NWCAllocPermanentDirectoryHandle( NWCONN_HANDLE hConn, NWDIR_HANDLE dirHandle, char *pszDirPath, NWDIR_HANDLE *pbNewDirHandle, NWACCESS_RIGHTS *pbRightsMask );
NWCCODE NWCAllocTemporaryDirectoryHandle( NWCONN_HANDLE hConn, NWDIR_HANDLE dirHandle, char *pszDirPath, NWDIR_HANDLE *pbNewDirHandle, NWACCESS_RIGHTS *pbRightsMask );
NWCCODE NWCAttachToFileServer( const char *pszServerName, NWLOCAL_SCOPE ScopeFlag, NWCONN_HANDLE *phNewConn );
NWCCODE NWCAttachToFileServerW( const WCHAR *pszServerName, NWLOCAL_SCOPE ScopeFlag, NWCONN_HANDLE *phNewConn );
NWCCODE NWCCheckConsolePrivileges( NWCONN_HANDLE hConn );
NWCCODE NWCDeallocateDirectoryHandle( NWCONN_HANDLE hConn, NWDIR_HANDLE dirHandle );
NWCCODE NWCDetachFromFileServer( NWCONN_HANDLE hConn );
NWCCODE NWCGetFileServerVersionInfo( NWCONN_HANDLE hConn, VERSION_INFO *lpVerInfo );
NWCCODE NWCGetInternetAddress( NWCONN_HANDLE hConn, NWCONN_NUM nConnNum, NWNET_ADDR *pIntAddr );
NWCCODE NWCGetObjectName( NWCONN_HANDLE hConn, NWOBJ_ID dwObjectID, char *pszObjName, NWOBJ_TYPE *pwObjType );
NWCCODE NWCGetVolumeInfoWithHandle( NWCONN_HANDLE hConn, NWDIR_HANDLE nDirHand, char *pszVolName, NWNUMBER *pwTotalBlocks, NWNUMBER *pwSectors, NWNUMBER *pwAvailBlocks, NWNUMBER *pwTotalDir, NWNUMBER *pwAvailDir, NWVOL_FLAGS *pfVolRemovable );
NWCCODE NWCGetVolumeInfoWithNumber( NWCONN_HANDLE hConn, NWVOL_NUM nVolNum, char *pszVolName, NWNUMBER *pwTotalBlocks, NWNUMBER *pwSectors, NWNUMBER *pwAvailBlocks, NWNUMBER *pwTotalDir, NWNUMBER *pwAvailDir, NWVOL_FLAGS *pfVolRemovable );
NWCCODE NWCGetVolumeName( NWCONN_HANDLE hConn, NWVOL_NUM bVolNum, char *pszVolName );
NWCCODE NWCLoginToFileServer( NWCONN_HANDLE hConn, const char *pszUserName, NWOBJ_TYPE wObType, const char *pszPassword );
NWCCODE NWCLogoutFromFileServer( NWCONN_HANDLE hConn );
NWCCODE NWCReadPropertyValue( NWCONN_HANDLE hConn, const char *pszObjName, NWOBJ_TYPE wObjType, char *pszPropName, unsigned char ucSegment, char *pValue, NWFLAGS *pucMoreFlag, NWFLAGS *pucPropFlag );
NWCCODE NWCScanObject( NWCONN_HANDLE hConn, const char *pszSearchName, NWOBJ_TYPE wObjSearchType, NWOBJ_ID *pdwObjectID, char *pszObjectName, NWOBJ_TYPE *pwObjType, NWFLAGS *pucHasProperties, NWFLAGS *pucObjectFlags, NWFLAGS *pucObjSecurity );
NWCCODE NWCScanProperty( NWCONN_HANDLE hConn, const char *pszObjectName, NWOBJ_TYPE wObjType, char *pszSearchName, NWOBJ_ID *pdwSequence, char *pszPropName, NWFLAGS *pucPropFlags, NWFLAGS *pucPropSecurity, NWFLAGS *pucHasValue, NWFLAGS *pucMore );
NWCCODE NWCIsObjectInSet( NWCONN_HANDLE hConn, const char *lpszObjectName, NWOBJ_TYPE wObjType, const char *lpszPropertyName, const char *lpszMemberName, NWOBJ_TYPE wMemberType );
NWCCODE NWCGetFileServerDateAndTime( NWCONN_HANDLE hConn, BYTE *year, BYTE *month, BYTE *day, BYTE *hour, BYTE *minute, BYTE *second, BYTE *dayofweek );
NWCCODE NWCAddTrustee( NWCONN_HANDLE hConn, NWDIR_HANDLE dirHandle, const char *pszPath, NWOBJ_ID dwTrusteeID, NWRIGHTS_MASK rightsMask );
NWCCODE NWCDeleteObject( NWCONN_HANDLE hConn, const char *pszObjectName, NWOBJ_TYPE wObjType );
NWCCODE NWCCreateObject( NWCONN_HANDLE hConn, const char *pszObjectName, NWOBJ_TYPE wObjType, NWFLAGS ucObjectFlags, NWFLAGS ucObjSecurity );
NWCCODE NWCCreateProperty( NWCONN_HANDLE hConn, const char *pszObjectName, NWOBJ_TYPE wObjType, const char *pszPropertyName, NWFLAGS ucObjectFlags, NWFLAGS ucObjSecurity );
NWCCODE NWCDeleteProperty( NWCONN_HANDLE hConn, const char *pszObjectName, NWOBJ_TYPE wObjType, const char *pszPropertyName );
NWCCODE NWCWritePropertyValue( NWCONN_HANDLE hConn, const char *pszObjectName, NWOBJ_TYPE wObjType, const char *pszPropertyName, NWSEGMENT_NUM segmentNumber, NWSEGMENT_DATA *segmentData, NWFLAGS moreSegments );
NWCCODE NWCGetObjectID( NWCONN_HANDLE hConn, const char *pszObjectName, NWOBJ_TYPE wObjType, NWOBJ_ID *objectID );
NWCCODE NWCRenameBinderyObject( NWCONN_HANDLE hConn, const char *pszObjectName, const char *pszNewObjectName, NWOBJ_TYPE wObjType );
NWCCODE NWCAddObjectToSet( NWCONN_HANDLE hConn, const char *pszObjectName, NWOBJ_TYPE wObjType, const char *pszPropertyName, const char *pszMemberName, NWOBJ_TYPE memberType );
NWCCODE NWCDeleteObjectFromSet( NWCONN_HANDLE hConn, const char *pszObjectName, NWOBJ_TYPE wObjType, const char *pszPropertyName, const char *pszMemberName, NWOBJ_TYPE memberType );
NWCCODE NWCCreateDirectory( NWCONN_HANDLE hConn, NWDIR_HANDLE dirHandle, const char *pszPath, NWACCESS_RIGHTS accessMask );
NWCCODE NWCScanForTrustees( NWCONN_HANDLE hConn, NWDIR_HANDLE dirHandle, char *pszsearchDirPath, NWSEQUENCE *pucsequenceNumber, BYTE *numberOfEntries, TRUSTEE_INFO *tl );
NWCCODE NWCScanDirectoryForTrustees2( NWCONN_HANDLE hConn, NWDIR_HANDLE dirHandle, char *pszsearchDirPath, NWSEQUENCE *pucsequenceNumber, char *pszdirName, NWDATE_TIME *dirDateTime, NWOBJ_ID *ownerID, TRUSTEE_INFO *trusteeList );
NWCCODE NWCGetBinderyAccessLevel( NWCONN_HANDLE hConn, NWFLAGS *accessLevel, NWOBJ_ID *objectID );
NWCCODE NWCGetFileServerDescription( NWCONN_HANDLE hConn, char *pszCompany, char *pszVersion, char *pszRevision );
NWCCODE NWCGetVolumeNumber( NWCONN_HANDLE hConn, char *pszVolume, NWVOL_NUM *VolumeNumber );
NWCCODE NWCGetVolumeUsage( NWCONN_HANDLE hConn, NWVOL_NUM VolumeNumber, DWORD *TotalBlocks, DWORD *FreeBlocks, DWORD *PurgeableBlocks, DWORD *NotYetPurgeableBlocks, DWORD *TotalDirectoryEntries, DWORD *AvailableDirectoryEntries, BYTE *SectorsPerBlock );
NWCCODE NWCCreateQueue( NWCONN_HANDLE hConn, NWDIR_HANDLE dirHandle, const char NWFAR *pszQueueName, NWOBJ_TYPE wQueueType, const char NWFAR *pszPathName, NWOBJ_ID NWFAR *pdwQueueId );
NWCCODE NWCChangePropertySecurity( NWCONN_HANDLE hConn, const char NWFAR *pszObjName, NWOBJ_TYPE wObjType, const char NWFAR *pszPropertyName, NWFLAGS ucObjSecurity );
NWCCODE NWCDestroyQueue( NWCONN_HANDLE hConn, NWOBJ_ID dwQueueId );
#ifdef __cplusplus
} #endif /* __cplusplus */
#endif //_NWAPI32_H_
|