windows-nt/Source/XPSP1/NT/ds/published/inc/nwapi32.w
2020-09-26 16:20:57 +08:00

811 lines
22 KiB
OpenEdge ABL
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//////////////////////////////////////////////////////////////////////////////
//
// 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_