427 lines
8.5 KiB
C
427 lines
8.5 KiB
C
/*++
|
||
|
||
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
|
||
|
||
|
||
|