719 lines
21 KiB
C
719 lines
21 KiB
C
|
|
/****************************************************************************
|
|
|
|
|
| (C) Copyright 1985, 1991, 1993, 1996 Novell, Inc.
|
|
| All Rights Reserved.
|
|
|
|
|
| This program is free software; you can redistribute it and/or
|
|
| modify it under the terms of version 2 of the GNU General Public
|
|
| License as published by the Free Software Foundation.
|
|
|
|
|
| This program is distributed in the hope that it will be useful,
|
|
| but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
| GNU General Public License for more details.
|
|
|
|
|
| You should have received a copy of the GNU General Public License
|
|
| along with this program; if not, contact Novell, Inc.
|
|
|
|
|
| To contact Novell about this file by physical or electronic mail,
|
|
| you may find current contact information at www.novell.com
|
|
|
|
|
|***************************************************************************
|
|
|
|
|
| NetWare Advance File Services (PSS) module
|
|
|
|
|
|---------------------------------------------------------------------------
|
|
|
|
|
| $Author: taysom $
|
|
| $Date: 2004-12-31 01:10:58 +0530 (Fri, 31 Dec 2004) $
|
|
|
|
|
| $RCSfile$
|
|
| $Revision: 465 $
|
|
|
|
|
|
|
|
| WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING!
|
|
|
|
|
| This header file should ONLY be used for NSS internal development.
|
|
| This includes Semantic Agents (SA) and Loadable Storage Services (LSS).
|
|
| Any other use may cause conflicts which NSS will NOT fix.
|
|
+-------------------------------------------------------------------------*/
|
|
#ifndef _NFSHOOKS_H_
|
|
#define _NFSHOOKS_H_
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
#include <xUnicode.h>
|
|
#include <fshooks.h>
|
|
|
|
/*
|
|
* Hook Number
|
|
* 0 Erase File
|
|
* 1 Open File
|
|
* 2 Create File
|
|
* 3 Create and Open File
|
|
* 4 Rename Entry
|
|
* 5 Close File
|
|
* 6 Create Directory
|
|
* 7 Delete Directory
|
|
* 8 Modify Directory Entry
|
|
* 9 Salvage File
|
|
* 10 Purge File
|
|
* 11 RenameNameSpaceEntry
|
|
* 12 F3SalvageFile
|
|
* 13 F3PurgeFile
|
|
* 14 F3OpenCreateFileOrDir
|
|
* 15 F3RenameFileOrDir
|
|
* 16 F3EraseFileOrDir
|
|
* 17 F3ModifyDOSInfo
|
|
* 18 F3ModifyNSSpecificInfo
|
|
* 19 F3InitFileSearch
|
|
* 20 F3ContinueFileSearch
|
|
* 21 F3SearchSet
|
|
* 22 DirectorySearch
|
|
*/
|
|
|
|
#define EraseFile_Hook 0
|
|
#define OpenFile_Hook 1
|
|
#define CreateFile_Hook 2
|
|
#define CreateAndOpenFile_Hook 3
|
|
#define RenameEntry_Hook 4
|
|
#define CloseFile_Hook 5
|
|
#define CreateDirectory_Hook 6
|
|
#define DeleteDirectory_Hook 7
|
|
#define ModifyDirectoryEntry_Hook 8
|
|
#define SalvageFile_Hook 9
|
|
#define PurgeFile_Hook 10
|
|
#define RenameNameSpaceEntry_Hook 11
|
|
#define F3SalvageFile_Hook 12
|
|
#define F3PurgeFile_Hook 13
|
|
#define F3OpenCreate_Hook 14
|
|
#define F3RenameFile_Hook 15
|
|
#define F3EraseFile_Hook 16
|
|
#define F3ModifyInfo_Hook 17
|
|
#define F3ModifyNSSpecificInfo_Hook 18
|
|
#define F3InitFileSearch_Hook 19
|
|
#define F3ContinueFileSearch_Hook 20
|
|
#define F3SearchSet_Hook 21
|
|
#define DirectorySearch_Hook 22
|
|
|
|
|
|
extern struct FSHookParms_s FSHooksList[];
|
|
|
|
extern statusfunc_t FSHooksCall[];
|
|
|
|
extern NINT NWSA_ProcessFSMonitor(
|
|
LONG **monitorChain,
|
|
void *parameters);
|
|
|
|
extern NINT NWSA_ExitFSMonitor(
|
|
LONG **monitorChain,
|
|
void *parameters,
|
|
NINT rc);
|
|
|
|
extern LONG NW_FSHookVersion;
|
|
|
|
#define NWSA_FSHOOKS_ENTER(_index, _parms, _genmsg, _rc) \
|
|
{ \
|
|
if (*(FSHooksList[_index].EntCntNamePtr) != NULL) \
|
|
{ \
|
|
if (*(FSHooksList[_index].HookLinkNamePtr) != NULL) \
|
|
{ \
|
|
_rc = NWSA_ProcessFSMonitor( \
|
|
(FSHooksList[_index].HookLinkNamePtr), _parms); \
|
|
if (_rc != 0) \
|
|
{ \
|
|
SetErrno(_genmsg, NWSA_TranslateErrorToNSS(_rc)); \
|
|
} \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define NWSA_FSHOOKS_EXIT(_index, _parms, _genmsg) \
|
|
{ \
|
|
if (*(FSHooksList[_index].ExCntNamePtr) != NULL) \
|
|
{ \
|
|
if (*(FSHooksList[_index].HookLinkNamePtr) != NULL) \
|
|
{ \
|
|
NWSA_ExitFSMonitor((FSHooksList[_index].HookLinkNamePtr), \
|
|
_parms, \
|
|
NWSA_TranslateError(GetErrno(_genmsg))); \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define HOOKENTER 0
|
|
#define HOOKEXIT 1
|
|
|
|
#if _FSHOOKS IS_ENABLED
|
|
|
|
#define FSHOOKS_OR_EVENTS(_hookindex, _eventindex) \
|
|
(*(FSHooksList[_hookindex].HookLinkNamePtr) || \
|
|
(NEBEventInfo[_eventindex].consumers))
|
|
|
|
#define CHECK_FSHOOKS_CLOSE_ENTER(_index,_parms,_genmsg,_key) \
|
|
{ \
|
|
if (*(FSHooksList[_index].HookLinkNamePtr)) \
|
|
{ \
|
|
if (FSHooksCall[_index]) \
|
|
{ \
|
|
FSHooksCall[_index](_genmsg, HOOKENTER, _parms, _key); \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define CHECK_FSHOOKS_CLOSE_EXIT(_index, _parms, _genmsg, _key) \
|
|
{ \
|
|
if (*(FSHooksList[_index].HookLinkNamePtr)) \
|
|
{ \
|
|
if (FSHooksCall[_index]) \
|
|
{ \
|
|
FSHooksCall[_index](_genmsg, HOOKEXIT, _parms, _key); \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define CHECK_FSHOOKS_CREATE_ENTER(_index, _parms, _st, _golab, _genmsg, \
|
|
_namemsg, _createmsg, _beastname, _asciibeastname, _retfhidp) \
|
|
{ \
|
|
if (*(FSHooksList[_index].HookLinkNamePtr)) \
|
|
{ \
|
|
if (FSHooksCall[_index]) \
|
|
{ \
|
|
_st = FSHooksCall[_index](_genmsg, HOOKENTER, _parms, _namemsg, \
|
|
_createmsg, _beastname, _asciibeastname, _retfhidp); \
|
|
if (_st != zOK) \
|
|
goto _golab; \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define CHECK_FSHOOKS_CREATE_EXIT(_index, _parms, _genmsg, \
|
|
_namemsg, _createmsg, _beastname, _asciibeastname, _retfhidp) \
|
|
{ \
|
|
if (*(FSHooksList[_index].HookLinkNamePtr)) \
|
|
{ \
|
|
if (FSHooksCall[_index]) \
|
|
{ \
|
|
FSHooksCall[_index](_genmsg, HOOKEXIT, _parms, _namemsg, \
|
|
_createmsg, _beastname, _asciibeastname, _retfhidp); \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define CHECK_FSHOOKS_DELETE_ENTER(_index,_parms,_st,_golab,_genmsg,_namemsg)\
|
|
{ \
|
|
if (*(FSHooksList[_index].HookLinkNamePtr)) \
|
|
{ \
|
|
if (FSHooksCall[_index]) \
|
|
{ \
|
|
_st = FSHooksCall[_index](_genmsg, HOOKENTER, _parms, _namemsg);\
|
|
if (_st != zOK) \
|
|
goto _golab; \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define CHECK_FSHOOKS_DELETE_EXIT(_index, _parms, _genmsg, _namemsg) \
|
|
{ \
|
|
if (*(FSHooksList[_index].HookLinkNamePtr)) \
|
|
{ \
|
|
if (FSHooksCall[_index]) \
|
|
{ \
|
|
FSHooksCall[_index](_genmsg, HOOKEXIT, _parms, _namemsg); \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define CHECK_FSHOOKS_OPEN_ENTER(_index, _parms, _st, _golab, _genmsg, \
|
|
_namemsg, _openmsg, _retfhidp) \
|
|
{ \
|
|
if (*(FSHooksList[_index].HookLinkNamePtr)) \
|
|
{ \
|
|
if (FSHooksCall[_index]) \
|
|
{ \
|
|
_st = FSHooksCall[_index](_genmsg, HOOKENTER, _parms, \
|
|
_namemsg, _openmsg, _retfhidp); \
|
|
if (_st != zOK) \
|
|
goto _golab; \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define CHECK_FSHOOKS_OPEN_EXIT(_index, _parms, _genmsg, \
|
|
_namemsg, _openmsg, _retfhidp) \
|
|
{ \
|
|
if (*(FSHooksList[_index].HookLinkNamePtr)) \
|
|
{ \
|
|
if (FSHooksCall[_index]) \
|
|
{ \
|
|
FSHooksCall[_index](_genmsg, HOOKEXIT, _parms, \
|
|
_namemsg, _openmsg, _retfhidp); \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define CHECK_FSHOOKS_MODIFY_ENTER(_index, _parms, _st, _golab, _genmsg, \
|
|
_namemsg, _infomsg, _modvector) \
|
|
{ \
|
|
if (*(FSHooksList[_index].HookLinkNamePtr)) \
|
|
{ \
|
|
if (FSHooksCall[_index]) \
|
|
{ \
|
|
_st = FSHooksCall[_index](_genmsg, HOOKENTER, _parms, \
|
|
_namemsg, _infomsg, _modvector); \
|
|
if (_st != zOK) \
|
|
goto _golab; \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define CHECK_FSHOOKS_MODIFY_EXIT(_index, _parms, _genmsg, \
|
|
_namemsg, _infomsg, _modvector) \
|
|
{ \
|
|
if (*(FSHooksList[_index].HookLinkNamePtr)) \
|
|
{ \
|
|
if (FSHooksCall[_index]) \
|
|
{ \
|
|
FSHooksCall[_index](_genmsg, HOOKEXIT, _parms, \
|
|
_namemsg, _infomsg, _modvector); \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define CHECK_FSHOOKS_MODIFY_RIGHTS_ENTER(_index, _parms, _st, _golab, \
|
|
_genmsg, _namemsg, _rights, _minfo) \
|
|
{ \
|
|
if (!(_genmsg->flags & DO_NOT_SEND_FSHOOKS)) \
|
|
{ \
|
|
if (*(FSHooksList[_index].HookLinkNamePtr)) \
|
|
{ \
|
|
if (FSHooksCall[_index]) \
|
|
{ \
|
|
_st = FSHooksCall[_index](_genmsg, HOOKENTER, _parms, \
|
|
_namemsg, _rights, _minfo); \
|
|
if (_st != zOK) \
|
|
goto _golab; \
|
|
} \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define CHECK_FSHOOKS_MODIFY_RIGHTS_EXIT(_index, _parms, \
|
|
_genmsg, _namemsg, _rights, _minfo) \
|
|
{ \
|
|
if (!(_genmsg->flags & DO_NOT_SEND_FSHOOKS)) \
|
|
{ \
|
|
if (*(FSHooksList[_index].HookLinkNamePtr)) \
|
|
{ \
|
|
if (FSHooksCall[_index]) \
|
|
{ \
|
|
FSHooksCall[_index](_genmsg, HOOKEXIT, _parms, \
|
|
_namemsg, _rights, _minfo); \
|
|
} \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define CHECK_FSHOOKS_RENAME_ENTER(_index, _parms, _st, _golab, _genmsg, \
|
|
_srcnamemsg, _name, _asciiname, _zid, _renmsg) \
|
|
{ \
|
|
if (*(FSHooksList[_index].HookLinkNamePtr)) \
|
|
{ \
|
|
if (FSHooksCall[_index]) \
|
|
{ \
|
|
_st = FSHooksCall[_index](_genmsg, HOOKENTER, _parms, \
|
|
_srcnamemsg, _name, _asciiname, _zid, _renmsg); \
|
|
if (_st != zOK) \
|
|
goto _golab; \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define CHECK_FSHOOKS_RENAME_EXIT(_index, _parms, _genmsg, \
|
|
_srcnamemsg, _name, _asciiname, _zid, _renmsg) \
|
|
{ \
|
|
if (*(FSHooksList[_index].HookLinkNamePtr)) \
|
|
{ \
|
|
if (FSHooksCall[_index]) \
|
|
{ \
|
|
FSHooksCall[_index](_genmsg, HOOKEXIT, _parms, \
|
|
_srcnamemsg, _name, _asciiname, _zid, _renmsg); \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define CHECK_FSHOOKS_DIRECTORY_SEARCH_ENTER(_index, _parms, _st, _golab, \
|
|
_genmsg, _namemsg, _searchmsg) \
|
|
{ \
|
|
if (!(_genmsg->flags & DO_NOT_SEND_FSHOOKS)) \
|
|
{ \
|
|
if (*(FSHooksList[_index].HookLinkNamePtr)) \
|
|
{ \
|
|
if (FSHooksCall[_index]) \
|
|
{ \
|
|
NINT _latchtype; \
|
|
COMN_UNLATCH_NAMEMSG_BEASTS(_namemsg, &_latchtype); \
|
|
_st = FSHooksCall[_index](_genmsg, HOOKENTER, _parms, \
|
|
_namemsg, _searchmsg); \
|
|
COMN_LATCH_NAMEMSG_BEASTS(_namemsg, _latchtype); \
|
|
if (_st != zOK) \
|
|
goto _golab; \
|
|
} \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define CHECK_FSHOOKS_DIRECTORY_SEARCH_EXIT(_index, _parms, \
|
|
_genmsg, _namemsg, _searchmsg) \
|
|
{ \
|
|
if (!(_genmsg->flags & DO_NOT_SEND_FSHOOKS)) \
|
|
{ \
|
|
if (*(FSHooksList[_index].HookLinkNamePtr)) \
|
|
{ \
|
|
if (FSHooksCall[_index]) \
|
|
{ \
|
|
NINT _latchtype; \
|
|
COMN_UNLATCH_NAMEMSG_BEASTS(_namemsg, &_latchtype); \
|
|
FSHooksCall[_index](_genmsg, HOOKEXIT, _parms, \
|
|
_namemsg, _searchmsg); \
|
|
COMN_LATCH_NAMEMSG_BEASTS(_namemsg, _latchtype); \
|
|
} \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define CHECK_FSHOOKS_PURGE_ENTER(_index,_parms,_st,_golab,_genmsg,_namemsg)\
|
|
{ \
|
|
if (*(FSHooksList[_index].HookLinkNamePtr)) \
|
|
{ \
|
|
if (FSHooksCall[_index]) \
|
|
{ \
|
|
_st = FSHooksCall[_index](_genmsg, HOOKENTER, _parms, _namemsg);\
|
|
if (_st != zOK) \
|
|
goto _golab; \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define CHECK_FSHOOKS_PURGE_EXIT(_index, _parms, _genmsg, _namemsg) \
|
|
{ \
|
|
if (*(FSHooksList[_index].HookLinkNamePtr)) \
|
|
{ \
|
|
if (FSHooksCall[_index]) \
|
|
{ \
|
|
FSHooksCall[_index](_genmsg, HOOKEXIT, _parms, _namemsg); \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define CHECK_FSHOOKS_SALVAGE_ENTER(_index, _parms, _st, _golab, _genmsg, \
|
|
_srcnamemsg, _name, _asciiname) \
|
|
{ \
|
|
if (*(FSHooksList[_index].HookLinkNamePtr)) \
|
|
{ \
|
|
if (FSHooksCall[_index]) \
|
|
{ \
|
|
_st = FSHooksCall[_index](_genmsg, HOOKENTER, _parms, \
|
|
_srcnamemsg, _name, _asciiname); \
|
|
if (_st != zOK) \
|
|
goto _golab; \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#define CHECK_FSHOOKS_SALVAGE_EXIT(_index, _parms, _genmsg, \
|
|
_srcnamemsg, _name, _asciiname) \
|
|
{ \
|
|
if (*(FSHooksList[_index].HookLinkNamePtr)) \
|
|
{ \
|
|
if (FSHooksCall[_index]) \
|
|
{ \
|
|
FSHooksCall[_index](_genmsg, HOOKEXIT, _parms, \
|
|
_srcnamemsg, _name, _asciiname); \
|
|
} \
|
|
} \
|
|
}
|
|
|
|
#else
|
|
|
|
#define FSHOOKS_OR_EVENTS(_hookindex, _eventindex) \
|
|
(NEBEventInfo[_eventindex].consumers)
|
|
#define CHECK_FSHOOKS_CLOSE_ENTER(_index, _parms, _genmsg, _key) \
|
|
UNUSED_PARAM(*_parms)
|
|
#define CHECK_FSHOOKS_CLOSE_EXIT(_index, _parms, _genmsg, _key) \
|
|
UNUSED_PARAM(*_parms)
|
|
#define CHECK_FSHOOKS_CREATE_ENTER(_index, _parms, _st, _golab, _genmsg, \
|
|
_namemsg, _createmsg, _beastname, _asciibeastname, _retfhidp) \
|
|
UNUSED_PARAM(*_parms); \
|
|
UNUSED_PARAM(*_asciibeastname)
|
|
#define CHECK_FSHOOKS_CREATE_EXIT(_index, _parms, _genmsg, \
|
|
_namemsg, _createmsg, _beastname, _asciibeastname, _retfhidp) \
|
|
UNUSED_PARAM(*_parms)
|
|
#define CHECK_FSHOOKS_DELETE_ENTER(_index,_parms,_st,_golab,_genmsg,_namemsg)\
|
|
UNUSED_PARAM(*_parms)
|
|
#define CHECK_FSHOOKS_DELETE_EXIT(_index, _parms, _genmsg, _namemsg) \
|
|
UNUSED_PARAM(*_parms)
|
|
#define CHECK_FSHOOKS_OPEN_ENTER(_index, _parms, _st, _golab, _genmsg, \
|
|
_namemsg, _openmsg, _retfhidp) \
|
|
UNUSED_PARAM(*_parms)
|
|
#define CHECK_FSHOOKS_OPEN_EXIT(_index, _parms, _genmsg, \
|
|
_namemsg, _openmsg, _retfhidp) \
|
|
UNUSED_PARAM(*_parms)
|
|
#define CHECK_FSHOOKS_MODIFY_ENTER(_index, _parms, _st, _golab, _genmsg, \
|
|
_namemsg, _infomsg, _modvector) \
|
|
UNUSED_PARAM(*_parms); \
|
|
UNUSED_PARAM(*_modvector)
|
|
#define CHECK_FSHOOKS_MODIFY_EXIT(_index, _parms, _genmsg, \
|
|
_namemsg, _infomsg, _modvector) \
|
|
UNUSED_PARAM(*_parms)
|
|
#define CHECK_FSHOOKS_MODIFY_RIGHTS_ENTER(_index, _parms, _st, _golab, \
|
|
_genmsg, _namemsg, _rights, _minfo) \
|
|
UNUSED_PARAM(*_parms)
|
|
#define CHECK_FSHOOKS_MODIFY_RIGHTS_EXIT(_index, _parms, \
|
|
_genmsg, _namemsg, _rights, _minfo) \
|
|
UNUSED_PARAM(*_parms)
|
|
#define CHECK_FSHOOKS_RENAME_ENTER(_index, _parms, _st, _golab, _genmsg, \
|
|
_srcnamemsg, _name, _asciiname, _zid, _renmsg) \
|
|
UNUSED_PARAM(*_parms); \
|
|
UNUSED_PARAM(*_asciiname)
|
|
#define CHECK_FSHOOKS_RENAME_EXIT(_index, _parms, _genmsg, \
|
|
_srcnamemsg, _name, _asciiname, _zid, _renmsg) \
|
|
UNUSED_PARAM(*_parms)
|
|
#define CHECK_FSHOOKS_DIRECTORY_SEARCH_ENTER(_index, _parms, _st, _golab, \
|
|
_genmsg, _namemsg, _searchmsg) \
|
|
UNUSED_PARAM(*_parms)
|
|
#define CHECK_FSHOOKS_DIRECTORY_SEARCH_EXIT(_index, _parms, \
|
|
_genmsg, _namemsg, _searchmsg) \
|
|
UNUSED_PARAM(*_parms)
|
|
#define CHECK_FSHOOKS_PURGE_ENTER(_index,_parms,_st,_golab,_genmsg,_namemsg)\
|
|
UNUSED_PARAM(*_parms)
|
|
#define CHECK_FSHOOKS_PURGE_EXIT(_index, _parms, _genmsg, _namemsg) \
|
|
UNUSED_PARAM(*_parms)
|
|
#define CHECK_FSHOOKS_SALVAGE_ENTER(_index, _parms, _st, _golab, _genmsg, \
|
|
_srcnamemsg, _name, _asciiname) \
|
|
UNUSED_PARAM(*_parms)
|
|
#define CHECK_FSHOOKS_SALVAGE_EXIT(_index, _parms, _genmsg, \
|
|
_srcnamemsg, _name, _asciiname) \
|
|
UNUSED_PARAM(*_parms)
|
|
#endif
|
|
|
|
typedef struct FSHooks_Close_s
|
|
{
|
|
LONG station;
|
|
LONG task;
|
|
LONG handle;
|
|
} FSHooks_Close_s;
|
|
|
|
extern STATUS FSHOOKS_CloseCall(
|
|
GeneralMsg_s *genMsg,
|
|
NINT flag,
|
|
FSHooks_Close_s *parms,
|
|
Key_t key);
|
|
|
|
typedef struct FSHooks_F3OpenCreate_s
|
|
{
|
|
LONG station;
|
|
LONG task;
|
|
LONG volume;
|
|
LONG pathCount;
|
|
LONG pathBase;
|
|
BYTE *pathString;
|
|
LONG nameSpace;
|
|
LONG dataStream;
|
|
LONG openCreateFlags;
|
|
LONG searchAttributes;
|
|
LONG createAttributes;
|
|
LONG desiredAccessRights;
|
|
LONG retInfoMask;
|
|
LONG *handle;
|
|
BYTE *openCreateAction;
|
|
} FSHooks_F3OpenCreate_s;
|
|
|
|
extern STATUS FSHOOKS_CreateCall(
|
|
GeneralMsg_s *genMsg,
|
|
NINT flag,
|
|
FSHooks_F3OpenCreate_s *parms,
|
|
NamingMsg_s *nameMsg,
|
|
CreateMsg_s *createMsg,
|
|
unicode_t *beastName,
|
|
char *asciiBeastName,
|
|
FileHandleIDP_s *retFhIDP);
|
|
|
|
typedef struct FSHooks_F3EraseFile_s
|
|
{
|
|
LONG station;
|
|
LONG task;
|
|
LONG volume;
|
|
LONG pathCount;
|
|
LONG pathBase;
|
|
BYTE *pathString;
|
|
LONG nameSpace;
|
|
LONG searchAttributes;
|
|
} FSHooks_F3EraseFile_s;
|
|
|
|
extern STATUS FSHOOKS_DeleteCall(
|
|
GeneralMsg_s *genMsg,
|
|
NINT flag,
|
|
FSHooks_F3EraseFile_s *parms,
|
|
NamingMsg_s *nameMsg);
|
|
|
|
typedef struct FSHooks_OpenFile_s
|
|
{
|
|
LONG station;
|
|
LONG task;
|
|
LONG volume;
|
|
LONG pathBase;
|
|
BYTE *pathString;
|
|
LONG pathCount;
|
|
LONG nameSpace;
|
|
LONG matchBits;
|
|
LONG requestedRights;
|
|
LONG dataStreamNumber;
|
|
LONG *handle;
|
|
LONG *directoryNumber;
|
|
} FSHooks_OpenFile_s;
|
|
|
|
extern STATUS FSHOOKS_OpenCall(
|
|
GeneralMsg_s *genMsg,
|
|
NINT flag,
|
|
FSHooks_OpenFile_s *parms,
|
|
NamingMsg_s *nameMsg,
|
|
OpenMsg_s *openMsg,
|
|
FileHandleIDP_s *retFhIDP);
|
|
|
|
typedef struct FSHooks_ModifyInfo_s
|
|
{
|
|
LONG station;
|
|
LONG task;
|
|
LONG volume;
|
|
LONG pathBase;
|
|
BYTE *pathString;
|
|
LONG pathCount;
|
|
LONG nameSpace;
|
|
LONG matchBits;
|
|
LONG targetNameSpace;
|
|
struct ModifyStructure *modifyVector;
|
|
LONG modifyBits;
|
|
LONG allowWildCardsFlag;
|
|
} FSHooks_ModifyInfo_s;
|
|
|
|
extern STATUS FSHOOKS_ModifyCall(
|
|
GeneralMsg_s *genMsg,
|
|
NINT flag,
|
|
FSHooks_ModifyInfo_s *parms,
|
|
NamingMsg_s *nameMsg,
|
|
ModifyInfoMsg_s *infoMsg,
|
|
struct ModifyStructure *modifyVector);
|
|
|
|
typedef struct FSHooks_F3ModifyInfo_s
|
|
{
|
|
LONG station;
|
|
LONG task;
|
|
LONG volume;
|
|
LONG pathCount;
|
|
LONG pathBase;
|
|
BYTE *pathString;
|
|
LONG nameSpace;
|
|
LONG searchAttributes;
|
|
LONG modifyMask;
|
|
ModifyInfo *mInfo;
|
|
} FSHooks_F3ModifyInfo_s;
|
|
|
|
extern STATUS FSHOOKS_ModifyRightsCall(
|
|
GeneralMsg_s *genMsg,
|
|
NINT flag,
|
|
struct FSHooks_F3ModifyInfo_s *parms,
|
|
NamingMsg_s *nameMsg,
|
|
NINT inheritedRights,
|
|
ModifyInfo *mInfo);
|
|
|
|
typedef struct FSHooks_F3RenameFile_s
|
|
{
|
|
LONG station;
|
|
LONG task;
|
|
LONG nameSpace;
|
|
LONG renameFlag;
|
|
LONG searchAttributes;
|
|
LONG srcVolume;
|
|
LONG srcPathCount;
|
|
LONG srcPathBase;
|
|
BYTE *srcPathString;
|
|
LONG dstVolume;
|
|
LONG dstPathCount;
|
|
LONG dstPathBase;
|
|
BYTE *dstPathString;
|
|
} FSHooks_F3RenameFile_s;
|
|
|
|
extern STATUS FSHOOKS_RenameCall(
|
|
GeneralMsg_s *genMsg,
|
|
NINT flag,
|
|
FSHooks_F3RenameFile_s *parms,
|
|
NamingMsg_s *srcNameMsg,
|
|
unicode_t *newName,
|
|
char *asciiNewName,
|
|
Zid_t dstDirZid,
|
|
RenameMsg_s *renMsg);
|
|
|
|
typedef struct FSHooks_DirectorySearch_s
|
|
{
|
|
LONG station;
|
|
LONG volume;
|
|
LONG directoryNumber;
|
|
LONG nameSpace;
|
|
LONG startEntryNumber;
|
|
BYTE *pattern;
|
|
LONG matchBits;
|
|
struct DirectoryStructure **directoryEntry;
|
|
LONG *returnedDirectoryNumber;
|
|
}FSHooks_DirectorySearch_s;
|
|
|
|
|
|
extern STATUS FSHOOKS_DirectorySearchCall(
|
|
GeneralMsg_s *genMsg,
|
|
NINT flag,
|
|
FSHooks_DirectorySearch_s *parms,
|
|
NamingMsg_s *nameMsg,
|
|
SearchMsg_s *searchMsg);
|
|
|
|
typedef struct FSHooks_PurgeFile_s
|
|
{
|
|
LONG station;
|
|
LONG volume;
|
|
LONG directoryNumber;
|
|
LONG toBePurgedDirectoryNumber;
|
|
LONG nameSpace;
|
|
} FSHooks_PurgeFile_s;
|
|
|
|
extern STATUS FSHOOKS_PurgeCall(
|
|
GeneralMsg_s *genMsg,
|
|
NINT flag,
|
|
FSHooks_PurgeFile_s *parms,
|
|
NamingMsg_s *nameMsg);
|
|
|
|
typedef struct FSHooks_SalvageFile_s
|
|
{
|
|
LONG station;
|
|
LONG volume;
|
|
LONG directoryNumber;
|
|
LONG toBeSalvagedDirectoryNumber;
|
|
LONG nameSpace;
|
|
BYTE *newFilename;
|
|
} FSHooks_SalvageFile_s;
|
|
|
|
extern STATUS FSHOOKS_SalvageCall(
|
|
GeneralMsg_s *genMsg,
|
|
NINT flag,
|
|
FSHooks_SalvageFile_s *parms,
|
|
NamingMsg_s *nameMsg,
|
|
unicode_t *newName,
|
|
char *asciiNewName);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|
|
|