458 lines
15 KiB
Plaintext
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
|
|
//================================================================================
|