windows-nt/Source/XPSP1/NT/net/wins/idl/winsif.idl
2020-09-26 16:20:57 +08:00

263 lines
5.9 KiB
Plaintext

/*++
Copyright (c) 1990 Microsoft Corporation
Module Name:
winsif.idl
Abstract:
Contains the WINS Server Service API.
Also contains the RPC specific data structures for these API.
Author:
Pradeep Bahl Apr, 1993
Environment:
User Mode - Win32 - MIDL
Revision History:
--*/
//
// Interface Attributes
//
//
// UUID for the winsif interface. This was generated by uuidgen /i on
// pradeepb_486 at 10:22 am.
//
[
uuid(45F52C28-7F9F-101A-B52B-08002B2EFABE),
version(1.0),
#ifdef __midl
ms_union,
#endif // __midl
pointer_default(unique)
]
//
// Interface Keyword
//
interface winsif
//
// Interface Body
//
{
import "winsimp.idl";
//
// ---------------------------------------------------------------//
//
// Note that there are two kinds of handles below. Originally, almost
// all RPC apis did not take explicit handle as an argument. WinsBind
// created an implicit handle and the same handle was used for making
// rpc calls. There were few APIs ( GetBroserName and WinsStatusWHdl)
// which tool explicit handle as an argument. This handle was a user
// defined type WINSINTF_BIND_DATA_T.
//
// However, this original scheme had fundamental problem that multiple
// threads could not call the apis simultaneously with binding to different
// wins servers. (coz there was only one implicit binding common for all
// the threads )
//
// To get around this problem, a new handle was created WINSIF2_HANDLE.
// The client stubs take this handle as an argument, but to keep the
// rpc backward compatible, the server apis are kept the same as before.
// i.e the server side stubs do not take handle as an argument. Since
// the WINSIF2_HANDLE is defined as handle_t (primitive), it is not
// passed on the wire and things work out ok. The makefil0 is modified
// so that the client stubs and the server stubs generate different
// signatures for the apis. DECLARE_WINS_HANDLE macro does the required
// trick here.
//
// In future, if new APIs need to be added, pls. always pass WINSIF2_HANDLE
// explicitly to both server and the client side.
//
typedef handle_t WINSIF2_HANDLE;
typedef [handle] PWINSINTF_BIND_DATA_T WINSIF_HANDLE;
//
// WINS Server APIs
//
#ifdef WINS_CLIENT_APIS
#define DECLARE_WINS_HANDLE( _hdl ) [in] WINSIF2_HANDLE _hdl,
#define DECLARE_WINS_HANDLE0( _hdl ) [in] WINSIF2_HANDLE _hdl
#else
#define DECLARE_WINS_HANDLE( _hdl )
#define DECLARE_WINS_HANDLE0( _hdl )
#endif WINS_CLIENT_APIS
//
// APIs to
//
DWORD
R_WinsRecordAction(
DECLARE_WINS_HANDLE( ServerHdl )
[in, out, ref] PWINSINTF_RECORD_ACTION_T *ppRecAction
);
DWORD
R_WinsStatus(
DECLARE_WINS_HANDLE( ServerHdl )
[in] WINSINTF_CMD_E Cmd_e,
[in, out, ref] PWINSINTF_RESULTS_T pResults
);
DWORD
R_WinsTrigger(
DECLARE_WINS_HANDLE( ServerHdl )
[in, ref] PWINSINTF_ADD_T pWinsAdd,
[in] WINSINTF_TRIG_TYPE_E TrigType_e
);
DWORD
R_WinsDoStaticInit(
DECLARE_WINS_HANDLE( ServerHdl )
[in, unique, string] LPWSTR pDataFilePath,
[in] DWORD fDel
);
DWORD
R_WinsDoScavenging(
DECLARE_WINS_HANDLE0( ServerHdl )
);
DWORD
R_WinsGetDbRecs(
DECLARE_WINS_HANDLE( ServerHdl )
[in, ref] PWINSINTF_ADD_T pWinsAdd,
[in] WINSINTF_VERS_NO_T MinVersNo,
[in] WINSINTF_VERS_NO_T MaxVersNo,
[out] PWINSINTF_RECS_T pRecs
);
DWORD
R_WinsTerm(
[in] handle_t ServerHdl,
[in] short fAbruptTem
);
DWORD
R_WinsBackup(
DECLARE_WINS_HANDLE( ServerHdl )
[in, string, ref] LPBYTE pBackupPath,
[in] short fIncremental
);
DWORD
R_WinsDelDbRecs(
DECLARE_WINS_HANDLE( ServerHdl )
[in, ref] PWINSINTF_ADD_T pWinsAdd,
[in] WINSINTF_VERS_NO_T MinVersNo,
[in] WINSINTF_VERS_NO_T MaxVersNo
);
DWORD
R_WinsPullRange(
DECLARE_WINS_HANDLE( ServerHdl )
[in, ref] PWINSINTF_ADD_T pWinsAdd,
[in, ref] PWINSINTF_ADD_T pOwnerAdd,
[in] WINSINTF_VERS_NO_T MinVersNo,
[in] WINSINTF_VERS_NO_T MaxVersNo
);
DWORD
R_WinsSetPriorityClass(
DECLARE_WINS_HANDLE( ServerHdl )
[in] WINSINTF_PRIORITY_CLASS_E PrCls_e
);
DWORD
R_WinsResetCounters(
DECLARE_WINS_HANDLE0( ServerHdl )
);
DWORD
R_WinsWorkerThdUpd(
DECLARE_WINS_HANDLE( ServerHdl )
[in] DWORD NewNoOfNbtThds
);
//
// Keep size_is value > MAX_COMPUTERNAME_LENGTH. Somehow, the idl parser
// is not liking a symbol here. No time to investigate this more at this
// time
//
DWORD
R_WinsGetNameAndAdd(
DECLARE_WINS_HANDLE( ServerHdl )
[out, ref] PWINSINTF_ADD_T pWinsAdd,
[out, string, size_is(80)] LPBYTE pUncName
);
DWORD
R_WinsGetBrowserNames_Old(
DECLARE_WINS_HANDLE( ServerHdl )
[out] PWINSINTF_BROWSER_NAMES_T pNames
);
DWORD
R_WinsDeleteWins(
DECLARE_WINS_HANDLE( ServerHdl )
[in, ref] PWINSINTF_ADD_T pWinsAdd
);
DWORD
R_WinsSetFlags(
DECLARE_WINS_HANDLE( ServerHdl )
[in] DWORD fFlags
);
DWORD
R_WinsGetBrowserNames(
[in, ref] WINSIF_HANDLE ServerHdl,
[out] PWINSINTF_BROWSER_NAMES_T pNames
);
DWORD
R_WinsGetDbRecsByName(
DECLARE_WINS_HANDLE( ServerHdl )
[in, unique] PWINSINTF_ADD_T pWinsAdd,
[in] DWORD Location,
[in, unique, size_is(NameLen + 1)] LPBYTE pName,
[in] DWORD NameLen,
[in] DWORD NoOfRecsDesired,
[in] DWORD fOnlyStatic,
[out] PWINSINTF_RECS_T pRecs
);
DWORD
R_WinsStatusNew(
DECLARE_WINS_HANDLE( ServerHdl )
[in] WINSINTF_CMD_E Cmd_e,
[out] PWINSINTF_RESULTS_NEW_T pResults
);
DWORD
R_WinsStatusWHdl(
[in, ref] WINSIF_HANDLE ServerHdl,
[in] WINSINTF_CMD_E Cmd_e,
[in, out, ref] PWINSINTF_RESULTS_NEW_T pResults
);
DWORD
R_WinsDoScavengingNew(
DECLARE_WINS_HANDLE( ServerHdl )
[in, ref] PWINSINTF_SCV_REQ_T pScvReq
);
}