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

458 lines
15 KiB
Plaintext

//--------------------------------------------------------------------------------
// 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,
[in] 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,
[in] ULONG UnameSize,
[out, size_is(UnameSize)] LPWSTR Uname,
[in] 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
//================================================================================