927 lines
32 KiB
C
927 lines
32 KiB
C
/*
|
|
|
|
Copyright (c) Microsoft Corporation. All rights reserved.
|
|
|
|
Module Name:
|
|
|
|
macfile.h
|
|
|
|
Abstract:
|
|
|
|
This module contains data structures, related constants and functions,
|
|
error retuen codes and prototypes of AfpAdminxxx APIs. This file should
|
|
be included by any application that will administer the MACFILE service.
|
|
|
|
Author:
|
|
|
|
Narendra Gidwani (microsoft!nareng)
|
|
|
|
|
|
Revision History:
|
|
12 Jume 1992 NarenG Initial version. Split admin.h into admin.h
|
|
and macfile.h.
|
|
--*/
|
|
|
|
#ifndef _MACFILE_
|
|
#define _MACFILE_
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif
|
|
|
|
// Used as RPC binding handle to server
|
|
|
|
typedef ULONG_PTR AFP_SERVER_HANDLE;
|
|
typedef ULONG_PTR *PAFP_SERVER_HANDLE;
|
|
|
|
#define AFP_SERVICE_NAME TEXT("MacFile")
|
|
|
|
// Error return values from AfpAdminxxx Api's
|
|
// WARNING! If you change any any codes below, please change
|
|
// afpmgr.h accoringly.
|
|
|
|
#define AFPERR_BASE -6000
|
|
|
|
#define AFPERR_InvalidVolumeName (AFPERR_BASE-1)
|
|
#define AFPERR_InvalidId (AFPERR_BASE-2)
|
|
#define AFPERR_InvalidParms (AFPERR_BASE-3)
|
|
#define AFPERR_CodePage (AFPERR_BASE-4)
|
|
#define AFPERR_InvalidServerName (AFPERR_BASE-5)
|
|
#define AFPERR_DuplicateVolume (AFPERR_BASE-6)
|
|
#define AFPERR_VolumeBusy (AFPERR_BASE-7)
|
|
#define AFPERR_VolumeReadOnly (AFPERR_BASE-8)
|
|
#define AFPERR_DirectoryNotInVolume (AFPERR_BASE-9)
|
|
#define AFPERR_SecurityNotSupported (AFPERR_BASE-10)
|
|
#define AFPERR_BufferSize (AFPERR_BASE-11)
|
|
#define AFPERR_DuplicateExtension (AFPERR_BASE-12)
|
|
#define AFPERR_UnsupportedFS (AFPERR_BASE-13)
|
|
#define AFPERR_InvalidSessionType (AFPERR_BASE-14)
|
|
#define AFPERR_InvalidServerState (AFPERR_BASE-15)
|
|
#define AFPERR_NestedVolume (AFPERR_BASE-16)
|
|
#define AFPERR_InvalidComputername (AFPERR_BASE-17)
|
|
#define AFPERR_DuplicateTypeCreator (AFPERR_BASE-18)
|
|
#define AFPERR_TypeCreatorNotExistant (AFPERR_BASE-19)
|
|
#define AFPERR_CannotDeleteDefaultTC (AFPERR_BASE-20)
|
|
#define AFPERR_CannotEditDefaultTC (AFPERR_BASE-21)
|
|
#define AFPERR_InvalidTypeCreator (AFPERR_BASE-22)
|
|
#define AFPERR_InvalidExtension (AFPERR_BASE-23)
|
|
#define AFPERR_TooManyEtcMaps (AFPERR_BASE-24)
|
|
#define AFPERR_InvalidPassword (AFPERR_BASE-25)
|
|
#define AFPERR_VolumeNonExist (AFPERR_BASE-26)
|
|
#define AFPERR_NoSuchUserGroup (AFPERR_BASE-27)
|
|
#define AFPERR_NoSuchUser (AFPERR_BASE-28)
|
|
#define AFPERR_NoSuchGroup (AFPERR_BASE-29)
|
|
#define AFPERR_InvalidParms_LoginMsg (AFPERR_BASE-30)
|
|
#define AFPERR_InvalidParms_MaxVolUses (AFPERR_BASE-31)
|
|
#define AFPERR_InvalidParms_MaxSessions (AFPERR_BASE-32)
|
|
#define AFPERR_InvalidServerName_Length (AFPERR_BASE-33)
|
|
|
|
#define AFPERR_MIN AFPERR_InvalidServerName_Length
|
|
|
|
// Constants related to the following data strucutures.
|
|
|
|
#define AFP_SERVERNAME_LEN 31
|
|
#define AFP_VOLNAME_LEN 27
|
|
#define AFP_VOLPASS_LEN 8
|
|
#define AFP_WKSTANAME_LEN 65
|
|
#define AFP_EXTENSION_LEN 3
|
|
#define AFP_CREATOR_LEN 4
|
|
#define AFP_TYPE_LEN 4
|
|
#define AFP_MESSAGE_LEN 199
|
|
#define AFP_MAXICONSIZE 2048
|
|
#define AFP_MAXSESSIONS 0XFFFFFFFF
|
|
#define AFP_ETC_COMMENT_LEN 36
|
|
|
|
|
|
// Relative paths to registry keys that contain information for the macfile
|
|
// server.
|
|
|
|
#define AFP_KEYPATH_SERVER_PARAMS \
|
|
TEXT("SYSTEM\\CurrentControlSet\\Services\\MacFile\\PARAMETERS")
|
|
|
|
#define AFP_KEYPATH_VOLUMES \
|
|
TEXT("SYSTEM\\CurrentControlSet\\Services\\MacFile\\PARAMETERS\\VOLUMES")
|
|
|
|
#define AFP_KEYPATH_TYPE_CREATORS \
|
|
TEXT("SYSTEM\\CurrentControlSet\\Services\\MacFile\\PARAMETERS\\TYPE_CREATORS")
|
|
|
|
#define AFP_KEYPATH_EXTENSIONS \
|
|
TEXT("SYSTEM\\CurrentControlSet\\Services\\MacFile\\PARAMETERS\\EXTENSIONS")
|
|
|
|
#define AFP_KEYPATH_ICONS \
|
|
TEXT("SYSTEM\\CurrentControlSet\\Services\\MacFile\\PARAMETERS\\ICONS")
|
|
|
|
#define AFP_KEYPATH_CODEPAGE \
|
|
TEXT("SYSTEM\\CurrentControlSet\\Control\\Nls\\Codepage")
|
|
|
|
// Value names for server parameters
|
|
|
|
#define AFPREG_VALNAME_SVRNAME TEXT("ServerName")
|
|
#define AFPREG_VALNAME_SRVOPTIONS TEXT("ServerOptions")
|
|
#define AFPREG_VALNAME_MAXSESSIONS TEXT("MaxSessions")
|
|
#define AFPREG_VALNAME_LOGINMSG TEXT("LoginMsg")
|
|
#define AFPREG_VALNAME_MAXPAGEDMEM TEXT("PagedMemLimit")
|
|
#define AFPREG_VALNAME_MAXNONPAGEDMEM TEXT("NonPagedMemLimit")
|
|
#define AFPREG_VALNAME_TYPE TEXT("Type")
|
|
#define AFPREG_VALNAME_CREATOR TEXT("Creator")
|
|
#define AFPREG_VALNAME_COMMENT TEXT("Comment")
|
|
#define AFPREG_VALNAME_PASSWORD TEXT("Password")
|
|
#define AFPREG_VALNAME_MAXUSES TEXT("MaxUses")
|
|
#define AFPREG_VALNAME_PROPS TEXT("Properties")
|
|
#define AFPREG_VALNAME_PATH TEXT("Path")
|
|
#define AFPREG_VALNAME_ID TEXT("Id")
|
|
#define AFPREG_VALNAME_ICONTYPE TEXT("IconType")
|
|
#define AFPREG_VALNAME_DATA TEXT("Data")
|
|
#define AFPREG_VALNAME_LENGTH TEXT("Length")
|
|
#define AFPREG_VALNAME_CODEPAGE TEXT("MACCP")
|
|
#define AFPREG_VALNAME_CATSEARCH TEXT("DisableCatsearch")
|
|
|
|
// Limits on server parameters
|
|
|
|
#define AFP_MAX_ALLOWED_SRV_SESSIONS AFP_MAXSESSIONS
|
|
#define AFP_MIN_ALLOWED_PAGED_MEM 1000
|
|
#define AFP_MAX_ALLOWED_PAGED_MEM 256000
|
|
#define AFP_MIN_ALLOWED_NONPAGED_MEM 256
|
|
#define AFP_MAX_ALLOWED_NONPAGED_MEM 16000
|
|
|
|
// Server default parameter values
|
|
|
|
#define AFP_DEF_SRVOPTIONS (AFP_SRVROPT_GUESTLOGONALLOWED)
|
|
#define AFP_DEF_MAXSESSIONS AFP_MAXSESSIONS
|
|
#define AFP_DEF_TYPE TEXT("TEXT")
|
|
#define AFP_DEF_CREATOR TEXT("LMAN")
|
|
#define AFP_DEF_EXTENSION_W L"*"
|
|
#define AFP_DEF_EXTENSION_A "*"
|
|
#define AFP_DEF_TCID 0
|
|
#define AFP_DEF_MAXPAGEDMEM 20000
|
|
#define AFP_DEF_MAXNONPAGEDMEM 4000
|
|
#define AFP_DEF_CODEPAGE_PATH TEXT("C:\\NT\\SYSTEM32\\C_10000.NLS")
|
|
|
|
// Will be concatenated to the system path to form source path of volume icon
|
|
#define AFP_DEF_VOLICON_SRCNAME TEXT("\\SFMICON.VOL")
|
|
|
|
// Server options
|
|
|
|
#define AFP_SRVROPT_NONE 0x0000
|
|
#define AFP_SRVROPT_GUESTLOGONALLOWED 0x0001
|
|
#define AFP_SRVROPT_CLEARTEXTLOGONALLOWED 0x0002
|
|
#define AFP_SRVROPT_ALLOWSAVEDPASSWORD 0x0004
|
|
#define AFP_SRVROPT_STANDALONE 0x0008
|
|
#define AFP_SRVROPT_4GB_VOLUMES 0x0010
|
|
#define AFP_SRVROPT_MICROSOFT_UAM 0x0020
|
|
#define AFP_SRVROPT_NATIVEAPPLEUAM 0x0040
|
|
#define AFP_SRVROPT_ALL ( AFP_SRVROPT_GUESTLOGONALLOWED \
|
|
| AFP_SRVROPT_CLEARTEXTLOGONALLOWED \
|
|
| AFP_SRVROPT_ALLOWSAVEDPASSWORD \
|
|
| AFP_SRVROPT_4GB_VOLUMES \
|
|
| AFP_SRVROPT_MICROSOFT_UAM \
|
|
| AFP_SRVROPT_NATIVEAPPLEUAM \
|
|
| AFP_SRVROPT_STANDALONE )
|
|
|
|
// AFP Service default parameters
|
|
|
|
|
|
#define AFP_SERVER_PARMNUM_LOGINMSG 0x00000001
|
|
#define AFP_SERVER_PARMNUM_MAX_SESSIONS 0x00000002
|
|
#define AFP_SERVER_PARMNUM_OPTIONS 0x00000004
|
|
#define AFP_SERVER_PARMNUM_NAME 0x00000008
|
|
#define AFP_SERVER_PARMNUM_PAGEMEMLIM 0x00000010
|
|
#define AFP_SERVER_PARMNUM_NONPAGEMEMLIM 0x00000020
|
|
#define AFP_SERVER_PARMNUM_CODEPAGE 0x00000040
|
|
#define AFP_SERVER_GUEST_ACCT_NOTIFY 0x00000080
|
|
#define AFP_SERVER_PARMNUM_ALL ( AFP_SERVER_PARMNUM_LOGINMSG \
|
|
| AFP_SERVER_PARMNUM_MAX_SESSIONS \
|
|
| AFP_SERVER_PARMNUM_OPTIONS \
|
|
| AFP_SERVER_PARMNUM_NAME \
|
|
| AFP_SERVER_PARMNUM_PAGEMEMLIM \
|
|
| AFP_SERVER_PARMNUM_NONPAGEMEMLIM \
|
|
| AFP_SERVER_PARMNUM_CODEPAGE \
|
|
| AFP_SERVER_GUEST_ACCT_NOTIFY)
|
|
|
|
typedef struct _AFP_SERVER_INFO
|
|
{
|
|
LPWSTR afpsrv_name; // Macintosh name of the server
|
|
// max. AFP_SERVERNAME_LEN.
|
|
DWORD afpsrv_max_sessions; // Maximum simultaneous sessions
|
|
// In the range 1 - AFP_MAXSESSIONS.
|
|
// 0 is invalid
|
|
DWORD afpsrv_options; // Server Options
|
|
DWORD afpsrv_max_paged_mem; // Cap on paged memory usage
|
|
DWORD afpsrv_max_nonpaged_mem;// Cap on paged memory usage
|
|
LPWSTR afpsrv_login_msg; // NULL terminated UNICODE string.
|
|
// MAX AFP_MESSAGE_LEN chars.
|
|
// NULL => no login msg.
|
|
LPWSTR afpsrv_codepage; // NULL terminated UNICODE path
|
|
// NULL => no codepage path.
|
|
} AFP_SERVER_INFO, *PAFP_SERVER_INFO;
|
|
|
|
// Volume properties mask values. Values may be or'ed together.
|
|
// Volume flags with msk 0x0000001F are defined by the AFP specification.
|
|
// Do not overload these. Most of these values (except for READONLY above)
|
|
// are not exposed via admin apis.
|
|
#define AFP_VOLUME_READONLY 0x00000001
|
|
#define AFP_VOLUME_GUESTACCESS 0x00008000
|
|
#define AFP_VOLUME_EXCLUSIVE 0x00010000
|
|
#define AFP_VOLUME_HAS_CUSTOM_ICON 0x00020000
|
|
#define AFP_VOLUME_4GB 0x00040000
|
|
#define AFP_VOLUME_AGE_DFES 0x00080000
|
|
#define AFP_VOLUME_DISALLOW_CATSRCH 0x00100000
|
|
#define AFP_VOLUME_ALL_DOWNLEVEL (AFP_VOLUME_READONLY | \
|
|
AFP_VOLUME_GUESTACCESS)
|
|
#define AFP_VOLUME_ALL (AFP_VOLUME_READONLY | \
|
|
AFP_VOLUME_GUESTACCESS | \
|
|
AFP_VOLUME_EXCLUSIVE | \
|
|
AFP_VOLUME_HAS_CUSTOM_ICON | \
|
|
AFP_VOLUME_4GB | \
|
|
AFP_VOLUME_DISALLOW_CATSRCH | \
|
|
AFP_VOLUME_AGE_DFES)
|
|
|
|
#define AFP_VOLUME_UNLIMITED_USES 0xFFFFFFFF
|
|
|
|
// The following bits define the fields within the AFP_VOLUME_INFO
|
|
// structure whose values will be set.
|
|
//
|
|
#define AFP_VOL_PARMNUM_MAXUSES 0x00000002
|
|
#define AFP_VOL_PARMNUM_PROPSMASK 0x00000004
|
|
#define AFP_VOL_PARMNUM_PASSWORD 0x00000001
|
|
#define AFP_VOL_PARMNUM_ALL ( AFP_VOL_PARMNUM_PASSWORD \
|
|
| AFP_VOL_PARMNUM_MAXUSES \
|
|
| AFP_VOL_PARMNUM_PROPSMASK )
|
|
|
|
typedef struct _AFP_VOLUME_INFO
|
|
{
|
|
LPWSTR afpvol_name; // Name of the volume max.
|
|
DWORD afpvol_id; // id of this volume. generated by sever
|
|
LPWSTR afpvol_password; // Volume password, max. AFP_VOLPASS_LEN
|
|
DWORD afpvol_max_uses; // Max opens allowed
|
|
DWORD afpvol_props_mask; // Mask of volume properties
|
|
DWORD afpvol_curr_uses; // Number of curr open connections.
|
|
LPWSTR afpvol_path; // The actual path
|
|
// Ignored for VolumeSetInfo
|
|
} AFP_VOLUME_INFO, *PAFP_VOLUME_INFO;
|
|
|
|
typedef struct _AFP_SESSION_INFO
|
|
{
|
|
DWORD afpsess_id; // Id of the session
|
|
LPWSTR afpsess_ws_name; // Workstation Name,
|
|
LPWSTR afpsess_username; // User Name, max. UNLEN
|
|
DWORD afpsess_num_cons; // Number of open volumes
|
|
DWORD afpsess_num_opens; // Number of open files
|
|
LONG afpsess_time; // Time session established
|
|
DWORD afpsess_logon_type; // How the user logged on
|
|
|
|
} AFP_SESSION_INFO, *PAFP_SESSION_INFO;
|
|
|
|
// afpicon_type values
|
|
|
|
#define ICONTYPE_SRVR 0 // Large, monochrome
|
|
#define ICONTYPE_ICN 1 // Large. monochrome
|
|
#define ICONTYPE_ICS 2 // Small, monochrome
|
|
#define ICONTYPE_ICN4 3 // Large, 4 color
|
|
#define ICONTYPE_ICN8 4 // Large, 8 color
|
|
#define ICONTYPE_ICS4 5 // Small, 4 color
|
|
#define ICONTYPE_ICS8 6 // Small, 8 color
|
|
#define MAX_ICONTYPE 7
|
|
|
|
// afpicon_length values
|
|
|
|
#define ICONSIZE_ICN 256 // Large. monochrome
|
|
#define ICONSIZE_ICS 64 // Small, monochrome
|
|
#define ICONSIZE_ICN4 1024// Large, 4 color
|
|
#define ICONSIZE_ICN8 2048// Large, 8 color
|
|
#define ICONSIZE_ICS4 256 // Small, 4 color
|
|
#define ICONSIZE_ICS8 512 // Small, 8 color
|
|
|
|
typedef struct _AFP_ICON_INFO
|
|
{
|
|
WCHAR afpicon_type[AFP_TYPE_LEN+1]; // Resource Type
|
|
WCHAR afpicon_creator[AFP_CREATOR_LEN+1]; // Resource Creator
|
|
DWORD afpicon_icontype; // Icon type
|
|
DWORD afpicon_length; // Length of icon block
|
|
PBYTE afpicon_data; // The actual icon.
|
|
|
|
} AFP_ICON_INFO, *PAFP_ICON_INFO;
|
|
|
|
// The AfpAdminConnectionEnum Filter values
|
|
|
|
#define AFP_NO_FILTER 0
|
|
#define AFP_FILTER_ON_VOLUME_ID 1
|
|
#define AFP_FILTER_ON_SESSION_ID 2
|
|
|
|
typedef struct _AFP_CONNECTION_INFO
|
|
{
|
|
DWORD afpconn_id; // Connection Id
|
|
LPWSTR afpconn_username; // User who has this session open
|
|
// Max. UNLEN
|
|
LPWSTR afpconn_volumename; // Volume corresponding to this
|
|
// connection
|
|
ULONG afpconn_time; // Time since the vol was opened.(secs)
|
|
DWORD afpconn_num_opens; // Number of open resources
|
|
|
|
} AFP_CONNECTION_INFO, *PAFP_CONNECTION_INFO;
|
|
|
|
// Various File open modes
|
|
|
|
#define AFP_OPEN_MODE_NONE 0x00000000
|
|
#define AFP_OPEN_MODE_READ 0x00000001
|
|
#define AFP_OPEN_MODE_WRITE 0x00000002
|
|
|
|
// Fork type of an open file
|
|
#define AFP_FORK_DATA 0x00000000
|
|
#define AFP_FORK_RESOURCE 0x00000001
|
|
|
|
typedef struct _AFP_FILE_INFO
|
|
{
|
|
DWORD afpfile_id; // Id of the open file fork
|
|
DWORD afpfile_open_mode; // Mode in which file is opened
|
|
DWORD afpfile_num_locks; // Number of locks on the file
|
|
DWORD afpfile_fork_type; // Fork type
|
|
LPWSTR afpfile_username; // File opened by this user. max UNLEN
|
|
LPWSTR afpfile_path; // Absolute canonical path to the file
|
|
|
|
} AFP_FILE_INFO, *PAFP_FILE_INFO;
|
|
|
|
// The following bits define the permissions mask
|
|
// NOTE: These MUST be consistent with the AFP permissions
|
|
|
|
#define AFP_PERM_WORLD_SFO 0x00010000
|
|
#define AFP_PERM_WORLD_SFI 0x00020000
|
|
#define AFP_PERM_WORLD_MC 0x00040000
|
|
#define AFP_PERM_WORLD_MASK 0x00070000
|
|
#define AFP_PERM_GROUP_SFO 0x00000100
|
|
#define AFP_PERM_GROUP_SFI 0x00000200
|
|
#define AFP_PERM_GROUP_MC 0x00000400
|
|
#define AFP_PERM_GROUP_MASK 0x00000700
|
|
#define AFP_PERM_OWNER_SFO 0x00000001
|
|
#define AFP_PERM_OWNER_SFI 0x00000002
|
|
#define AFP_PERM_OWNER_MC 0x00000004
|
|
#define AFP_PERM_OWNER_MASK 0x00000007
|
|
#define AFP_PERM_INHIBIT_MOVE_DELETE 0x01000000
|
|
#define AFP_PERM_SET_SUBDIRS 0x02000000
|
|
|
|
|
|
// The following bits define the fields within the AFP_DIRECTORY_INFO
|
|
// structure whose values will be set.
|
|
//
|
|
#define AFP_DIR_PARMNUM_PERMS 0x00000001
|
|
#define AFP_DIR_PARMNUM_OWNER 0x00000002
|
|
#define AFP_DIR_PARMNUM_GROUP 0x00000004
|
|
#define AFP_DIR_PARMNUM_ALL ( AFP_DIR_PARMNUM_PERMS \
|
|
| AFP_DIR_PARMNUM_OWNER \
|
|
| AFP_DIR_PARMNUM_GROUP )
|
|
typedef struct _AFP_DIRECTORY_INFO
|
|
{
|
|
LPWSTR afpdir_path; // Absolute dir path,
|
|
DWORD afpdir_perms; // Directory permissions
|
|
LPWSTR afpdir_owner; // Directory owner, max. UNLEN
|
|
LPWSTR afpdir_group; // Group Association max. GNLEN
|
|
BOOLEAN afpdir_in_volume; // TRUE indicates that this directory
|
|
// is part of a volume, FALSE otherwise.
|
|
|
|
} AFP_DIRECTORY_INFO, *PAFP_DIRECTORY_INFO;
|
|
|
|
// The following bits define the fields within the AFP_FINDER_INFO
|
|
// structure whos values will be set
|
|
//
|
|
#define AFP_FD_PARMNUM_TYPE 0x00000001
|
|
#define AFP_FD_PARMNUM_CREATOR 0x00000002
|
|
#define AFP_FD_PARMNUM_ALL ( AFP_FD_PARMNUM_TYPE \
|
|
| AFP_FD_PARMNUM_CREATOR)
|
|
typedef struct _AFP_FINDER_INFO
|
|
{
|
|
LPWSTR afpfd_path; // Absolute file/dir path
|
|
WCHAR afpfd_type[AFP_TYPE_LEN+1]; // Finder type
|
|
WCHAR afpfd_creator[AFP_CREATOR_LEN+1]; // Finder creator
|
|
|
|
} AFP_FINDER_INFO, *PAFP_FINDER_INFO;
|
|
|
|
typedef struct _AFP_EXTENSION {
|
|
|
|
WCHAR afpe_extension[AFP_EXTENSION_LEN+1];
|
|
DWORD afpe_tcid;
|
|
|
|
} AFP_EXTENSION, *PAFP_EXTENSION;
|
|
|
|
typedef struct _AFP_TYPE_CREATOR
|
|
{
|
|
WCHAR afptc_creator[AFP_CREATOR_LEN+1]; // Resource Creator
|
|
WCHAR afptc_type[AFP_TYPE_LEN+1]; // Resource Type
|
|
WCHAR afptc_comment[AFP_ETC_COMMENT_LEN+1];
|
|
DWORD afptc_id;
|
|
|
|
} AFP_TYPE_CREATOR, *PAFP_TYPE_CREATOR;
|
|
|
|
typedef struct _AFP_MESSAGE_INFO
|
|
{
|
|
DWORD afpmsg_session_id; // Session Id of the user to which
|
|
// the message is to be sent.
|
|
LPWSTR afpmsg_text; // Must be at most AFP_MESSAGE_LEN
|
|
|
|
} AFP_MESSAGE_INFO, *PAFP_MESSAGE_INFO;
|
|
|
|
typedef struct _AFP_ETCMAP_INFO {
|
|
|
|
DWORD afpetc_num_type_creators;
|
|
|
|
#ifdef MIDL_PASS
|
|
[size_is(afpetc_num_type_creators)] PAFP_TYPE_CREATOR afpetc_type_creator;
|
|
#else
|
|
PAFP_TYPE_CREATOR afpetc_type_creator;
|
|
#endif
|
|
|
|
DWORD afpetc_num_extensions;
|
|
#ifdef MIDL_PASS
|
|
[size_is(afpetc_num_extensions)] PAFP_EXTENSION afpetc_extension;
|
|
#else
|
|
PAFP_EXTENSION afpetc_extension;
|
|
#endif
|
|
|
|
} AFP_ETCMAP_INFO, *PAFP_ETCMAP_INFO;
|
|
|
|
|
|
/* Our version of the AFP Function codes organized by class */
|
|
#define _AFP_INVALID_OPCODE 0x00
|
|
#define _AFP_UNSUPPORTED_OPCODE 0x01
|
|
|
|
#define _AFP_GET_SRVR_INFO 0x02 /* SERVER APIs */
|
|
#define _AFP_GET_SRVR_PARMS 0x03
|
|
#define _AFP_CHANGE_PASSWORD 0x04
|
|
#define _AFP_LOGIN 0x05
|
|
#define _AFP_LOGIN_CONT 0x06
|
|
#define _AFP_LOGOUT 0x07
|
|
#define _AFP_MAP_ID 0x08
|
|
#define _AFP_MAP_NAME 0x09
|
|
#define _AFP_GET_USER_INFO 0x0A
|
|
#define _AFP_GET_SRVR_MSG 0x0B
|
|
#define _AFP_GET_DOMAIN_LIST 0x0C
|
|
|
|
#define _AFP_OPEN_VOL 0x0D /* VOLUME APIs */
|
|
#define _AFP_CLOSE_VOL 0x0E
|
|
#define _AFP_GET_VOL_PARMS 0x0F
|
|
#define _AFP_SET_VOL_PARMS 0x10
|
|
#define _AFP_FLUSH 0x11
|
|
|
|
#define _AFP_GET_FILE_DIR_PARMS 0x12 /* FILE-DIRECTORY APIs */
|
|
#define _AFP_SET_FILE_DIR_PARMS 0x13
|
|
#define _AFP_DELETE 0x14
|
|
#define _AFP_RENAME 0x15
|
|
#define _AFP_MOVE_AND_RENAME 0x16
|
|
|
|
#define _AFP_OPEN_DIR 0x17 /* DIRECTORY APIs */
|
|
#define _AFP_CLOSE_DIR 0x18
|
|
#define _AFP_CREATE_DIR 0x19
|
|
#define _AFP_ENUMERATE 0x1A
|
|
#define _AFP_SET_DIR_PARMS 0x1B
|
|
|
|
#define _AFP_CREATE_FILE 0x1C /* FILE APIs */
|
|
#define _AFP_COPY_FILE 0x1D
|
|
#define _AFP_CREATE_ID 0x1E
|
|
#define _AFP_DELETE_ID 0x1F
|
|
#define _AFP_RESOLVE_ID 0x20
|
|
#define _AFP_SET_FILE_PARMS 0x21
|
|
#define _AFP_EXCHANGE_FILES 0x22
|
|
|
|
#define _AFP_OPEN_FORK 0x23 /* FORK APIs */
|
|
#define _AFP_CLOSE_FORK 0x24
|
|
#define _AFP_FLUSH_FORK 0x25
|
|
#define _AFP_READ 0x26
|
|
#define _AFP_WRITE 0x27
|
|
#define _AFP_BYTE_RANGE_LOCK 0x28
|
|
#define _AFP_GET_FORK_PARMS 0x29
|
|
#define _AFP_SET_FORK_PARMS 0x2A
|
|
|
|
#define _AFP_OPEN_DT 0x2B /* DESKTOP APIs */
|
|
#define _AFP_CLOSE_DT 0x2C
|
|
#define _AFP_ADD_APPL 0x2D
|
|
#define _AFP_GET_APPL 0x2E
|
|
#define _AFP_REMOVE_APPL 0x2F
|
|
#define _AFP_ADD_COMMENT 0x30
|
|
#define _AFP_GET_COMMENT 0x31
|
|
#define _AFP_REMOVE_COMMENT 0x32
|
|
#define _AFP_ADD_ICON 0x33
|
|
#define _AFP_GET_ICON 0x34
|
|
#define _AFP_GET_ICON_INFO 0x35
|
|
|
|
#define _AFP_CAT_SEARCH 0x36
|
|
#define _AFP_MAX_ENTRIES 0x38 /* Keep it even */
|
|
|
|
typedef struct _AFP_STATISTICS_INFO
|
|
{
|
|
DWORD stat_ServerStartTime; // Server start time
|
|
DWORD stat_TimeStamp; // Statistics collected since
|
|
DWORD stat_Errors; // Unexpected Errors
|
|
DWORD stat_MaxSessions; // Max. sessions active simulataneously
|
|
DWORD stat_TotalSessions; // Total number of sessions created
|
|
DWORD stat_CurrentSessions; // Number of sessions active now
|
|
DWORD stat_NumAdminReqs; // Total number of admin requests
|
|
DWORD stat_NumAdminChanges; // Number of admin reqs causing change
|
|
// The file statistics are actually fork statistics i.e. opening both the
|
|
// data and the resource forks will yield a count of TWO
|
|
DWORD stat_MaxFilesOpened; // Max. files opened simulataneously
|
|
DWORD stat_TotalFilesOpened; // Total number of files opened
|
|
DWORD stat_CurrentFilesOpen; // Number of files open now
|
|
DWORD stat_CurrentFileLocks; // Current count of locks
|
|
DWORD stat_NumFailedLogins; // Number of unsuccessful logins
|
|
DWORD stat_NumForcedLogoffs; // Number of sessions kicked out
|
|
DWORD stat_NumMessagesSent; // Number of messages sent out
|
|
DWORD stat_MaxNonPagedUsage; // High-water mark of the non-paged
|
|
// memory usage
|
|
DWORD stat_CurrNonPagedUsage; // Amount of non-paged memory in use
|
|
DWORD stat_MaxPagedUsage; // High-water mark of the paged
|
|
// memory usage
|
|
DWORD stat_CurrPagedUsage; // Amount of paged memory in use
|
|
} AFP_STATISTICS_INFO, *PAFP_STATISTICS_INFO;
|
|
|
|
typedef struct _AFP_STATISTICS_INFO_EX
|
|
{
|
|
DWORD stat_ServerStartTime; // Server start time
|
|
DWORD stat_TimeStamp; // Statistics collected since
|
|
DWORD stat_Errors; // Unexpected Errors
|
|
|
|
DWORD stat_MaxSessions; // Max. sessions active simulataneously
|
|
DWORD stat_TotalSessions; // Total number of sessions created
|
|
DWORD stat_CurrentSessions; // Number of sessions active now
|
|
|
|
DWORD stat_NumAdminReqs; // Total number of admin requests
|
|
DWORD stat_NumAdminChanges; // Number of admin reqs causing change
|
|
|
|
// The file statistics are actually fork statistics i.e. opening both the
|
|
// data and the resource forks will yield a count of TWO
|
|
DWORD stat_MaxFilesOpened; // Max. files opened simulataneously
|
|
DWORD stat_TotalFilesOpened; // Total number of files opened
|
|
DWORD stat_CurrentFilesOpen; // Number of files open now
|
|
DWORD stat_CurrentFileLocks; // Current count of locks
|
|
|
|
DWORD stat_NumFailedLogins; // Number of unsuccessful logins
|
|
DWORD stat_NumForcedLogoffs; // Number of sessions kicked out
|
|
DWORD stat_NumMessagesSent; // Number of messages sent out
|
|
|
|
DWORD stat_MaxNonPagedUsage; // High-water mark of the non-paged
|
|
// memory usage
|
|
DWORD stat_CurrNonPagedUsage; // Amount of non-paged memory in use
|
|
DWORD stat_MaxPagedUsage; // High-water mark of the paged
|
|
// memory usage
|
|
DWORD stat_CurrPagedUsage; // Amount of paged memory in use
|
|
|
|
// NOTE: MAKE SURE THE STRUCTURE ABOVE THIS LINE MATCHES EXACTLY THE AFP_STATISTICS_INFO
|
|
|
|
DWORD stat_PagedCount; // Number of current allocations
|
|
DWORD stat_NonPagedCount; // Number of current allocations
|
|
|
|
DWORD stat_EnumCacheHits; // # of times cache was hit
|
|
DWORD stat_EnumCacheMisses; // # of times cache was missed
|
|
DWORD stat_IoPoolHits; // # of times Io Pool was hit
|
|
DWORD stat_IoPoolMisses; // # of times Io Pool was missed
|
|
|
|
DWORD stat_MaxInternalOpens; // Max # of internal opens
|
|
DWORD stat_TotalInternalOpens;// Total # of internal opens
|
|
DWORD stat_CurrentInternalOpens;// Current # of internal opens
|
|
|
|
|
|
DWORD stat_CurrQueueLength; // # of requests in the queue
|
|
DWORD stat_MaxQueueLength; // Max # of requests in the queue
|
|
DWORD stat_CurrThreadCount; // # of worker threads active
|
|
DWORD stat_MaxThreadCount; // Max # of worker threads active
|
|
|
|
// Make sure the following is Quadword aligned for efficiency
|
|
LARGE_INTEGER stat_DataRead; // Amount of data read (disk)
|
|
LARGE_INTEGER stat_DataWritten; // Amount of data written (disk)
|
|
LARGE_INTEGER stat_DataReadInternal; // Amount of data read (disk)
|
|
LARGE_INTEGER stat_DataWrittenInternal;// Amount of data written (disk)
|
|
LARGE_INTEGER stat_DataOut; // Amount of data sent out (wire)
|
|
LARGE_INTEGER stat_DataIn; // Amount of data read in (wire)
|
|
DWORD stat_TcpSessions; // TCP sessions currently active
|
|
DWORD stat_MaxTcpSessions; // Max TCP Sessions active simultaneously
|
|
|
|
} AFP_STATISTICS_INFO_EX, *PAFP_STATISTICS_INFO_EX;
|
|
|
|
typedef struct _AFP_PROFILE_INFO
|
|
{
|
|
DWORD perf_ApiCounts[_AFP_MAX_ENTRIES];
|
|
// # of times each Api is called
|
|
LARGE_INTEGER perf_ApiCumTimes[_AFP_MAX_ENTRIES];
|
|
// Cummulative time spent in Apis
|
|
LARGE_INTEGER perf_ApiWorstTime[_AFP_MAX_ENTRIES];
|
|
// Worst time for an api
|
|
LARGE_INTEGER perf_ApiBestTime[_AFP_MAX_ENTRIES];
|
|
// Best time for an api
|
|
LARGE_INTEGER perf_OpenTimeRA; // Time spent in NtOpenFile for ReadAttr
|
|
LARGE_INTEGER perf_OpenTimeRC; // Time spent in NtOpenFile for ReadControl
|
|
LARGE_INTEGER perf_OpenTimeWC; // Time spent in NtOpenFile for WriteControl
|
|
LARGE_INTEGER perf_OpenTimeRW; // Time spent in NtOpenFile for Read/Write
|
|
LARGE_INTEGER perf_OpenTimeDL; // Time spent in NtOpenFile for Delete
|
|
LARGE_INTEGER perf_OpenTimeDR; // Time spent in NtOpenFile for Directories
|
|
LARGE_INTEGER perf_CreateTimeFIL; // Time spent in NtCreateFile for file/data stream
|
|
LARGE_INTEGER perf_CreateTimeSTR; // Time spent in NtCreateFile for file/other streams
|
|
LARGE_INTEGER perf_CreateTimeDIR; // Time spent in NtCreateFile for dir/data stream
|
|
LARGE_INTEGER perf_CloseTime; // Time spent in NtClose
|
|
LARGE_INTEGER perf_DeleteTime; // Time spent in NtSetInformationFile
|
|
LARGE_INTEGER perf_GetInfoTime; // Time spent in NtQueryInformationFile
|
|
LARGE_INTEGER perf_SetInfoTime; // Time spent in NtSetInformationFile
|
|
LARGE_INTEGER perf_GetPermsTime; // Time spent on getting permissions
|
|
LARGE_INTEGER perf_SetPermsTime; // Time spent on setting permissions
|
|
LARGE_INTEGER perf_PathMapTime; // Time spent in pathmap code
|
|
LARGE_INTEGER perf_ScavengerTime; // Time spent in scavenger
|
|
LARGE_INTEGER perf_IdIndexUpdTime; // Time spent updating idindex
|
|
LARGE_INTEGER perf_DesktopUpdTime; // Time spent updating desktop
|
|
LARGE_INTEGER perf_SwmrWaitTime; // Time spent waiting for Swmr
|
|
LARGE_INTEGER perf_SwmrLockTimeR; // Time swmr was locked for read
|
|
LARGE_INTEGER perf_SwmrLockTimeW; // Time swmr was locked for write
|
|
LARGE_INTEGER perf_QueueTime; // Time Apis spent in queue
|
|
LARGE_INTEGER perf_UnmarshallTime; // Time spent in un-marshalling a request
|
|
LARGE_INTEGER perf_InterReqTime; // Time elapse between subsequent requests
|
|
LARGE_INTEGER perf_ExAllocTimeN; // Time spent in ExAllocatePool (NonPaged)
|
|
LARGE_INTEGER perf_ExFreeTimeN; // Time spent in ExFreePool (NonPaged)
|
|
LARGE_INTEGER perf_ExAllocTimeP; // Time spent in ExAllocatePool (Paged)
|
|
LARGE_INTEGER perf_ExFreeTimeP; // Time spent in ExFreePool (Paged)
|
|
LARGE_INTEGER perf_AfpAllocTimeN; // Time spent in AfpAllocateMemory (NonPaged)
|
|
LARGE_INTEGER perf_AfpFreeTimeN; // Time spent in AfpFreeMemory (NonPaged)
|
|
LARGE_INTEGER perf_AfpAllocTimeP; // Time spent in AfpAllocateMemory (Paged)
|
|
LARGE_INTEGER perf_AfpFreeTimeP; // Time spent in AfpFreeMemory (Paged)
|
|
LARGE_INTEGER perf_BPAllocTime; // Time spent in BP Alloc
|
|
LARGE_INTEGER perf_BPFreeTime; // Time spent in BP Free
|
|
LARGE_INTEGER perf_DFEAllocTime; // Time spent in allocating a DFE
|
|
LARGE_INTEGER perf_DFEFreeTime; // Time spent in freeing a DFE
|
|
LARGE_INTEGER perf_ChangeNotifyTime; // Time spent processing change notifies
|
|
LARGE_INTEGER perf_ScanTreeTime; // Time spent in scanning a directory tree
|
|
LARGE_INTEGER perf_PerfFreq; // Perf. counter frequency
|
|
DWORD perf_NumFastIoSucceeded;// Fast IO success count
|
|
DWORD perf_NumFastIoFailed; // Fast Io failure count
|
|
DWORD perf_OpenCountRA; // # of times NtOpenFile called for ReadAttr
|
|
DWORD perf_OpenCountRC; // # of times NtOpenFile called for ReadControl
|
|
DWORD perf_OpenCountWC; // # of times NtOpenFile called for WriteControl
|
|
DWORD perf_OpenCountRW; // # of times NtOpenFile called for Read/Write
|
|
DWORD perf_OpenCountDL; // # of times NtOpenFile called for Delete
|
|
DWORD perf_OpenCountDR; // # of times NtOpenFile called for Directories
|
|
DWORD perf_CreateCountFIL; // # of times NtCreateFile called - file/data
|
|
DWORD perf_CreateCountSTR; // # of times NtCreateFile called - file/other
|
|
DWORD perf_CreateCountDIR; // # of times NtCreateFile called - dir/data
|
|
DWORD perf_CloseCount; // # of times NtClose called
|
|
DWORD perf_DeleteCount; // # of times NtSetInformationFile called
|
|
DWORD perf_GetInfoCount; // # of times NtQueryInformationFile called
|
|
DWORD perf_SetInfoCount; // # of times NtSetInformationFile called
|
|
DWORD perf_GetPermsCount; // # of times Get permissions called
|
|
DWORD perf_SetPermsCount; // # of times Get permissions called
|
|
DWORD perf_PathMapCount; // # of times PathMap was invoked
|
|
DWORD perf_ScavengerCount; // # of times scavenger was scheduled
|
|
DWORD perf_IdIndexUpdCount; // # of times idindex was updated
|
|
DWORD perf_DesktopUpdCount; // # of times desktop was updated
|
|
DWORD perf_SwmrWaitCount; // # of times swmr access was blocked
|
|
DWORD perf_SwmrLockCountR; // # of times swmr was locked for read
|
|
DWORD perf_SwmrLockCountW; // # of times swmr was locked for write
|
|
DWORD perf_SwmrUpgradeCount; // # of times swmr was upgraded
|
|
DWORD perf_SwmrDowngradeCount;// # of times swmr was downgraded
|
|
DWORD perf_QueueCount; // # of times worker was queued
|
|
DWORD perf_UnmarshallCount; // # of times api unmarshalling done
|
|
DWORD perf_ReqCount; // # of apis - this is essentially total of perf_ApiCounts[i]
|
|
DWORD perf_ExAllocCountN; // # of times in ExAllocatePool (NonPaged) called
|
|
DWORD perf_ExFreeCountN; // # of times in ExFreePool (NonPaged) called
|
|
DWORD perf_ExAllocCountP; // # of times in ExAllocatePool (Paged) called
|
|
DWORD perf_ExFreeCountP; // # of times in ExFreePool (Paged) called
|
|
DWORD perf_AfpAllocCountN; // # of times in AfpAllocateMemory (NonPaged) called
|
|
DWORD perf_AfpFreeCountN; // # of times in AfpFreeMemory (NonPaged) called
|
|
DWORD perf_AfpAllocCountP; // # of times in AfpAllocateMemory (Paged) called
|
|
DWORD perf_AfpFreeCountP; // # of times in AfpFreeMemory (Paged) called
|
|
DWORD perf_BPAllocCount; // # of times in BP Alloc called
|
|
DWORD perf_BPFreeCount; // # of times in BP Free called
|
|
DWORD perf_BPAgeCount; // # of times in BP aged out
|
|
DWORD perf_DFEAllocCount; // # of times in a DFE is allocated
|
|
DWORD perf_DFEFreeCount; // # of times in a DFE is freed
|
|
DWORD perf_DFEAgeCount; // # of times in DFE aged out
|
|
DWORD perf_ChangeNotifyCount; // # of times ChangeNotify called
|
|
DWORD perf_ScanTreeCount; // # of items scanned during scantree
|
|
DWORD perf_NumDfeLookupByName;// # of times DFE lookup by Name was called
|
|
DWORD perf_NumDfeLookupById; // # of times DFE lookup by Id was called
|
|
DWORD perf_DfeDepthTraversed; // How deep in the hash buckets did we go
|
|
DWORD perf_DfeCacheHits; // # of times DFE cache was hit
|
|
DWORD perf_DfeCacheMisses; // # of times DFE cache was missed
|
|
DWORD perf_MaxDfrdReqCount; // Current # of request deferred
|
|
DWORD perf_CurDfrdReqCount; // Max # of request deferred
|
|
DWORD perf_cAllocatedIrps; // Total # of Irps allocated
|
|
DWORD perf_cAllocatedMdls; // Total # of Mdls allocated
|
|
} AFP_PROFILE_INFO, *PAFP_PROFILE_INFO;
|
|
|
|
|
|
// AfpAdminXXX API prototypes
|
|
//
|
|
DWORD
|
|
AfpAdminConnect(
|
|
IN LPWSTR lpwsServerName,
|
|
OUT PAFP_SERVER_HANDLE phAfpServer
|
|
);
|
|
|
|
VOID
|
|
AfpAdminDisconnect(
|
|
IN AFP_SERVER_HANDLE hAfpServer
|
|
);
|
|
|
|
VOID
|
|
AfpAdminBufferFree(
|
|
IN PVOID pBuffer
|
|
);
|
|
|
|
DWORD
|
|
AfpAdminVolumeEnum(
|
|
IN AFP_SERVER_HANDLE hAfpServer,
|
|
OUT LPBYTE * lpbBuffer,
|
|
IN DWORD dwPrefMaxLen,
|
|
OUT LPDWORD lpdwEntriesRead,
|
|
OUT LPDWORD lpdwTotalEntries,
|
|
IN LPDWORD lpdwResumeHandle
|
|
);
|
|
|
|
DWORD
|
|
AfpAdminVolumeSetInfo (
|
|
IN AFP_SERVER_HANDLE hAfpServer,
|
|
IN LPBYTE pBuffer,
|
|
IN DWORD dwParmNum
|
|
);
|
|
|
|
DWORD
|
|
AfpAdminVolumeGetInfo (
|
|
IN AFP_SERVER_HANDLE hAfpServer,
|
|
IN LPWSTR lpwsVolumeName,
|
|
OUT LPBYTE * lpbBuffer
|
|
);
|
|
|
|
|
|
DWORD
|
|
AfpAdminVolumeDelete(
|
|
IN AFP_SERVER_HANDLE hAfpServer,
|
|
IN LPWSTR lpwsVolumeName
|
|
);
|
|
|
|
DWORD
|
|
AfpAdminVolumeAdd(
|
|
IN AFP_SERVER_HANDLE hAfpServer,
|
|
IN LPBYTE pBuffer
|
|
);
|
|
|
|
DWORD
|
|
AfpAdminInvalidVolumeEnum(
|
|
IN AFP_SERVER_HANDLE hAfpServer,
|
|
OUT LPBYTE * lpbBuffer,
|
|
OUT LPDWORD lpdwEntriesRead
|
|
);
|
|
|
|
DWORD
|
|
AfpAdminInvalidVolumeDelete(
|
|
IN AFP_SERVER_HANDLE hAfpServer,
|
|
IN LPWSTR lpwsVolumeName
|
|
);
|
|
|
|
DWORD
|
|
AfpAdminDirectoryGetInfo(
|
|
IN AFP_SERVER_HANDLE hAfpServer,
|
|
IN LPWSTR lpwsPath,
|
|
OUT LPBYTE *ppAfpDirectoryInfo
|
|
);
|
|
|
|
DWORD
|
|
AfpAdminDirectorySetInfo(
|
|
IN AFP_SERVER_HANDLE hAfpServer,
|
|
IN LPBYTE pAfpDirectoryInfo,
|
|
IN DWORD dwParmNum
|
|
);
|
|
|
|
DWORD
|
|
AfpAdminServerGetInfo(
|
|
IN AFP_SERVER_HANDLE hAfpServer,
|
|
OUT LPBYTE *ppAfpServerInfo
|
|
);
|
|
|
|
DWORD
|
|
AfpAdminServerSetInfo(
|
|
IN AFP_SERVER_HANDLE hAfpServer,
|
|
IN LPBYTE pAfpServerInfo,
|
|
IN DWORD dwParmNum
|
|
);
|
|
|
|
DWORD
|
|
AfpAdminSessionEnum(
|
|
IN AFP_SERVER_HANDLE hAfpServer,
|
|
OUT LPBYTE * lpbBuffer,
|
|
IN DWORD dwPrefMaxLen,
|
|
OUT LPDWORD lpdwEntriesRead,
|
|
OUT LPDWORD lpdwTotalEntries,
|
|
IN LPDWORD lpdwResumeHandle
|
|
);
|
|
|
|
DWORD
|
|
AfpAdminSessionClose(
|
|
IN AFP_SERVER_HANDLE hAfpServer,
|
|
IN DWORD dwSessionId
|
|
);
|
|
|
|
DWORD
|
|
AfpAdminConnectionEnum(
|
|
IN AFP_SERVER_HANDLE hAfpServer,
|
|
OUT LPBYTE * lpbBuffer,
|
|
IN DWORD dwFilter,
|
|
IN DWORD dwId,
|
|
IN DWORD dwPrefMaxLen,
|
|
OUT LPDWORD lpdwEntriesRead,
|
|
OUT LPDWORD lpdwTotalEntries,
|
|
IN LPDWORD lpdwResumeHandle
|
|
);
|
|
|
|
DWORD
|
|
AfpAdminConnectionClose(
|
|
IN AFP_SERVER_HANDLE hAfpServer,
|
|
IN DWORD dwConnectionId
|
|
);
|
|
|
|
DWORD
|
|
AfpAdminFileEnum(
|
|
IN AFP_SERVER_HANDLE hAfpServer,
|
|
OUT LPBYTE * lpbBuffer,
|
|
IN DWORD dwPrefMaxLen,
|
|
OUT LPDWORD lpdwEntriesRead,
|
|
OUT LPDWORD lpdwTotalEntries,
|
|
IN LPDWORD lpdwResumeHandle
|
|
);
|
|
|
|
DWORD
|
|
AfpAdminFileClose(
|
|
IN AFP_SERVER_HANDLE hAfpServer,
|
|
IN DWORD dwConnectionId
|
|
);
|
|
|
|
DWORD
|
|
AfpAdminETCMapGetInfo(
|
|
IN AFP_SERVER_HANDLE hAfpServer,
|
|
OUT LPBYTE * ppbBuffer
|
|
);
|
|
|
|
DWORD
|
|
AfpAdminETCMapAdd(
|
|
IN AFP_SERVER_HANDLE hAfpServer,
|
|
IN PAFP_TYPE_CREATOR pAfpTypeCreator
|
|
);
|
|
|
|
DWORD
|
|
AfpAdminETCMapDelete(
|
|
IN AFP_SERVER_HANDLE hAfpServer,
|
|
IN PAFP_TYPE_CREATOR pAfpTypeCreator
|
|
);
|
|
|
|
DWORD
|
|
AfpAdminETCMapSetInfo(
|
|
IN AFP_SERVER_HANDLE hAfpServer,
|
|
IN PAFP_TYPE_CREATOR pAfpTypeCreator
|
|
);
|
|
|
|
DWORD
|
|
AfpAdminETCMapAssociate(
|
|
IN AFP_SERVER_HANDLE hAfpServer,
|
|
IN PAFP_TYPE_CREATOR pAfpTypeCreator,
|
|
IN PAFP_EXTENSION pAfpExtension
|
|
);
|
|
|
|
DWORD
|
|
AfpAdminMessageSend(
|
|
IN AFP_SERVER_HANDLE hAfpServer,
|
|
IN PAFP_MESSAGE_INFO pAfpMessage
|
|
);
|
|
|
|
DWORD
|
|
AfpAdminStatisticsGet(
|
|
IN AFP_SERVER_HANDLE hAfpServer,
|
|
OUT LPBYTE * ppbBuffer
|
|
);
|
|
|
|
DWORD
|
|
AfpAdminStatisticsGetEx(
|
|
IN AFP_SERVER_HANDLE hAfpServer,
|
|
OUT LPBYTE * ppbBuffer
|
|
);
|
|
|
|
DWORD
|
|
AfpAdminStatisticsClear(
|
|
IN AFP_SERVER_HANDLE hAfpServer
|
|
);
|
|
|
|
DWORD
|
|
AfpAdminProfileGet(
|
|
IN AFP_SERVER_HANDLE hAfpServer,
|
|
OUT LPBYTE * ppbBuffer
|
|
);
|
|
|
|
DWORD
|
|
AfpAdminProfileClear(
|
|
IN AFP_SERVER_HANDLE hAfpServer
|
|
);
|
|
|
|
DWORD
|
|
AfpAdminFinderSetInfo(
|
|
IN AFP_SERVER_HANDLE hAfpServer,
|
|
IN LPWSTR pType,
|
|
IN LPWSTR pCreator,
|
|
IN LPWSTR pData,
|
|
IN LPWSTR pResource,
|
|
IN LPWSTR pTarget,
|
|
IN DWORD dwParmNum
|
|
);
|
|
|
|
#endif // _MACFILE_
|