//======================================================================== // Copyright (C) 1997 Microsoft Corporation // Author: RameshV // Description: This file has been generated. Pl look at the .c file //======================================================================== #ifndef CONVERT_NAMES #define DhcpCreateSubnet DhcpCreateSubnetDS #define DhcpSetSubnetInfo DhcpSetSubnetInfoDS #define DhcpGetSubnetInfo DhcpGetSubnetInfoDS #define DhcpEnumSubnets DhcpEnumSubnetsDS #define DhcpDeleteSubnet DhcpDeleteSubnetDS #define DhcpCreateOption DhcpCreateOptionDS #define DhcpSetOptionInfo DhcpSetOptionInfoDS #define DhcpGetOptionInfo DhcpGetOptionInfoDS #define DhcpRemoveOption DhcpRemoveOptionDS #define DhcpSetOptionValue DhcpSetOptionValueDS #define DhcpGetOptionValue DhcpGetOptionValueDS #define DhcpEnumOptionValues DhcpEnumOptionValuesDS #define DhcpRemoveOptionValue DhcpRemoveOptionValueDS #define DhcpEnumOptions DhcpEnumOptionsDS #define DhcpSetOptionValues DhcpSetOptionValuesDS #define DhcpAddSubnetElement DhcpAddSubnetElementDS #define DhcpEnumSubnetElements DhcpEnumSubnetElementsDS #define DhcpRemoveSubnetElement DhcpRemoveSubnetElementDS #define DhcpAddSubnetElementV4 DhcpAddSubnetElementV4DS #define DhcpEnumSubnetElementsV4 DhcpEnumSubnetElementsV4DS #define DhcpRemoveSubnetElementV4 DhcpRemoveSubnetElementV4DS #define DhcpSetSuperScopeV4 DhcpSetSuperScopeV4DS #define DhcpGetSuperScopeInfoV4 DhcpGetSuperScopeInfoV4DS #define DhcpDeleteSuperScopeV4 DhcpDeleteSuperScopeV4DS #define DhcpSetClientInfo DhcpSetClientInfoDS #define DhcpGetClientInfo DhcpGetClientInfoDS #define DhcpSetClientInfoV4 DhcpSetClientInfoV4DS #define DhcpGetClientInfoV4 DhcpGetClientInfoV4DS #define DhcpCreateOptionV5 DhcpCreateOptionV5DS #define DhcpSetOptionInfoV5 DhcpSetOptionInfoV5DS #define DhcpGetOptionInfoV5 DhcpGetOptionInfoV5DS #define DhcpEnumOptionsV5 DhcpEnumOptionsV5DS #define DhcpRemoveOptionV5 DhcpRemoveOptionV5DS #define DhcpSetOptionValueV5 DhcpSetOptionValueV5DS #define DhcpSetOptionValuesV5 DhcpSetOptionValuesV5DS #define DhcpGetOptionValueV5 DhcpGetOptionValueV5DS #define DhcpEnumOptionValuesV5 DhcpEnumOptionValuesV5DS #define DhcpRemoveOptionValueV5 DhcpRemoveOptionValueV5DS #define DhcpCreateClass DhcpCreateClassDS #define DhcpModifyClass DhcpModifyClassDS #define DhcpDeleteClass DhcpDeleteClassDS #define DhcpGetClassInfo DhcpGetClassInfoDS #define DhcpEnumClasses DhcpEnumClassesDS #define DhcpGetAllOptions DhcpGetAllOptionsDS #define DhcpGetAllOptionValues DhcpGetAllOptionValuesDS #endif CONVERT_NAMES //DOC Create an option in DS. Checkout DhcpDsCreateOptionDef for more info... DWORD DhcpCreateOptionV5( // create a new option (must not exist) IN LPWSTR ServerIpAddress, IN DWORD Flags, IN DHCP_OPTION_ID OptionId, // must be between 0-255 or 256-511 (for vendor stuff) IN LPWSTR ClassName, IN LPWSTR VendorName, IN LPDHCP_OPTION OptionInfo ) ; //DOC Modify existing option's fields in the DS. See DhcpDsModifyOptionDef for more //DOC details DWORD DhcpSetOptionInfoV5( // Modify existing option's fields IN LPWSTR ServerIpAddress, IN DWORD Flags, IN DHCP_OPTION_ID OptionId, IN LPWSTR ClassName, IN LPWSTR VendorName, IN LPDHCP_OPTION OptionInfo ) ; //DOC not yet supported at this level... (this is supported in a //DOC DhcpDs function, no wrapper yet) DWORD DhcpGetOptionInfoV5( // retrieve option info from off ds structures IN LPWSTR ServerIpAddress, IN DWORD Flags, IN DHCP_OPTION_ID OptionId, IN LPWSTR ClassName, IN LPWSTR VendorName, OUT LPDHCP_OPTION *OptionInfo // allocate memory ) ; //DOC See DhcpDsEnumOptionDefs for more info on this function.. but essentially, all this //DOC does is to read thru the options and create a list of options.. DWORD DhcpEnumOptionsV5( // create list of all options in ds IN LPWSTR ServerIpAddress, IN DWORD Flags, IN LPWSTR ClassName, IN LPWSTR VendorName, IN OUT DHCP_RESUME_HANDLE *ResumeHandle, IN DWORD PreferredMaximum, OUT LPDHCP_OPTION_ARRAY *Options, OUT DWORD *OptionsRead, OUT DWORD *OptionsTotal ) ; //DOC Delete an option from off the DS. See DhcpDsDeleteOptionDef for //DOC more details. DWORD DhcpRemoveOptionV5( // remove an option from off DS IN LPWSTR ServerIpAddress, IN DWORD Flags, IN DHCP_OPTION_ID OptionId, IN LPWSTR ClassName, IN LPWSTR VendorName ) ; //DOC Set the specified option value in the DS. For more information, //DOC see DhcpDsSetOptionValue. DWORD DhcpSetOptionValueV5( // set the option value in ds IN LPWSTR ServerIpAddress, IN DWORD Flags, IN DHCP_OPTION_ID OptionId, IN LPWSTR ClassName, IN LPWSTR VendorName, IN LPDHCP_OPTION_SCOPE_INFO ScopeInfo, IN LPDHCP_OPTION_DATA OptionValue ) ; //DOC This function just calls the SetOptionValue function N times.. this is not //DOC atomic (), but even worse, it is highly inefficient, as it creates the //DOC required objects over and over again!!!!! //DOC This has to be fixed.. DWORD DhcpSetOptionValuesV5( // set a series of option values IN LPWSTR ServerIpAddress, IN DWORD Flags, IN LPWSTR ClassName, IN LPWSTR VendorName, IN LPDHCP_OPTION_SCOPE_INFO ScopeInfo, IN LPDHCP_OPTION_VALUE_ARRAY OptionValues ) ; //DOC This function retrives the value of an option from the DS. For more info, //DOC pl check DhcpDsGetOptionValue. DWORD DhcpGetOptionValueV5( IN LPWSTR ServerIpAddress, IN DWORD Flags, IN DHCP_OPTION_ID OptionId, IN LPWSTR ClassName, IN LPWSTR VendorName, IN LPDHCP_OPTION_SCOPE_INFO ScopeInfo, OUT LPDHCP_OPTION_VALUE *OptionValue ) ; //DOC Get the list of option values defined in DS. For more information, //DOC check DhcpDsEnumOptionValues. DWORD DhcpEnumOptionValuesV5( // get list of options defined in DS IN LPWSTR ServerIpAddress, IN DWORD Flags, IN LPWSTR ClassName, IN LPWSTR VendorName, IN LPDHCP_OPTION_SCOPE_INFO ScopeInfo, IN DHCP_RESUME_HANDLE *ResumeHandle, IN DWORD PreferredMaximum, OUT LPDHCP_OPTION_VALUE_ARRAY *OptionValues, OUT DWORD *OptionsRead, OUT DWORD *OptionsTotal ) ; //DOC Remove the option value from off the DS. See DhcpDsRemoveOptionValue //DOC for further information. DWORD DhcpRemoveOptionValueV5( // remove option value from DS IN LPWSTR ServerIpAddress, IN DWORD Flags, IN DHCP_OPTION_ID OptionId, IN LPWSTR ClassName, IN LPWSTR VendorName, IN LPDHCP_OPTION_SCOPE_INFO ScopeInfo ) ; //DOC Create a class in the DS. Please see DhcpDsCreateClass for more //DOC details on this function. DWORD DhcpCreateClass( // create a class in DS IN LPWSTR ServerIpAddress, IN DWORD ReservedMustBeZero, IN LPDHCP_CLASS_INFO ClassInfo ) ; //DOC Modify an existing class in DS. Please see DhcpDsModifyClass for more //DOC details on this function (this is just a wrapper). DWORD DhcpModifyClass( // modify existing class IN LPWSTR ServerIpAddress, IN DWORD ReservedMustBeZero, IN LPDHCP_CLASS_INFO ClassInfo ) ; //DOC Delete an existing class in DS. Please see DhcpDsModifyClass for more //DOC details on this function (this is just a wrapper). DWORD DhcpDeleteClass( // delete a class from off DS IN LPWSTR ServerIpAddress, IN DWORD ReservedMustBeZero, IN LPWSTR ClassName ) ; //DOC DhcpGetClassInfo completes the information provided for a class in struct //DOC PartialClassInfo. For more details pl see DhcpDsGetClassInfo. DWORD DhcpGetClassInfo( // fetch complete info frm DS IN LPWSTR ServerIpAddress, IN DWORD ReservedMustBeZero, IN LPDHCP_CLASS_INFO PartialClassInfo, OUT LPDHCP_CLASS_INFO *FilledClassInfo ) ; //DOC This is implemented in the DHCPDS module, but not exported here yet.. DWORD DhcpEnumClasses( IN LPWSTR 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 ) ; //DOC This is implemented in the DHCPDS module, but not exported here yet.. DWORD DhcpGetAllOptionValues( IN LPWSTR ServerIpAddress, IN DWORD Flags, IN LPDHCP_OPTION_SCOPE_INFO ScopeInfo, OUT LPDHCP_ALL_OPTION_VALUES *Values ) ; //DOC This is implememented in the DHCPDS module, but not exported here yet.. DWORD DhcpGetAllOptions( IN LPWSTR ServerIpAddress, IN DWORD Flags, OUT LPDHCP_ALL_OPTIONS *Options ) ; DWORD // ERROR_DHCP_OPTION_EXITS if option is already there DhcpCreateOption( // create a new option (must not exist) IN LPWSTR ServerIpAddress, IN DHCP_OPTION_ID OptionId, // must be between 0-255 or 256-511 (for vendor stuff) IN LPDHCP_OPTION OptionInfo ) ; DWORD // ERROR_DHCP_OPTION_NOT_PRESENT if option does not exist DhcpSetOptionInfo( // Modify existing option's fields IN LPWSTR ServerIpAddress, IN DHCP_OPTION_ID OptionID, IN LPDHCP_OPTION OptionInfo ) ; DWORD // ERROR_DHCP_OPTION_NOT_PRESENT DhcpGetOptionInfo( // retrieve the information from off the mem structures IN LPWSTR ServerIpAddress, IN DHCP_OPTION_ID OptionID, OUT LPDHCP_OPTION *OptionInfo // allocate memory using MIDL functions ) ; DWORD // ERROR_DHCP_OPTION_NOT_PRESENT if option does not exist DhcpEnumOptions( // enumerate the options defined IN LPWSTR ServerIpAddress, 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 DhcpRemoveOption( // remove the option definition from the registry IN LPWSTR ServerIpAddress, IN DHCP_OPTION_ID OptionID ) ; DWORD // OPTION_NOT_PRESENT if option is not defined DhcpSetOptionValue( // replace or add a new option value IN LPWSTR ServerIpAddress, IN DHCP_OPTION_ID OptionID, IN LPDHCP_OPTION_SCOPE_INFO ScopeInfo, IN LPDHCP_OPTION_DATA OptionValue ) ; DWORD // not atomic!!!! DhcpSetOptionValues( // set a bunch of options IN LPWSTR ServerIpAddress, IN LPDHCP_OPTION_SCOPE_INFO ScopeInfo, IN LPDHCP_OPTION_VALUE_ARRAY OptionValues ) ; DWORD DhcpGetOptionValue( // fetch the required option at required level IN LPWSTR ServerIpAddress, IN DHCP_OPTION_ID OptionID, IN LPDHCP_OPTION_SCOPE_INFO ScopeInfo, OUT LPDHCP_OPTION_VALUE *OptionValue // allocate memory using MIDL_user_allocate ) ; DWORD DhcpEnumOptionValues( IN LPWSTR ServerIpAddress, IN LPDHCP_OPTION_SCOPE_INFO ScopeInfo, IN DHCP_RESUME_HANDLE *ResumeHandle, IN DWORD PreferredMaximum, OUT LPDHCP_OPTION_VALUE_ARRAY *OptionValues, OUT DWORD *OptionsRead, OUT DWORD *OptionsTotal ) ; DWORD DhcpRemoveOptionValue( IN LPWSTR ServerIpAddress, IN DHCP_OPTION_ID OptionID, IN LPDHCP_OPTION_SCOPE_INFO ScopeInfo ) ; //DOC This function sets the superscope of a subnet, thereby creating the superscope //DOC if required. Please see DhcpDsSetSScope for more details. DWORD DhcpSetSuperScopeV4( // set superscope in DS. IN LPWSTR ServerIpAddress, IN DHCP_IP_ADDRESS SubnetAddress, IN LPWSTR SuperScopeName, IN BOOL ChangeExisting ) ; //DOC This function removes the superscope, and resets any subnet with this //DOC superscope.. so that all those subnets end up with no superscopes.. //DOC Please see DhcpDsDelSScope for more details. DWORD DhcpDeleteSuperScopeV4( // delete subnet sscope from DS IN LPWSTR ServerIpAddress, IN LPWSTR SuperScopeName ) ; //DOC This function retrievs the supercsope info for each subnet that is //DOC present for the given server. Please see DhcpDsGetSScopeInfo for more //DOC details on this.. DWORD DhcpGetSuperScopeInfoV4( // get sscope tbl from DS IN LPWSTR ServerIpAddress, OUT LPDHCP_SUPER_SCOPE_TABLE *SuperScopeTable ) ; //DOC This function creates a subnet in the DS with the specified params. //DOC Please see DhcpDsServerAddSubnet for more details on this function. DWORD DhcpCreateSubnet( // add subnet 2 DS for this srvr IN LPWSTR ServerIpAddress, IN DHCP_IP_ADDRESS SubnetAddress, IN LPDHCP_SUBNET_INFO SubnetInfo ) ; //DOC Modify existing subnet with new parameters... some restrictions apply. //DOC Please see DhcpDsServerModifySubnet for further details. DWORD DhcpSetSubnetInfo( // modify existing subnet params IN LPWSTR ServerIpAddress, IN DHCP_IP_ADDRESS SubnetAddress, IN LPDHCP_SUBNET_INFO SubnetInfo ) ; //DOC Implemented in the DHCPDS module but not exported thru here DWORD DhcpGetSubnetInfo( IN LPWSTR ServerIpAddress, IN DHCP_IP_ADDRESS SubnetAddress, OUT LPDHCP_SUBNET_INFO *SubnetInfo ) ; //DOC Implemented in the DHCPDS module but not exported thru here DWORD DhcpEnumSubnets( IN LPWSTR ServerIpAddress, IN DHCP_RESUME_HANDLE *ResumeHandle, IN DWORD PreferredMaximum, IN LPDHCP_IP_ARRAY *EnumInfo, IN DWORD *ElementsRead, IN DWORD *ElementsTotal ) ; //DOC This function deletes the subnet from the DS. For further information, pl //DOC see DhcpDsServerDelSubnet.. DWORD DhcpDeleteSubnet( // Del subnet from off DS IN LPWSTR ServerIpAddress, IN DHCP_IP_ADDRESS SubnetAddress, IN DHCP_FORCE_FLAG ForceFlag ) ; //DOC This function sets some particular information for RESERVATIONS only //DOC all other stuff it just ignores and returns success.. DWORD DhcpSetClientInfo( IN LPWSTR ServerIpAddresess, IN LPDHCP_CLIENT_INFO ClientInfo ) ; //DOC This function retrieves some particular client's information //DOC for RESERVATIONS only.. For all other stuff it returns CALL_NOT_IMPLEMENTED DWORD DhcpGetClientInfo( IN LPWSTR ServerIpAddress, IN LPDHCP_SEARCH_INFO SearchInfo, OUT LPDHCP_CLIENT_INFO *ClientInfo ) ; //DOC This function sets the client informatoin for RESERVATIONS only in DS //DOC For all toher clients it returns ERROR_SUCCESS w/o doing anything DWORD DhcpSetClientInfoV4( IN LPWSTR ServerIpAddress, IN LPDHCP_CLIENT_INFO_V4 ClientInfo ) ; //DOC Thsi function sets the client information for RESERVATIONS only //DOC For all others it returns ERROR_CALL_NOT_IMPLEMENTED DWORD DhcpGetClientInfoV4( IN LPWSTR ServerIpAddress, IN LPDHCP_SEARCH_INFO SearchInfo, OUT LPDHCP_CLIENT_INFO_V4 *ClientInfo ) ; //DOC This function adds a subnet element to a subnet in the DS. DWORD DhcpAddSubnetElement( IN LPWSTR ServerIpAddress, IN DHCP_IP_ADDRESS SubnetAddress, IN LPDHCP_SUBNET_ELEMENT_DATA AddElementInfo ) ; //DOC This function adds a subnet element to a subnet in the DS. DWORD DhcpAddSubnetElementV4( IN LPWSTR ServerIpAddress, IN DHCP_IP_ADDRESS SubnetAddress, IN LPDHCP_SUBNET_ELEMENT_DATA_V4 AddElementInfo ) ; //DOC This is not yet implemented here.. DWORD DhcpEnumSubnetElementsV4( IN LPWSTR 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_V4 *EnumElementInfo, OUT DWORD *ElementsRead, OUT DWORD *ElementsTotal ) ; //DOC This is not yet implemented here.. DWORD DhcpEnumSubnetElements( IN LPWSTR 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 *EnumElementInfo, OUT DWORD *ElementsRead, OUT DWORD *ElementsTotal ) ; //DOC This function removes either an exclusion, ip range or reservation //DOC from the subnet... in the DS. DWORD DhcpRemoveSubnetElement( // remove subnet element IN LPWSTR ServerIpAddress, IN DHCP_IP_ADDRESS SubnetAddress, IN LPDHCP_SUBNET_ELEMENT_DATA RemoveElementInfo, IN DHCP_FORCE_FLAG ForceFlag ) ; //DOC This function removes either an exclusion, ip range or reservation //DOC from the subnet... in the DS. DWORD DhcpRemoveSubnetElementV4( // remove subnet element IN LPWSTR ServerIpAddress, IN DHCP_IP_ADDRESS SubnetAddress, IN LPDHCP_SUBNET_ELEMENT_DATA_V4 RemoveElementInfo, IN DHCP_FORCE_FLAG ForceFlag ) ; #ifndef CONVERT_NAMES #undef DhcpCreateSubnet #undef DhcpSetSubnetInfo #undef DhcpGetSubnetInfo #undef DhcpEnumSubnets #undef DhcpDeleteSubnet #undef DhcpCreateOption #undef DhcpSetOptionInfo #undef DhcpGetOptionInfo #undef DhcpRemoveOption #undef DhcpSetOptionValue #undef DhcpGetOptionValue #undef DhcpEnumOptionValues #undef DhcpRemoveOptionValue #undef DhcpEnumOptions #undef DhcpSetOptionValues #undef DhcpAddSubnetElementV4 #undef DhcpEnumSubnetElementsV4 #undef DhcpRemoveSubnetElementV4 #undef DhcpAddSubnetElement #undef DhcpEnumSubnetElements #undef DhcpRemoveSubnetElement #undef DhcpSetSuperScopeV4 #undef DhcpGetSuperScopeInfoV4 #undef DhcpDeleteSuperScopeV4 #undef DhcpSetClientInfo #undef DhcpGetClientInfo #undef DhcpSetClientInfoV4 #undef DhcpGetClientInfoV4 #undef DhcpCreateOptionV5 #undef DhcpSetOptionInfoV5 #undef DhcpGetOptionInfoV5 #undef DhcpEnumOptionsV5 #undef DhcpRemoveOptionV5 #undef DhcpSetOptionValueV5 #undef DhcpSetOptionValuesV5 #undef DhcpGetOptionValueV5 #undef DhcpEnumOptionValuesV5 #undef DhcpRemoveOptionValueV5 #undef DhcpCreateClass #undef DhcpModifyClass #undef DhcpDeleteClass #undef DhcpGetClassInfo #undef DhcpEnumClasses #undef DhcpGetAllOptions #undef DhcpGetAllOptionValues #endif CONVERT_NAMES #define DHCP_SERVER_ANOTHER_ENTERPRISE 0x01 typedef DHCPDS_SERVER DHCP_SERVER_INFO; typedef PDHCPDS_SERVER PDHCP_SERVER_INFO; typedef LPDHCPDS_SERVER LPDHCP_SERVER_INFO; typedef DHCPDS_SERVERS DHCP_SERVER_INFO_ARRAY; typedef PDHCPDS_SERVERS PDHCP_SERVER_INFO_ARRAY; typedef LPDHCPDS_SERVERS LPDHCP_SERVER_INFO_ARRAY; //DOC DhcpEnumServersDS lists the servers found in the DS along with the //DOC addresses and other information. The whole server is allocated as a blob, //DOC and should be freed in one shot. No parameters are currently used, other //DOC than Servers which will be an OUT parameter only. DWORD DhcpEnumServersDS( IN DWORD Flags, IN LPVOID IdInfo, OUT LPDHCP_SERVER_INFO_ARRAY *Servers, IN LPVOID CallbackFn, IN LPVOID CallbackData ) ; //DOC DhcpAddServerDS adds a particular server to the DS. If the server exists, //DOC then, this returns error. If the server does not exist, then this function //DOC adds the server in DS, and also uploads the configuration from the server //DOC to the ds. DWORD DhcpAddServerDS( IN DWORD Flags, IN LPVOID IdInfo, IN LPDHCP_SERVER_INFO NewServer, IN LPVOID CallbackFn, IN LPVOID CallbackData ) ; //DOC DhcpDeleteServerDS deletes the servers from off the DS and recursively //DOC deletes the server object..(i.e everything belonging to the server is deleted). //DOC If the server does not exist, it returns an error. DWORD DhcpDeleteServerDS( IN DWORD Flags, IN LPVOID IdInfo, IN LPDHCP_SERVER_INFO NewServer, IN LPVOID CallbackFn, IN LPVOID CallbackData ) ; //DOC DhcpDsInitDS initializes everything in this module. DWORD DhcpDsInitDS( DWORD Flags, LPVOID IdInfo ) ; //DOC DhcpDsCleanupDS uninitiailzes everything in this module. VOID DhcpDsCleanupDS( VOID ) ; //DOC This function is defined in validate.c //DOC Only the stub is here. DWORD DhcpDsValidateService( // check to validate for dhcp IN LPWSTR Domain, IN DWORD *Addresses OPTIONAL, IN ULONG nAddresses, IN LPWSTR UserName, IN LPWSTR Password, IN DWORD AuthFlags, OUT LPBOOL Found, OUT LPBOOL IsStandAlone ); //DOC DhcpDsGetLastUpdateTime is defined in upndown.c --> see there for more details. DWORD DhcpDsGetLastUpdateTime( // last update time for server IN LPWSTR ServerName, // this is server of interest IN OUT LPFILETIME Time // fill in this w./ the time ); //======================================================================== // end of file //========================================================================