|
|
/*++
Copyright (c) 1995 Microsoft Corporation
Module Name:
nntp.idl
Abstract:
Contains the Nntp RPC interface specification for the NNTP server. This includes API from the following catagories:
Also contains the RPC specific data structures for these API.
Author:
Johnson Apacible (johnsona) 13-Oct-1995 Based on srvsvc.idl code from DanL and JohnsonA
Environment:
User Mode - Win32 - MIDL
Revision History:
--*/
// // Interface Attributes //
[ uuid(4f82f460-0e21-11cf-909e-00805f48a135), version(4.0), #ifdef __midl ms_union, #endif // __midl pointer_default(unique) ]
interface nntp
{
import "import.idl"; #include <lmcons.h>
// // BUGBUG - take this definition out when midl understands LPWSTR etc //
typedef [handle] LPWSTR NNTP_HANDLE; typedef [handle] LPWSTR NNTP_IMPERSONATE_HANDLE;
// // Structures - Nntp //
NET_API_STATUS NntprQueryStatistics( [in,string,unique] NNTP_HANDLE ServerName, [in] DWORD Level, [out] LPNNTP_STATISTICS_BLOCK_ARRAY *StatInfo );
NET_API_STATUS NntprClearStatistics( [in,string,unique] NNTP_HANDLE ServerName, [in] DWORD InstanceId );
// // Feed information //
typedef struct _I_FEED_INFO {
[string] LPWSTR ServerName; FEED_TYPE FeedType;
FILETIME PullRequestTime; FILETIME StartTime; FILETIME NextActiveTimeHigh;
DWORD FeedInterval; DWORD FeedId; BOOL AutoCreate; BOOL Enabled ;
DWORD cbNewsgroups; [size_is(cbNewsgroups)] PUCHAR Newsgroups; DWORD cbDistribution; [size_is(cbDistribution)] PUCHAR Distribution; DWORD cbUucpName ; [size_is(cbUucpName),unique] PUCHAR UucpName ; DWORD cbFeedTempDirectory ; [size_is(cbFeedTempDirectory),unique] PUCHAR FeedTempDirectory ;
DWORD MaxConnectAttempts ; DWORD ConcurrentSessions ;
// // Feed security settings - for outgoing feeds only ! //
DWORD SessionSecurityType ;
DWORD AuthenticationSecurityType ; DWORD cbAccountName ; [size_is(cbAccountName),unique] PUCHAR NntpAccountName ; DWORD cbPassword ; [size_is(cbPassword),unique] PUCHAR NntpPassword ;
BOOL fAllowControlMessages; DWORD OutgoingPort; DWORD FeedPairId;
} I_FEED_INFO, *LPI_FEED_INFO;
typedef struct _NNTP_FEED_ENUM_STRUCT { DWORD EntriesRead; [size_is(EntriesRead)] LPI_FEED_INFO Buffer; } NNTP_FEED_ENUM_STRUCT, *LPNNTP_FEED_ENUM_STRUCT;
// // Feed APIs //
NET_API_STATUS NET_API_FUNCTION NntprEnumerateFeeds( [in,string,unique] NNTP_HANDLE ServerName, [in] DWORD InstanceId, [out] LPNNTP_FEED_ENUM_STRUCT Buffer );
NET_API_STATUS NET_API_FUNCTION NntprGetFeedInformation( [in,string,unique] NNTP_HANDLE ServerName, [in] DWORD InstanceId, [in] DWORD FileId, [out] LPI_FEED_INFO *Buffer );
NET_API_STATUS NET_API_FUNCTION NntprSetFeedInformation( [in,string,unique] NNTP_HANDLE ServerName, [in] DWORD InstanceId, [in] LPI_FEED_INFO FeedInfo, [in,out,unique] LPDWORD ParmErr );
NET_API_STATUS NET_API_FUNCTION NntprAddFeed( [in,string,unique] NNTP_HANDLE ServerName, [in] DWORD InstanceId, [in] LPI_FEED_INFO FeedInfo, [in,out,unique] LPDWORD ParmErr, [out] LPDWORD pdwFeedId );
NET_API_STATUS NET_API_FUNCTION NntprDeleteFeed( [in,string,unique] NNTP_HANDLE ServerName, [in] DWORD InstanceId, [in] DWORD FeedId );
NET_API_STATUS NET_API_FUNCTION NntprEnableFeed( [in,string,unique] NNTP_HANDLE ServerName, [in] DWORD InstanceId, [in] DWORD FeedId, [in] BOOL Enable, [in] BOOL Refill, [in] FILETIME RefillTime ) ;
typedef struct _NNTP_SESS_ENUM_STRUCT { DWORD EntriesRead; [size_is(EntriesRead)] LPNNTP_SESSION_INFO Buffer; } NNTP_SESS_ENUM_STRUCT, *LPNNTP_SESS_ENUM_STRUCT;
// // Session APIs //
NET_API_STATUS NET_API_FUNCTION NntprEnumerateSessions( [in,string,unique] NNTP_HANDLE ServerName, [in] DWORD InstanceId, [out] LPNNTP_SESS_ENUM_STRUCT Buffer );
NET_API_STATUS NET_API_FUNCTION NntprTerminateSession( [in,string,unique] NNTP_HANDLE ServerName, [in] DWORD InstanceId, [in,string,unique] LPSTR UserName, [in,string,unique] LPSTR IPAddress );
// // Expiration structures and APIs //
typedef struct _I_EXPIRE_INFO { // // Expiration policies are numbered // DWORD ExpireId ;
// // Units of Megabytes // DWORD ExpireSizeHorizon ;
// // In retail builds - units of hours, debug builds - units of ?? // DWORD ExpireTime ;
DWORD cbNewsgroups ; [size_is(cbNewsgroups)] PUCHAR Newsgroups;
// // Expire policy name // [string] LPWSTR ExpirePolicy;
} I_EXPIRE_INFO, *LPI_EXPIRE_INFO ;
typedef struct _NNTP_EXPIRE_ENUM_STRUCT { DWORD EntriesRead; [size_is(EntriesRead)] LPI_EXPIRE_INFO Buffer; } NNTP_EXPIRE_ENUM_STRUCT, *LPNNTP_EXPIRE_ENUM_STRUCT ;
NET_API_STATUS NET_API_FUNCTION NntprEnumerateExpires( [in,string,unique] NNTP_HANDLE ServerName, [in] DWORD InstanceId, [out] LPNNTP_EXPIRE_ENUM_STRUCT Buffer ) ;
NET_API_STATUS NET_API_FUNCTION NntprAddExpire( [in,string,unique] NNTP_HANDLE ServerName, [in] DWORD InstanceId, [in] LPI_EXPIRE_INFO ExpireInfo, [in,out,unique] LPDWORD ParmErr, [out] LPDWORD pdwExpireId ) ;
NET_API_STATUS NET_API_FUNCTION NntprDeleteExpire( [in,string,unique] NNTP_HANDLE ServerName, [in] DWORD InstanceId, [in] DWORD ExpireId ) ;
// // For some reason this approach generates bad stubs - try another ! // //NET_API_STATUS //NET_API_FUNCTION //NntprGetExpireInformation( // [in,string,unique] NNTP_HANDLE ServerName, // [in] DWORD ExpireId, // [out] LPI_EXPIRE_INFO *Buffer // ) ;
NET_API_STATUS NET_API_FUNCTION NntprGetExpireInformation( [in,string,unique] NNTP_HANDLE ServerName, [in] DWORD InstanceId, [in] DWORD ExpireId, [out] LPNNTP_EXPIRE_ENUM_STRUCT Buffer ) ;
NET_API_STATUS NET_API_FUNCTION NntprSetExpireInformation( [in,string,unique] NNTP_HANDLE ServerName, [in] DWORD InstanceId, [in] LPI_EXPIRE_INFO ExpireInfo, [in,out,unique] LPDWORD ParmErr ) ;
typedef struct _I_NEWSGROUP_INFO {
// // Name of the newsgroup - must always be provided // DWORD cbNewsgroup ; [size_is(cbNewsgroup)] PUCHAR Newsgroup ; DWORD cbDescription ; [size_is(cbDescription),unique] PUCHAR Description ;
DWORD cbModerator ; [size_is(cbModerator),unique] PUCHAR Moderator ;
BOOL fIsModerated ; BOOL ReadOnly ; DWORD cbPrettyname ; [size_is(cbPrettyname),unique] PUCHAR Prettyname ;
FILETIME ftCreationDate;
} I_NEWSGROUP_INFO, *LPI_NEWSGROUP_INFO ;
NET_API_STATUS NET_API_FUNCTION NntprGetNewsgroup( [in,string,unique] NNTP_HANDLE ServerName, [in] DWORD InstanceId, [in,out] LPI_NEWSGROUP_INFO *NewsgroupInfo ) ;
NET_API_STATUS NET_API_FUNCTION NntprSetNewsgroup( [in,string,unique] NNTP_HANDLE ServerName, [in] DWORD InstanceId, [in] LPI_NEWSGROUP_INFO NewsgroupInfo ) ;
NET_API_STATUS NET_API_FUNCTION NntprCreateNewsgroup( [in,string,unique] NNTP_HANDLE ServerName, [in] DWORD InstanceId, [in] LPI_NEWSGROUP_INFO NewsgroupInfo ) ;
NET_API_STATUS NET_API_FUNCTION NntprDeleteNewsgroup( [in,string,unique] NNTP_HANDLE ServerName, [in] DWORD InstanceId, [in] LPI_NEWSGROUP_INFO NewsgroupInfo ) ;
// // Find APIs //
NET_API_STATUS NntprFindNewsgroup( [in,string,unique] NNTP_HANDLE ServerName, [in] DWORD InstanceId, [in,string,unique] NNTP_HANDLE NewsgroupPrefix, [in] DWORD MaxResults, [out] LPDWORD pdwResultsFound, [out] LPNNTP_FIND_LIST *ppFindList );
// // Admin APIs //
typedef struct _I_NNTP_CONFIG_INFO {
DWORD FieldControl;
BOOL AllowClientPosting ;
BOOL AllowFeedPosting ;
[string] LPSTR Organization ;
DWORD ServerPostHardLimit ; DWORD ServerPostSoftLimit ;
DWORD ServerFeedHardLimit ; DWORD ServerFeedSoftLimit ;
DWORD dwEncCaps;
[string] LPWSTR SmtpServerAddress;
[string] LPWSTR UucpServerName;
BOOL AllowControlMessages;
[string] LPWSTR DefaultModerator;
} I_NNTP_CONFIG_INFO, *LPI_NNTP_CONFIG_INFO ;
NET_API_STATUS NET_API_FUNCTION NntprGetAdminInformation( [in,string,unique] NNTP_HANDLE ServerName, [in] DWORD InstanceId, [out] LPI_NNTP_CONFIG_INFO* ConfigInfo );
NET_API_STATUS NET_API_FUNCTION NntprSetAdminInformation( [in,string,unique] NNTP_HANDLE ServerName, [in] DWORD InstanceId, [in] LPI_NNTP_CONFIG_INFO ConfigInfo, [in,out,unique] LPDWORD ParmErr );
// // Nntpbld structs and RPCs //
typedef struct _I_NNTPBLD_INFO {
// // Verbosity of reporting // BOOL Verbose ;
// // Specify whether to blow away all old data structures // BOOL DoClean ;
// // If TRUE then don't delete the history file regardless of other settings. // BOOL NoHistoryDelete ;
// // 0x00000000 for thorough ie delete all index files // 0x00000001 for standard ie reuse all index files // 0x00000010 for medium ie validate index files // DWORD ReuseIndexFiles ;
// // If TRUE, omit non-leaf dirs // BOOL OmitNonleafDirs ;
// // Name of a file containing either an INN style 'Active' file or // a tool generated newsgroup list file. Either way, we will suck // newsgroups out of this file and use them to build a news tree. // DWORD cbGroupFile ; [string] LPWSTR szGroupFile ; // // Name of report file // DWORD cbReportFile ; [string] LPWSTR szReportFile ;
// // If TRUE then szGroupFile specifies an INN style Active file, // otherwise it specifies a tool generated human edit newsgroup list. // BOOL IsActiveFile ;
// // Number of rebuild threads //
DWORD NumThreads ;
} I_NNTPBLD_INFO, *LPI_NNTPBLD_INFO ;
// // Nntpbld RPCs // //
NET_API_STATUS NET_API_FUNCTION NntprStartRebuild( [in,string,unique] NNTP_HANDLE ServerName, [in] DWORD InstanceId, [in] LPI_NNTPBLD_INFO pBuildInfo, [in,out,unique] LPDWORD ParmErr );
NET_API_STATUS NET_API_FUNCTION NntprGetBuildStatus( [in,string,unique] NNTP_HANDLE ServerName, [in] DWORD InstanceId, [in] BOOL fCancel, [out] LPDWORD pdwProgress );
#if 0 // // Directory Drop APIs // NET_API_STATUS NET_API_FUNCTION NntprAddDropNewsgroup( [in,string,unique] NNTP_HANDLE ServerName, [in] DWORD InstanceId, [in,string] LPCSTR szNewsgroup);
NET_API_STATUS NET_API_FUNCTION NntprRemoveDropNewsgroup( [in,string,unique] NNTP_HANDLE ServerName, [in] DWORD InstanceId, [in,string] LPCSTR szNewsgroup); #endif
// // CancelMessage API // NET_API_STATUS NET_API_FUNCTION NntprCancelMessageID( [in,string,unique] NNTP_HANDLE ServerName, [in] DWORD InstanceId, [in,string] LPCSTR szMessageID);
// // VRoot status API NET_API_STATUS NET_API_FUNCTION NntprGetVRootWin32Error( [in,string,unique] NNTP_HANDLE ServerName, [in] DWORD InstanceId, [in,string] LPWSTR wszVRootPath, [out] DWORD* pdwWin32Error ); }
|