/********************************************************************/
/**               Copyright(c) 1991 Microsoft Corporation.	   **/
/********************************************************************/

//***
//
// Filename:	afpsvc.idl
//
// Description: Contains the AfpAdminr (Afp Remote) RPC interface
//		specification for the API associated with the Afp Server
//		Service. Also contains the RPC specific data structures for
//		these APIs.
//
// History:
//	June 11,1992.	NarenG		Created original version.
//
// ??? Use UUID generator when it is working ???
// ??? Do we still need the #define LPWSTR   ???


//
// Interface Attributes
//

[
    uuid(4B324FC8-1670-01D3-1278-5A47BF6EE188),
    version(0.0),
    pointer_default(unique)
]


interface afpsvc


{

import   "import.idl";

//
// BUGBUG - remove this when MIDL understands LPWSTR
//
#define LPWSTR	wchar_t*

typedef [handle] AFP_SERVER_HANDLE  AFPSVC_HANDLE;

//
// Volume API
//

//
// Structures - AfpAdminrVolume
//
typedef struct _VOLUME_INFO_CONTAINER {
    DWORD   dwEntriesRead;
    [size_is(dwEntriesRead)] PAFP_VOLUME_INFO pBuffer;
} VOLUME_INFO_CONTAINER, *PVOLUME_INFO_CONTAINER;

//
// Function Prototypes - AfpAdminVolume
//

DWORD
AfpAdminrVolumeEnum (
    [in] 	       AFPSVC_HANDLE          hServer,
    [in,out]           PVOLUME_INFO_CONTAINER pInfoStruct,
    [in]               DWORD                  dwPreferedMaximumLength,
    [out]              LPDWORD                lpdwTotalEntries,
    [in,out,unique]    LPDWORD                lpdwResumeHandle
    );

DWORD
AfpAdminrVolumeSetInfo (
    [in] 		AFPSVC_HANDLE          hServer,
    [in] 		PAFP_VOLUME_INFO       pAfpVolumeInfo,
    [in]		DWORD		       dwParmNum
    );

DWORD
AfpAdminrVolumeGetInfo (
    [in] 		AFPSVC_HANDLE          hServer,
    [in,string]		LPWSTR		       lpwsVolumeName,
    [out] 		PAFP_VOLUME_INFO*      ppAfpVolumeInfo
    );

DWORD
AfpAdminrVolumeDelete(
    [in] 		AFPSVC_HANDLE          hServer,
    [in,string]		LPWSTR		       lpwsVolumeName
    );

DWORD
AfpAdminrVolumeAdd(
    [in] 		AFPSVC_HANDLE          hServer,
    [in] 		PAFP_VOLUME_INFO       pAfpVolumeInfo
    );

DWORD
AfpAdminrInvalidVolumeEnum (
    [in] 	       AFPSVC_HANDLE          hServer,
    [in,out]           PVOLUME_INFO_CONTAINER pInfoStruct
    );

DWORD
AfpAdminrInvalidVolumeDelete(
    [in] 		AFPSVC_HANDLE          hServer,
    [in,string]		LPWSTR		       lpwsVolumeName
    );

//
// Function prototypes - AfpAdminDirectory
//

DWORD
AfpAdminrDirectoryGetInfo(
    [in] 		AFPSVC_HANDLE          hServer,
    [in,string]		LPWSTR		       lpwsPath,
    [in,out] 		PAFP_DIRECTORY_INFO*   ppAfpDirectoryInfo
    );
			  	
DWORD
AfpAdminrDirectorySetInfo(
    [in] 		AFPSVC_HANDLE          hServer,
    [in] 		PAFP_DIRECTORY_INFO    pAfpDirectoryInfo,
    [in]		DWORD		       dwParmNum
    );

//
// Function prototypes - AfpAdminServer
//

DWORD
AfpAdminrServerGetInfo(
    [in] 		AFPSVC_HANDLE          hServer,
    [in,out] 		PAFP_SERVER_INFO*      ppAfpServerInfo
    );
			  	
DWORD
AfpAdminrServerSetInfo(
    [in] 		AFPSVC_HANDLE          hServer,
    [in] 		PAFP_SERVER_INFO       pAfpServerInfo,
    [in]		DWORD		       dwParmNum
    );

//
// Session API
//

//
// Structures - AfpAdminrSession
//
typedef struct _SESSION_INFO_CONTAINER {
    DWORD   dwEntriesRead;
    [size_is(dwEntriesRead)] PAFP_SESSION_INFO pBuffer;
} SESSION_INFO_CONTAINER, *PSESSION_INFO_CONTAINER;

//
// Function Prototypes - AfpAdminSession
//

DWORD
AfpAdminrSessionEnum (
    [in] 	       AFPSVC_HANDLE           hServer,
    [in,out]           PSESSION_INFO_CONTAINER pInfoStruct,
    [in]               DWORD                   dwPreferedMaximumLength,
    [out]              LPDWORD                 lpdwTotalEntries,
    [in,out,unique]    LPDWORD                 lpdwResumeHandle
    );

DWORD
AfpAdminrSessionClose(
    [in] 		AFPSVC_HANDLE          hServer,
    [in]		DWORD 		       dwSessionId
    );


//
// Connection API
//

//
// Structures - AfpAdminrConnection
//
typedef struct _CONN_INFO_CONTAINER {
    DWORD   dwEntriesRead;
    [size_is(dwEntriesRead)] PAFP_CONNECTION_INFO pBuffer;
} CONN_INFO_CONTAINER, *PCONN_INFO_CONTAINER;

//
// Function Prototypes - AfpAdminConnection
//

DWORD
AfpAdminrConnectionEnum (
    [in] 	       AFPSVC_HANDLE          hServer,
    [in,out]           PCONN_INFO_CONTAINER   pInfoStruct,
    [in]               DWORD                  dwFilter,
    [in]               DWORD                  dwId,
    [in]               DWORD                  dwPreferedMaximumLength,
    [out]              LPDWORD                lpdwTotalEntries,
    [in,out,unique]    LPDWORD                lpdwResumeHandle
    );

DWORD
AfpAdminrConnectionClose(
    [in] 		AFPSVC_HANDLE          hServer,
    [in]		DWORD 		       dwConnectionId
    );

//
// File API
//

//
// Structures - AfpAdminrFile
//
typedef struct _FILE_INFO_CONTAINER {
    DWORD   dwEntriesRead;
    [size_is(dwEntriesRead)] PAFP_FILE_INFO pBuffer;
} FILE_INFO_CONTAINER, *PFILE_INFO_CONTAINER;

//
// Function Prototypes - AfpAdminFile
//

DWORD
AfpAdminrFileEnum (
    [in] 	       AFPSVC_HANDLE          hServer,
    [in,out]           PFILE_INFO_CONTAINER   pInfoStruct,
    [in]               DWORD                  dwPreferedMaximumLength,
    [out]              LPDWORD                lpdwTotalEntries,
    [in,out,unique]    LPDWORD                lpdwResumeHandle
    );

DWORD
AfpAdminrFileClose(
    [in] 		AFPSVC_HANDLE          hServer,
    [in]		DWORD 		       dwCloseId
    );

//
// ETC Mappings API
//

//
// Function prototypes - AfpAdminETCMap
//
DWORD
AfpAdminrETCMapGetInfo(
    [in] 	       AFPSVC_HANDLE          hServer,
    [in,out]           PAFP_ETCMAP_INFO       *ppAfpETCMapInfo
    );

DWORD
AfpAdminrETCMapAdd(
    [in] 	       AFPSVC_HANDLE          hServer,
    [in]  	       PAFP_TYPE_CREATOR      pAfpTypeCreator
    );

DWORD
AfpAdminrETCMapDelete(
    [in] 	       AFPSVC_HANDLE          hServer,
    [in]  	       PAFP_TYPE_CREATOR      pAfpTypeCreator
    );

DWORD
AfpAdminrETCMapSetInfo(
    [in] 	       AFPSVC_HANDLE          hServer,
    [in]  	       PAFP_TYPE_CREATOR      pAfpTypeCreator
    );

DWORD
AfpAdminrETCMapAssociate(
    [in] 	       AFPSVC_HANDLE          hServer,
    [in]  	       PAFP_TYPE_CREATOR      pAfpTypeCreator,
    [in]  	       PAFP_EXTENSION	      pAfpExtension
    );

//
//  Statistics APIs
//

DWORD
AfpAdminrStatisticsGet(
    [in] 	       AFPSVC_HANDLE          hServer,
    [in,out]	       PAFP_STATISTICS_INFO * ppAfpStatisticsInfo
);

DWORD
AfpAdminrStatisticsGetEx(
    [in] 	       AFPSVC_HANDLE          hServer,
    [in,out]	       PAFP_STATISTICS_INFO_EX * ppAfpStatisticsInfo
);

DWORD
AfpAdminrStatisticsClear(
    [in] 	       AFPSVC_HANDLE          hServer
);

//
//  Profile API
//

DWORD
AfpAdminrProfileGet(
    [in] 	       AFPSVC_HANDLE          hServer,
    [in,out]	       PAFP_PROFILE_INFO *    ppAfpProfileInfo
);

DWORD
AfpAdminrProfileClear(
    [in] 	       AFPSVC_HANDLE          hServer
);

//
//  Message API
//

DWORD
AfpAdminrMessageSend(
    [in] 	       AFPSVC_HANDLE          hServer,
    [in]	       PAFP_MESSAGE_INFO      pAfpMessageInfo
);

DWORD
AfpAdminrFinderSetInfo(
    [in] 	       	AFPSVC_HANDLE          hServer,
    [in,string]		LPWSTR		       lpwsType,
    [in,string]		LPWSTR		       lpwsCreator,
    [in,string]		LPWSTR		       lpwsData,
    [in,string]		LPWSTR		       lpwsResource,
    [in,string]		LPWSTR		       lpwsTarget,
    [in]                DWORD                  dwParmNum
    );
}