|
|
//-------------------------------------------------------------------------------- // This is the newer RPC interface. Apparently, the old one had to be // hand checked in. I do not want to handle the extra trouble of keeping up // with the old interface. So, I am just creating a new one for NT5.0. // Please check dhcp.idl for old interface. //--------------------------------------------------------------------------------
// // New interface. // // [ uuid(5b821720-f63b-11d0-aad2-00c04fc324db), version(1.0), pointer_default(unique) ]
interface dhcpsrv2
// // New interface body //
{ import "imports.idl";
typedef [handle] LPWSTR DHCP_SRV_HANDLE;
DWORD R_DhcpEnumSubnetClientsV5( [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in] DHCP_IP_ADDRESS SubnetAddress, [in, out] DHCP_RESUME_HANDLE *ResumeHandle, [in] DWORD PreferredMaximum, [out] LPDHCP_CLIENT_INFO_ARRAY_V5 *ClientInfo, [out] DWORD *ClientsRead, [out] DWORD *ClientsTotal );
// // MDHCP Apis //
DWORD R_DhcpSetMScopeInfo( [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in, ref, string] WCHAR *MScopeName, [in, ref] LPDHCP_MSCOPE_INFO MScopeInfo, [in] BOOL NewScope );
DWORD R_DhcpGetMScopeInfo( [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in, ref, string] WCHAR *MScopeName, [out] LPDHCP_MSCOPE_INFO *MScopeInfo );
DWORD R_DhcpEnumMScopes( [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in, out] DHCP_RESUME_HANDLE *ResumeHandle, [in] DWORD PreferredMaximum, [out] LPDHCP_MSCOPE_TABLE *MScopeTable, [out] DWORD *ElementsRead, [out] DWORD *ElementsTotal );
DWORD R_DhcpAddMScopeElement( [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in, ref, string] WCHAR *MScopeName, [in, ref] LPDHCP_SUBNET_ELEMENT_DATA_V4 AddElementInfo );
DWORD R_DhcpEnumMScopeElements( [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in, ref, string] WCHAR *MScopeName, [in] DHCP_SUBNET_ELEMENT_TYPE EnumElementType, [in, out] DHCP_RESUME_HANDLE *ResumeHandle, [in] DWORD PreferredMaximum, [out] LPDHCP_SUBNET_ELEMENT_INFO_ARRAY_V4 *EnumElementInfo, [out] DWORD *ElementsRead, [out] DWORD *ElementsTotal );
DWORD R_DhcpRemoveMScopeElement( [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in, ref, string] WCHAR *MScopeName, [in, ref] LPDHCP_SUBNET_ELEMENT_DATA_V4 RemoveElementInfo, [in] DHCP_FORCE_FLAG ForceFlag );
DWORD R_DhcpDeleteMScope( [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in, ref, string] WCHAR *MScopeName, [in] DHCP_FORCE_FLAG ForceFlag );
DWORD R_DhcpScanMDatabase( [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in, ref, string] WCHAR *MScopeName, [in] DWORD FixFlag, [out] LPDHCP_SCAN_LIST *ScanList );
// // Client APIs //
DWORD R_DhcpCreateMClientInfo( [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in, ref, string] WCHAR *MScopeName, [in, ref] LPDHCP_MCLIENT_INFO ClientInfo );
DWORD R_DhcpSetMClientInfo( [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in, ref] LPDHCP_MCLIENT_INFO ClientInfo );
DWORD R_DhcpGetMClientInfo( [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in, ref] LPDHCP_SEARCH_INFO SearchInfo, [out] LPDHCP_MCLIENT_INFO *ClientInfo );
DWORD R_DhcpDeleteMClientInfo( [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in, ref] LPDHCP_SEARCH_INFO ClientInfo );
DWORD R_DhcpEnumMScopeClients( [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in, ref, string] WCHAR *MScopeName, [in, out] DHCP_RESUME_HANDLE *ResumeHandle, [in] DWORD PreferredMaximum, [out] LPDHCP_MCLIENT_INFO_ARRAY *ClientInfo, [out] DWORD *ClientsRead, [out] DWORD *ClientsTotal );
DWORD // ERROR_DHCP_OPTION_EXITS if option is already there R_DhcpCreateOptionV5( // create a new option (must not exist) [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in] DWORD Flags, [in] DHCP_OPTION_ID OptionId, // must be between 0-255 or 256-511 (for vendor stuff) [in, string, unique] WCHAR* ClassName, [in, string, unique] WCHAR* VendorName, [in] LPDHCP_OPTION OptionInfo ) ;
DWORD // ERROR_DHCP_OPTION_NOT_PRESENT if option does not exist R_DhcpSetOptionInfoV5( // Modify existing option's fields [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in] DWORD Flags, [in] DHCP_OPTION_ID OptionID, [in, string, unique] WCHAR* ClassName, [in, string, unique] WCHAR* VendorName, [in] LPDHCP_OPTION OptionInfo ) ;
DWORD // ERROR_DHCP_OPTION_NOT_PRESENT R_DhcpGetOptionInfoV5( // retrieve the information from off the mem structures [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in] DWORD Flags, [in] DHCP_OPTION_ID OptionID, [in, string, unique] WCHAR* ClassName, [in, string, unique] WCHAR* VendorName, [out] LPDHCP_OPTION *OptionInfo // allocate memory using MIDL functions ) ;
DWORD // ERROR_DHCP_OPTION_NOT_PRESENT if option does not exist R_DhcpEnumOptionsV5( // enumerate the options defined [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in] DWORD Flags, [in, string, unique] WCHAR* ClassName, [in, string, unique] WCHAR* VendorName, [in, out] DHCP_RESUME_HANDLE *ResumeHandle, // must be zero intially and then never touched [in] DWORD PreferredMaximum, // max # of bytes of info to pass along [out] LPDHCP_OPTION_ARRAY *Options, // fill this option array [out] DWORD *OptionsRead, // fill in the # of options read [out] DWORD *OptionsTotal // fill in the total # here ) ;
DWORD // ERROR_DHCP_OPTION_NOT_PRESENT if option not existent R_DhcpRemoveOptionV5( // remove the option definition from the registry [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in] DWORD Flags, [in] DHCP_OPTION_ID OptionID, [in, string, unique] WCHAR* ClassName, [in, string, unique] WCHAR* VendorName ) ;
DWORD // OPTION_NOT_PRESENT if option is not defined R_DhcpSetOptionValueV5( // replace or add a new option value [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in] DWORD Flags, [in] DHCP_OPTION_ID OptionId, [in, string, unique] WCHAR* ClassName, [in, string, unique] WCHAR* VendorName, [in] LPDHCP_OPTION_SCOPE_INFO ScopeInfo, [in] LPDHCP_OPTION_DATA OptionValue ) ;
DWORD // not atomic!!!! R_DhcpSetOptionValuesV5( // set a bunch of options [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in] DWORD Flags, [in, string, unique] WCHAR* ClassName, [in, string, unique] WCHAR* VendorName, [in] LPDHCP_OPTION_SCOPE_INFO ScopeInfo, [in] LPDHCP_OPTION_VALUE_ARRAY OptionValues ) ;
DWORD R_DhcpGetOptionValueV5( // fetch the required option at required level [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in] DWORD Flags, [in] DHCP_OPTION_ID OptionID, [in, string, unique] WCHAR* ClassName, [in, string, unique] WCHAR* VendorName, [in] LPDHCP_OPTION_SCOPE_INFO ScopeInfo, [out] LPDHCP_OPTION_VALUE *OptionValue // allocate memory using MIDL_user_allocate ) ;
DWORD R_DhcpEnumOptionValuesV5( [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in] DWORD Flags, [in, string, unique] WCHAR* ClassName, [in, string, unique] WCHAR* VendorName, [in] LPDHCP_OPTION_SCOPE_INFO ScopeInfo, [in,out] DHCP_RESUME_HANDLE *ResumeHandle, [in] DWORD PreferredMaximum, [out] LPDHCP_OPTION_VALUE_ARRAY *OptionValues, [out] DWORD *OptionsRead, [out] DWORD *OptionsTotal ) ;
DWORD R_DhcpRemoveOptionValueV5( [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in] DWORD Flags, [in] DHCP_OPTION_ID OptionID, [in, string, unique] WCHAR* ClassName, [in, string, unique] WCHAR* VendorName, [in] LPDHCP_OPTION_SCOPE_INFO ScopeInfo ) ;
DWORD R_DhcpCreateClass( [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in] DWORD ReservedMustBeZero, [in] LPDHCP_CLASS_INFO ClassInfo ) ;
DWORD R_DhcpModifyClass( [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in] DWORD ReservedMustBeZero, [in] LPDHCP_CLASS_INFO ClassInfo ) ;
DWORD R_DhcpDeleteClass( [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in] DWORD ReservedMustBeZero, [in, string, unique] WCHAR* ClassName ) ;
DWORD R_DhcpGetClassInfo( [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in] DWORD ReservedMustBeZero, [in] LPDHCP_CLASS_INFO PartialClassInfo, [out] LPDHCP_CLASS_INFO *FilledClassInfo ) ;
DWORD R_DhcpEnumClasses( [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in] DWORD ReservedMustBeZero, [in,out] DHCP_RESUME_HANDLE *ResumeHandle, [in] DWORD PreferredMaximum, [out] LPDHCP_CLASS_INFO_ARRAY *ClassInfoArray, [out] DWORD *nRead, [out] DWORD *nTotal ) ;
DWORD R_DhcpGetAllOptions( [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in] DWORD Flags, [out] LPDHCP_ALL_OPTIONS *OptionStruct ) ;
DWORD R_DhcpGetAllOptionValues( [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in] DWORD Flags, [in] LPDHCP_OPTION_SCOPE_INFO ScopeInfo, [out] LPDHCP_ALL_OPTION_VALUES *Values ) ;
DWORD R_DhcpGetMCastMibInfo( [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [out] LPDHCP_MCAST_MIB_INFO *MibInfo );
DWORD R_DhcpAuditLogSetParams( [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in] DWORD Flags, [in, string] LPWSTR AuditLogDir, [in] DWORD DiskCheckInterval, [in] DWORD MaxLogFilesSize, [in] DWORD MinSpaceOnDisk );
typedef [string] LPWSTR LPWSTR_RPC_STRING;
DWORD R_DhcpAuditLogGetParams( [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in] DWORD Flags, [out] LPWSTR_RPC_STRING *AuditLogDir, [out] DWORD *DiskCheckInterval, [out] DWORD *MaxLogFilesSize, [out] DWORD *MinSpaceOnDisk );
DWORD R_DhcpServerQueryAttribute( [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in] ULONG dwReserved, [in] DHCP_ATTRIB_ID DhcpAttribId, [out] LPDHCP_ATTRIB *pDhcpAttrib );
DWORD R_DhcpServerQueryAttributes( [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in] ULONG dwReserved, // There are 6 attributes. Check DHCP_ATTRIB_* in dhcpapi.w, [in, range(0,6)] ULONG dwAttribCount, [in, size_is(dwAttribCount)] LPDHCP_ATTRIB_ID pDhcpAttribs, [out] LPDHCP_ATTRIB_ARRAY *pDhcpAttribArr );
DWORD // Status code R_DhcpServerRedoAuthorization( // retry the rogue server stuff [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in] ULONG dwReserved );
DWORD R_DhcpAddSubnetElementV5( [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in] DHCP_IP_ADDRESS SubnetAddress, [in, ref] LPDHCP_SUBNET_ELEMENT_DATA_V5 AddElementInfo );
DWORD R_DhcpEnumSubnetElementsV5( [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in] DHCP_IP_ADDRESS SubnetAddress, [in] DHCP_SUBNET_ELEMENT_TYPE EnumElementType, [in, out] DHCP_RESUME_HANDLE *ResumeHandle, [in] DWORD PreferredMaximum, [out] LPDHCP_SUBNET_ELEMENT_INFO_ARRAY_V5 *EnumElementInfo, [out] DWORD *ElementsRead, [out] DWORD *ElementsTotal );
DWORD R_DhcpRemoveSubnetElementV5( [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in] DHCP_IP_ADDRESS SubnetAddress, [in, ref] LPDHCP_SUBNET_ELEMENT_DATA_V5 RemoveElementInfo, [in] DHCP_FORCE_FLAG ForceFlag );
DWORD R_DhcpGetServerBindingInfo( [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in] ULONG Flags, [out] LPDHCP_BIND_ELEMENT_ARRAY *BindElementsInfo );
DWORD R_DhcpSetServerBindingInfo( [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in] ULONG Flags, [ref] LPDHCP_BIND_ELEMENT_ARRAY BindElementsInfo );
DWORD R_DhcpQueryDnsRegCredentials( [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, // 1024 chars name snould be good enough [in, range( 0, 1024 )] ULONG UnameSize, [out, size_is(UnameSize)] LPWSTR Uname, [in, range( 0, 1024 )] ULONG DomainSize, [out, size_is(UnameSize)] LPWSTR Domain );
DWORD R_DhcpSetDnsRegCredentials( [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in, string, unique] LPWSTR Uname, [in, string, unique] LPWSTR Domain, [in, string, unique] LPWSTR Passwd );
DWORD R_DhcpBackupDatabase( [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in, string] LPWSTR Path );
DWORD R_DhcpRestoreDatabase( [in, unique, string] DHCP_SRV_HANDLE ServerIpAddress, [in, string] LPWSTR Path );
}
//================================================================================ // end of file //================================================================================
|