|
|
/*++
Copyright (c) 1989 Microsoft Corporation
Module Name:
fsd.c
Abstract:
This module implements the File System pageable data. It is here because of the restrictions on pageable code and data in a single module.
Author:
Jameel Hyder (microsoft!jameelh)
Revision History: 10 Nov 1993 Initial Version
--*/
#define FILENUM FILE_FSDDATA
#define SERVER_LOCALS
#include <afp.h>
#define AFPADMIN_LOCALS
#include <afpadmin.h>
#include <scavengr.h>
#include <access.h>
#include <secutil.h>
#ifdef ALLOC_DATA_PRAGMA
#pragma data_seg("PAGE")
#endif
INIT_SYSTEMS AfpInitSubSystems[NUM_INIT_SYSTEMS] = { { AfpMacAnsiInit, AfpMacAnsiDeInit, #if DBG
False, False ,"AfpMacAnsiInit", "AfpMacAnsiDeInit" #endif
}, { AfpFileIoInit, NULL, #if DBG
False, False ,"AfpFileIoInit", NULL #endif
}, { AfpSdaInit, NULL, #if DBG
False, False ,"AfpSdaInit", NULL #endif
}, { AfpVolumeInit, NULL, #if DBG
False, False ,"AfpVolumeInit", NULL, #endif
}, { AfpForksInit, NULL, #if DBG
False, False ,"AfpForksInit", NULL, #endif
}, { AfpDesktopInit, NULL, #if DBG
False, False ,"AfpDesktopInit", NULL, #endif
}, { AfpScavengerInit, AfpScavengerDeInit, #if DBG
False, False ,"AfpScavengerInit","AfpScavengerDeInit" #endif
}, { AfpSecUtilInit, AfpSecUtilDeInit, #if DBG
False, False ,"AfpInitSecUtil", "AfpSecUtilDeInit" #endif
},
// The following should happen after the scavenger is initialized
{ AfpMemoryInit, AfpMemoryDeInit, #if DBG
False, False ,"AfpMemoryDeInit", "AfpMemoryDeInit" #endif
}, { NULL, AfpAdminDeInit, #if DBG
False, False ,NULL, "AfpAdminDeInit" #endif
}, { AfpDfeInit, AfpDfeDeInit, #if DBG
False, False ,"AfpDfeInit", "AfpDfeDeInit" #endif
} };
// This table is tightly linked to the opcode definitions in H\ADMIN.H
ADMIN_DISPATCH_TABLE AfpAdminDispatchTable[CC_BASE_MAX] = { { 0, 0, True, OP_SERVICE_START, NULL, AfpAdmServiceStart, { { DESC_NONE, 0 }, { DESC_NONE, 0 }, { DESC_NONE, 0 } } }, { 0, 0, True, OP_SERVICE_STOP, NULL, AfpAdmServiceStop, { { DESC_NONE, 0 }, { DESC_NONE, 0 }, { DESC_NONE, 0 } } }, { 0, 0, True, OP_SERVICE_PAUSE, NULL, AfpAdmServicePause, { { DESC_NONE, 0 }, { DESC_NONE, 0 }, { DESC_NONE, 0 } } }, { 0, 0, True, OP_SERVICE_CONTINUE, NULL, AfpAdmServiceContinue, { { DESC_NONE, 0 }, { DESC_NONE, 0 }, { DESC_NONE, 0 } } }, { sizeof(AFP_STATISTICS_INFO), 0, False, OP_GET_STATISTICS, AfpAdmGetStatistics, NULL, { { DESC_NONE, 0 }, { DESC_NONE, 0 }, { DESC_NONE, 0 } } }, { sizeof(AFP_STATISTICS_INFO_EX), 0, False, OP_GET_STATISTICS_EX, AfpAdmGetStatisticsEx, NULL, { { DESC_NONE, 0 }, { DESC_NONE, 0 }, { DESC_NONE, 0 } } }, { 0, 0, False, OP_CLEAR_STATISTICS, AfpAdmClearStatistics, NULL, { { DESC_NONE, 0 }, { DESC_NONE, 0 }, { DESC_NONE, 0 } } }, { sizeof(AFP_PROFILE_INFO), 0, False, OP_GET_PROF_COUNTERS, AfpAdmGetProfCounters, NULL, { { DESC_NONE, 0 }, { DESC_NONE, 0 }, { DESC_NONE, 0 } } }, { 0, 0, False, OP_CLEAR_PROF_COUNTERS, AfpAdmClearProfCounters, NULL, { { DESC_NONE, 0 }, { DESC_NONE, 0 }, { DESC_NONE, 0 } } }, { sizeof(AFP_SID_OFFSET_DESC), 0, True, OP_SERVER_ADD_SID_OFFSETS, AfpAdmServerSetParms, NULL, { { DESC_SPECIAL, 0 }, { DESC_NONE, 0 }, { DESC_NONE, 0 } } }, { 0, 0, False, OP_SERVER_GET_INFO, AfpAdmServerGetInfo, NULL, { { DESC_NONE, 0 }, { DESC_NONE, 0 }, { DESC_NONE, 0 } } }, { sizeof(AFP_SERVER_INFO), sizeof(SETINFOREQPKT), True, OP_SERVER_SET_INFO, NULL, AfpAdmWServerSetInfo, { { DESC_STRING, sizeof(SETINFOREQPKT) + FIELD_OFFSET(AFP_SERVER_INFO, afpsrv_name) }, { DESC_STRING, sizeof(SETINFOREQPKT) + FIELD_OFFSET(AFP_SERVER_INFO, afpsrv_login_msg) }, { DESC_STRING, sizeof(SETINFOREQPKT) + FIELD_OFFSET(AFP_SERVER_INFO, afpsrv_codepage) }, } }, { sizeof(SRVETCPKT), 0, True, OP_SERVER_ADD_ETC, AfpAdmServerAddEtc, NULL, { { DESC_ETC, FIELD_OFFSET(SRVETCPKT, retc_NumEtcMaps) }, { DESC_NONE, 0 }, { DESC_NONE, 0 } } }, { sizeof(ETCMAPINFO), sizeof(SETINFOREQPKT), True, OP_SERVER_SET_ETC, AfpAdmServerSetEtc, NULL, { { DESC_NONE, 0 }, { DESC_NONE, 0 }, { DESC_NONE, 0 } } }, { sizeof(ETCMAPINFO), 0, True, OP_SERVER_DELETE_ETC, AfpAdmServerDeleteEtc, NULL, { { DESC_NONE, 0 }, { DESC_NONE, 0 }, { DESC_NONE, 0 } } }, { sizeof(SRVICONINFO), 0, True, OP_SERVER_ADD_ICON, AfpAdmServerAddIcon, NULL, { { DESC_ICON, FIELD_OFFSET(SRVICONINFO, icon_length) }, { DESC_NONE, 0 }, { DESC_NONE, 0 } } }, { sizeof(AFP_VOLUME_INFO), 0, True, OP_VOLUME_ADD, AfpAdmVolumeAdd, AfpAdmWVolumeAdd, { { DESC_STRING, FIELD_OFFSET(AFP_VOLUME_INFO, afpvol_name) }, { DESC_STRING, FIELD_OFFSET(AFP_VOLUME_INFO, afpvol_password) }, { DESC_STRING, FIELD_OFFSET(AFP_VOLUME_INFO, afpvol_path) } } }, { sizeof(AFP_VOLUME_INFO), 0, True, OP_VOLUME_DELETE, NULL, AfpAdmWVolumeDelete, { { DESC_STRING, FIELD_OFFSET(AFP_VOLUME_INFO, afpvol_name) }, { DESC_STRING, FIELD_OFFSET(AFP_VOLUME_INFO, afpvol_password) }, { DESC_STRING, FIELD_OFFSET(AFP_VOLUME_INFO, afpvol_path) } } }, { sizeof(AFP_VOLUME_INFO), 0, False, OP_VOLUME_GET_INFO, AfpAdmVolumeGetInfo, NULL, { { DESC_STRING, FIELD_OFFSET(AFP_VOLUME_INFO, afpvol_name) }, { DESC_NONE, 0 }, { DESC_NONE, 0 } } }, { sizeof(SETINFOREQPKT) + sizeof(AFP_VOLUME_INFO), sizeof(SETINFOREQPKT), True, OP_VOLUME_SET_INFO, AfpAdmVolumeSetInfo, NULL, { { DESC_STRING, sizeof(SETINFOREQPKT) + FIELD_OFFSET(AFP_VOLUME_INFO, afpvol_name) }, { DESC_STRING, sizeof(SETINFOREQPKT) + FIELD_OFFSET(AFP_VOLUME_INFO, afpvol_password) }, { DESC_STRING, sizeof(SETINFOREQPKT) + FIELD_OFFSET(AFP_VOLUME_INFO, afpvol_path) } } }, { sizeof(ENUMREQPKT), 0, False, OP_VOLUME_ENUM, AfpAdmVolumeEnum, NULL, { { DESC_NONE, 0 }, { DESC_NONE, 0 }, { DESC_NONE, 0 } } }, { sizeof(ENUMREQPKT), 0, False, OP_SESSION_ENUM, AfpAdmSessionEnum, NULL, { { DESC_NONE, 0 }, { DESC_NONE, 0 }, { DESC_NONE, 0 } } }, { sizeof(AFP_SESSION_INFO), 0, True, OP_SESSION_CLOSE, NULL, AfpAdmWSessionClose, { { DESC_NONE, 0 }, { DESC_NONE, 0 }, { DESC_NONE, 0 } } }, { sizeof(ENUMREQPKT), 0, False, OP_CONNECTION_ENUM, AfpAdmConnectionEnum, NULL, { { DESC_NONE, 0 }, { DESC_NONE, 0 }, { DESC_NONE, 0 } } }, { sizeof(ENUMREQPKT), 0, True, OP_CONNECTION_CLOSE, NULL, AfpAdmWConnectionClose, { { DESC_NONE, 0 }, { DESC_NONE, 0 }, { DESC_NONE, 0 } } }, { sizeof(AFP_DIRECTORY_INFO), 0, False, OP_DIRECTORY_GET_INFO, NULL, AfpAdmWDirectoryGetInfo, { { DESC_STRING, FIELD_OFFSET(AFP_DIRECTORY_INFO, afpdir_path) }, { DESC_NONE, 0 }, { DESC_NONE, 0 } } }, { sizeof(SETINFOREQPKT) + sizeof(AFP_DIRECTORY_INFO), sizeof(SETINFOREQPKT), True, OP_DIRECTORY_SET_INFO, NULL, AfpAdmWDirectorySetInfo, { { DESC_STRING, sizeof(SETINFOREQPKT) + FIELD_OFFSET(AFP_DIRECTORY_INFO, afpdir_path) }, { DESC_SID, sizeof(SETINFOREQPKT) + FIELD_OFFSET(AFP_DIRECTORY_INFO, afpdir_owner) }, { DESC_SID, sizeof(SETINFOREQPKT) + FIELD_OFFSET(AFP_DIRECTORY_INFO, afpdir_group) } } }, { sizeof(ENUMREQPKT), 0, False, OP_FORK_ENUM, AfpAdmForkEnum, NULL, { { DESC_NONE, 0 }, { DESC_NONE, 0 }, { DESC_NONE, 0 } } }, { sizeof(AFP_FILE_INFO), 0, True, OP_FORK_CLOSE, NULL, AfpAdmWForkClose, { { DESC_NONE, 0 }, { DESC_NONE, 0 }, { DESC_NONE, 0 } } }, { sizeof(AFP_MESSAGE_INFO), 0, True, OP_MESSAGE_SEND, AfpAdmMessageSend, NULL, { { DESC_STRING, FIELD_OFFSET(AFP_MESSAGE_INFO, afpmsg_text) }, { DESC_NONE, 0 }, { DESC_NONE, 0 } } }, { sizeof(SETINFOREQPKT) + sizeof(AFP_FINDER_INFO), sizeof(SETINFOREQPKT), True, OP_FINDER_SET, NULL, AfpAdmWFinderSetInfo, { { DESC_STRING, sizeof(SETINFOREQPKT) + FIELD_OFFSET(AFP_FINDER_INFO, afpfd_path) }, { DESC_NONE, 0 }, { DESC_NONE, 0 } } } };
#ifdef ALLOC_DATA_PRAGMA
#pragma data_seg()
#endif
|