xpmgr/BuildTools/Include/sbtsv.idl

949 lines
24 KiB
Plaintext

cpp_quote("#pragma once")
import "unknwn.idl";
import "oaidl.idl";
import "SessdirPublicTypes.idl";
//
// Forward declarations
//
//Interfaces implemented by the client
interface ITsSbPlugin;
interface ITsSbResourcePlugin;
interface ITsSbLoadBalancing;
interface ITsSbPlacement;
interface ITsSbOrchestration;
interface ITsSbEnvironment;
interface ITsSbLoadBalanceResult;
interface ITsSbTarget;
interface ITsSbSession;
interface ITsSbResourceNotification;
//Interfaces implemented by the broker
interface ITsSbPropertySet;
interface ITsSbPluginPropertySet;
interface ITsSbClientConnectionPropertySet;
interface ITsSbTargetPropertySet;
interface ITsSbEnvironmentPropertySet;
interface ITsSbBaseNotifySink;
interface ITsSbPluginNotifySink;
interface ITsSbTargetNotifySink;
interface ITsSbSessionNotifySink;
interface ITsSbLoadBalancingNotifySink;
interface ITsSbPlacementNotifySink;
interface ITsSbOrchestrationNotifySink;
interface ITsSbClientConnection;
interface ITsSbProvider;
interface ITsSbResourcePluginStore;
interface ITsSbGlobalStore;
[
object,
uuid(48cd7406-caab-465f-a5d6-baa863b9ea4f),
helpstring("interface ITsSbPlugin"),
pointer_default(unique)
]
interface ITsSbPlugin : IUnknown
{
[id(1), helpstring("method Initialize")]
HRESULT
Initialize(
[in] ITsSbProvider *pProvider,
[in] ITsSbPluginNotifySink* pNotifySink,
[in] ITsSbPluginPropertySet* pPropertySet
);
[id(2), helpstring("method Terminate")]
HRESULT
Terminate(
[in] HRESULT hr
);
};
[
object,
uuid(7633f4e7-8a10-49a1-8413-e4783001b70e),
helpstring("interface ITsSbResourcePlugin"),
pointer_default(unique)
]
interface ITsSbResourcePlugin : ITsSbPlugin
{
[id(1), helpstring("method Refresh")]
HRESULT
Refresh(
[in] DWORD dwFlags,
[in] BSTR pEnvBindingStr
);
};
[
object,
uuid(24329274-9EB7-11DC-AE98-F2B456D89593),
helpstring("interface ITsSbLoadBalancing"),
pointer_default(unique)
]
interface ITsSbLoadBalancing : ITsSbPlugin
{
[id(1), helpstring("method GetMostSuitableTarget")]
HRESULT
GetMostSuitableTarget(
[in] ITsSbClientConnection* pConnection,
[in] ITsSbLoadBalancingNotifySink* pLBSink
);
};
[
object,
uuid(B937A478-9EB6-11DC-8377-D5B056D89593),
helpstring("interface ITsSbPlacement"),
pointer_default(unique)
]
interface ITsSbPlacement : ITsSbPlugin
{
[id(1), helpstring("method QueryEnvironmentForTarget")]
HRESULT
QueryEnvironmentForTarget(
[in] ITsSbClientConnection* pConnection,
[in] ITsSbPlacementNotifySink* pPlacementSink
);
[id(2), helpstring("method CreateEnvironmentForTarget")]
HRESULT
CreateEnvironmentForTarget(
[in] ITsSbClientConnection* pConnection,
[in] ITsSbPlacementNotifySink* pPlacementSink
);
};
[
object,
uuid(64FC1172-9EB7-11DC-8B00-3ABA56D89593),
helpstring("interface ITsSbOrchestration"),
pointer_default(unique)
]
interface ITsSbOrchestration : ITsSbPlugin
{
[id(1), helpstring("method PrepareTargetForConnect")]
HRESULT
PrepareTargetForConnect(
[in] ITsSbClientConnection* pConnection,
[in] ITsSbOrchestrationNotifySink* pOrchestrationNotifySink
);
};
[
object,
uuid(8c87f7f7-bf51-4a5c-87bf-8e94fb6e2256),
helpstring("interface ITsSbEnvironment "),
pointer_default(unique)
]
interface ITsSbEnvironment : IUnknown
{
[propget, id(1), helpstring("property Name")]
HRESULT Name(
[out, retval] BSTR *pVal
);
[propget, id(2), helpstring("property ServerWeight")]
HRESULT ServerWeight(
[out, retval] DWORD *pVal
);
[propget, id(3), helpstring("property EnvironmentPropertySet")]
HRESULT
EnvironmentPropertySet(
[out, retval] ITsSbEnvironmentPropertySet** ppPropertySet
);
[propput, id(3), helpstring("property EnvironmentPropertySet")]
HRESULT
EnvironmentPropertySet(
[in] ITsSbEnvironmentPropertySet* pVal
);
};
[
object,
uuid(24FDB7AC-FEA6-11DC-9672-9A8956D89593),
helpstring("interface ITsSbLoadBalanceResult"),
pointer_default(unique)
]
interface ITsSbLoadBalanceResult: IUnknown
{
[propget, id(1), helpstring("property TargetName")]
HRESULT TargetName(
[out, retval] BSTR *pVal
);
}
[
object,
uuid(e85e10ea-db0b-4752-b456-5fd5840901c0),
helpstring("interface ITsSbTarget"),
pointer_default(unique)
]
interface ITsSbTarget : IUnknown
{
[propget, id(1), helpstring("property TargetName")]
HRESULT TargetName(
[out, retval] BSTR *pVal
);
[propget, id(2), helpstring("property FarmName")]
HRESULT FarmName(
[out, retval] BSTR *pVal
);
[propput, id(2), helpstring("property FarmName")]
HRESULT FarmName(
[in] BSTR Val
);
[propget, id(3), helpstring("property TargetFQDN")]
HRESULT
TargetFQDN(
[out, retval] BSTR *TargetFqdnName
);
[propput, id(3), helpstring("property TargetFQDN")]
HRESULT
TargetFQDN(
[in] BSTR Val
);
[propget, id(4), helpstring("property TargetNetbios")]
HRESULT
TargetNetbios(
[out, retval] BSTR *TargetNetbiosName
);
[propput, id(4), helpstring("property TargetNetbios")]
HRESULT
TargetNetbios(
[in] BSTR Val
);
[propget, id(5), helpstring("property TargetExternalIpAddresses")]
HRESULT
TargetExternalIpAddresses(
[out, size_is(*numAddresses)] TSSD_ConnectionPoint* sockaddr,
[in, out] DWORD* numAddresses
);
[propput, id(5), helpstring("property TargetExternalIpAddresses")]
HRESULT
TargetExternalIpAddresses(
[in, size_is(numAddresses)] TSSD_ConnectionPoint *sockaddr,
[in] DWORD numAddresses
);
[propget, id(6), helpstring("property TargetInternalIpAddresses")]
HRESULT
TargetInternalIpAddresses(
[out, size_is(*numAddresses)] TSSD_ConnectionPoint* sockaddr,
[in, out] DWORD* numAddresses
);
[propput, id(6), helpstring("property TargetInternalIpAddresses")]
HRESULT
TargetInternalIpAddresses(
[in, size_is(numAddresses)] TSSD_ConnectionPoint *sockaddr,
[in] DWORD numAddresses
);
[propget, id(7), helpstring("property TargetState")]
HRESULT
TargetState(
[out, retval] TARGET_STATE* pState
);
[propput, id(7), helpstring("property TargetState")]
HRESULT
TargetState(
[in] TARGET_STATE State
);
[propget, id(8), helpstring("property TargetPropertySet")]
HRESULT
TargetPropertySet(
[out, retval] ITsSbTargetPropertySet** ppPropertySet
);
[propput, id(8), helpstring("property TargetPropertySet")]
HRESULT
TargetPropertySet(
[in] ITsSbTargetPropertySet *pVal
);
};
[
object,
uuid(1ef3d5cf-8fbb-4a5a-ab4a-7f85b218bd8d),
helpstring("interface ITsSbSession"),
pointer_default(unique)
]
interface ITsSbSession : IUnknown
{
[propget, id(1), helpstring("property SessionId")]
HRESULT
SessionId(
[out, retval] DWORD *pVal
);
[propget, id(2), helpstring("property TargetName")]
HRESULT
TargetName(
[out, retval] BSTR *targetName
);
[propget, id(3), helpstring("property Username")]
HRESULT
Username(
[out, retval] BSTR *userName
);
[propget, id(4), helpstring("property Domain")]
HRESULT
Domain(
[out, retval] BSTR *domain
);
[propget, id(5), helpstring("property State")]
HRESULT
State(
[out, retval] TSSESSION_STATE* pState
);
[propput, id(6), helpstring("property State")]
HRESULT
State(
[in] TSSESSION_STATE State
);
[propget, id(7), helpstring("property CreateTime")]
HRESULT
CreateTime(
[out, retval] FILETIME* pTime
);
[propput, id(8), helpstring("property CreateTime")]
HRESULT
CreateTime(
[in] FILETIME Time
);
[propget, id(9), helpstring("property DisconnectTime")]
HRESULT
DisconnectTime(
[out, retval] FILETIME* pTime
);
[propput, id(10), helpstring("property DisconnectTime")]
HRESULT
DisconnectTime(
[in] FILETIME Time
);
[propget, id(11), helpstring("property InitialProgram")]
HRESULT
InitialProgram(
[out, retval] BSTR *app
);
[propput, id(12), helpstring("property InitialProgram")]
HRESULT
InitialProgram(
[in] BSTR Application
);
[propget, id(13), helpstring("property ClientDisplay")]
HRESULT
ClientDisplay(
[out, retval] CLIENT_DISPLAY *pClientDisplay
);
[propput, id(14), helpstring("property ClientDisplay")]
HRESULT
ClientDisplay(
[in] CLIENT_DISPLAY pClientDisplay
);
[propget, id(15), helpstring("property ProtocolType")]
HRESULT
ProtocolType(
[out, retval] DWORD *pVal
);
[propput, id(16), helpstring("property ProtocolType")]
HRESULT
ProtocolType(
[in] DWORD Val
);
};
[
object,
uuid(65D3E85A-C39B-11DC-B92D-3CD255D89593),
helpstring("interface ITsSbResourceNotification"),
pointer_default(unique)
]
interface ITsSbResourceNotification : IUnknown
{
[id(1), helpstring("method NotifySessionChange")]
HRESULT
NotifySessionChange(
[in] TSSESSION_STATE changeType,
[in] ITsSbSession* pSession
);
[id(2), helpstring("method NotifyTargetChange")]
HRESULT
NotifyTargetChange(
[in] DWORD TargetChangeType,
[in] ITsSbTarget* pTarget
);
[id(3), helpstring("method NotifyClientConnectionStateChange")]
HRESULT
NotifyClientConnectionStateChange(
[in] CONNECTION_CHANGE_NOTIFICATION ChangeType,
[in] ITsSbClientConnection *pConnection
);
};
//
//Interfaces implemented by the broker
//
[
object,
uuid(5c025171-bb1e-4baf-a212-6d5e9774b33b),
helpstring("interface ITsSbPropertySet"),
pointer_default(unique)
]
interface ITsSbPropertySet : IPropertyBag
{
};
[
object,
uuid(95006e34-7eff-4b6c-bb40-49a4fda7cea6),
helpstring("interface ITsSbPluginPropertySet"),
pointer_default(unique)
]
interface ITsSbPluginPropertySet : ITsSbPropertySet
{
};
[
object,
uuid(E51995B0-46D6-11DD-AA21-CEDC55D89593),
helpstring("interface ITsSbClientConnectionPropertySet"),
pointer_default(unique)
]
interface ITsSbClientConnectionPropertySet : ITsSbPropertySet
{
};
[
object,
uuid(f7bda5d6-994c-4e11-a079-2763b61830ac),
helpstring("interface ITsSbTargetPropertySet"),
pointer_default(unique)
]
interface ITsSbTargetPropertySet : ITsSbPropertySet
{
};
[
object,
uuid(D0D1BF7E-7ACF-11DD-A243-E51156D89593),
helpstring("interface ITsSbEnvironmentPropertySet"),
pointer_default(unique)
]
interface ITsSbEnvironmentPropertySet : ITsSbPropertySet
{
};
[
object,
uuid(808a6537-1282-4989-9e09-f43938b71722),
helpstring("interface ITsSbBaseNotifySink"),
pointer_default(unique)
]
interface ITsSbBaseNotifySink: IUnknown
{
[id(1), helpstring("method OnError")]
HRESULT
OnError(
[in] HRESULT hrError
);
[id(2), helpstring("method OnReportStatus")]
HRESULT
OnReportStatus(
[in] CLIENT_MESSAGE_TYPE messageType,
[in] DWORD messageID
);
};
[
object,
uuid(44dfe30b-c3be-40f5-bf82-7a95bb795adf),
helpstring("interface ITsSbPluginNotifySink"),
pointer_default(unique)
]
interface ITsSbPluginNotifySink: ITsSbBaseNotifySink
{
[id(1), helpstring("method OnInitialized")]
HRESULT
OnInitialized(
[in] HRESULT hr
);
[id(2), helpstring("method OnTerminated")]
HRESULT
OnTerminated();
};
[
object,
uuid(2be69924-ddf2-44b9-ab92-2c27aefb4379),
helpstring("interface ITsSbTargetNotifySink"),
pointer_default(unique)
]
interface ITsSbTargetNotifySink : ITsSbBaseNotifySink
{
[id(1), helpstring("method OnConfigChange")]
HRESULT
OnConfigChange(
[in] DWORD TargetConfigTypes
);
[id(2), helpstring("method OnStateChange")]
HRESULT
OnStateChange();
};
[
object,
uuid(a821601f-d822-4fe2-a2a3-cd4b00652a1a),
helpstring("interface ITsSbSessionNotifySink"),
pointer_default(unique)
]
interface ITsSbSessionNotifySink : ITsSbBaseNotifySink
{
[id(1), helpstring("method OnStateChange")]
HRESULT
OnStateChange();
};
[
object,
uuid(7f3fdb2f-c8dc-4873-a600-8580787baa64),
helpstring("interface ITsSbLoadBalancingNotifySink"),
pointer_default(unique)
]
interface ITsSbLoadBalancingNotifySink : ITsSbBaseNotifySink
{
[id(1), helpstring("method OnGetMostSuitableTarget")]
HRESULT
OnGetMostSuitableTarget(
[in] ITsSbLoadBalanceResult* pLBResult
);
};
[
object,
uuid(3a2da1d1-1ad9-4248-ac21-13bbc273dd42),
helpstring("interface ITsSbPlacementNotifySink"),
pointer_default(unique)
]
interface ITsSbPlacementNotifySink : ITsSbBaseNotifySink
{
[id(1), helpstring("method OnQueryEnvironmentCompleted")]
HRESULT
OnQueryEnvironmentCompleted(
[in] ITsSbEnvironment* pEnvironment
);
[id(2), helpstring("method OnEnvironmentReady")]
HRESULT
OnEnvironmentReady(
[in] ITsSbEnvironment* pEnvironment
);
};
[
object,
uuid(36c37d61-926b-442f-bca5-118c6d50dcf2),
helpstring("interface ITsSbOrchestrationNotifySink"),
pointer_default(unique)
]
interface ITsSbOrchestrationNotifySink : ITsSbBaseNotifySink
{
[id(1), helpstring("method OnReadyToConnect")]
HRESULT
OnReadyToConnect(
[in] ITsSbTarget* pTarget
);
};
[
object,
uuid(da852238-59c8-481f-996b-301388d496d3),
helpstring("interface ITsSbClientConnection"),
pointer_default(unique)
]
interface ITsSbClientConnection : IUnknown
{
[propget, id(1), helpstring("property Username")]
HRESULT
UserName(
[out, retval] BSTR *pVal
);
[propget, id(2), helpstring("property Domain")]
HRESULT
Domain(
[out, retval] BSTR *pVal
);
[propget, id(3), helpstring("property InitialProgram")]
HRESULT
InitialProgram(
[out, retval] BSTR *pVal
);
[propget, id(4), helpstring("property LoadBalanceResult")]
HRESULT
LoadBalanceResult(
[out, retval] ITsSbLoadBalanceResult **ppVal
);
[propget, id(5), helpstring("property TargetType")]
HRESULT
TargetType(
[out, retval] TARGET_TYPE* targetType
);
[propget, id(6), helpstring("property TargetName")]
HRESULT
TargetName(
[out, retval] BSTR* pVal
);
[local, id(7), helpstring("method PutContext")]
HRESULT
PutContext(
[annotation("__in")] BSTR contextId,
[annotation("__in")] VARIANT context,
[annotation("__out_opt")] VARIANT *existingContext
);
[id(8), helpstring("method GetContext")]
HRESULT
GetContext(
[in] BSTR contextId,
[out, retval] VARIANT *context
);
[propget, id(9), helpstring("property Environment")]
HRESULT
Environment(
[out, retval] ITsSbEnvironment **ppEnvironment
);
[propget, id(10), helpstring("property IsDisconnectedSession")]
HRESULT
IsDisconnectedSession(
[out, retval] BOOL *pIsDisconnectionSession);
[propget, id(12), helpstring("property ConnectionError")]
HRESULT
ConnectionError(
);
// This is a helper method, returns domain\username
[propget, id(13), helpstring("property SamUserAccount")]
HRESULT
SamUserAccount(
[out, retval] BSTR* pVal
);
[propget, id(14), helpstring("property ClientConnectionPropertySet")]
HRESULT
ClientConnectionPropertySet(
[out, retval] ITsSbClientConnectionPropertySet** ppPropertySet
);
};
[
object,
uuid(67199246-f3a4-4035-a1f2-be2f16afb1af),
helpstring("interface ITsSbProvider"),
pointer_default(unique)
]
interface ITsSbProvider : IUnknown
{
[id(1), helpstring("method CreateTargetObject")]
HRESULT
CreateTargetObject(
[in] BSTR TargetName,
[out] ITsSbTarget **ppTarget
);
[id(2), helpstring("method CreateLoadBalanceResultObject")]
HRESULT
CreateLoadBalanceResultObject(
[in] BSTR TargetName,
[out] ITsSbLoadBalanceResult **ppLBResult
);
[id(3), helpstring("method CreateSessionObject")]
HRESULT
CreateSessionObject(
[in] BSTR TargetName,
[in] BSTR UserName,
[in] BSTR Domain,
[in] DWORD SessionId,
[out] ITsSbSession **ppSession
);
[id(4), helpstring("method CreatePluginPropertySet")]
HRESULT
CreatePluginPropertySet(
[out, retval] ITsSbPluginPropertySet** ppPropertySet
);
[id(5), helpstring("method CreateTargetPropertySetObject")]
HRESULT
CreateTargetPropertySetObject(
[out] ITsSbTargetPropertySet **ppPropertySet
);
[id(6), helpstring("method CreateEnvironmentObject")]
HRESULT
CreateEnvironmentObject(
[in] BSTR Name,
[in] DWORD ServerWeight,
[out] ITsSbEnvironment **ppEnvironment
);
[id(8), helpstring("method GetResourcePluginStore")]
HRESULT
GetResourcePluginStore(
[in] ITsSbResourcePlugin* pResourcePlugin,
[out] ITsSbResourcePluginStore** ppStore
);
[id(9), helpstring("method RegisterForNotification")]
HRESULT
RegisterForNotification(
[in] DWORD notificationType,
[in] BSTR ResourceToMonitor,
[in] ITsSbResourceNotification *pPluginNotification
);
[id(10), helpstring("method UnRegisterForNotification")]
HRESULT
UnRegisterForNotification(
[in] DWORD notificationType,
[in] BSTR ResourceToMonitor
);
[id(11), helpstring("method GetInstanceOfGlobalStore")]
HRESULT
GetInstanceOfGlobalStore(
[out] ITsSbGlobalStore** ppGlobalStore
);
[id(12), helpstring("method CreateEnvironmentPropertySetObject")]
HRESULT
CreateEnvironmentPropertySetObject(
[out] ITsSbEnvironmentPropertySet **ppPropertySet
);
};
[
object,
uuid(03aba8da-3fdf-4c3f-9304-7842430cc606),
helpstring("interface ITsSbResourcePluginStore"),
pointer_default(unique)
]
interface ITsSbResourcePluginStore : IUnknown
{
[id(1), helpstring("method QueryTarget")]
HRESULT
QueryTarget(
[in] BSTR TargetName,
[in] BSTR FarmName, // if NULL, the first target found will be returned
[out] ITsSbTarget **ppTarget
);
[id(2), helpstring("method GetTargetNotifySink")]
HRESULT
GetTargetNotifySink(
[in] ITsSbTarget *pTarget,
[out] ITsSbTargetNotifySink **ppTargetNotifySink
);
[id(3), helpstring("method QuerySessionByUserName")]
HRESULT
QuerySessionByUserName(
[in] BSTR UserName,
[in] TARGET_TYPE TargetType,
[in] BSTR TargetName,
[out] ITsSbSession **ppSession
);
[id(4), helpstring("method QuerySessionBySessionId")]
HRESULT
QuerySessionBySessionId(
[in] DWORD dwSessionId,
[in] BSTR TargetName,
[out] ITsSbSession **ppSession
);
[id(5), helpstring("method GetSessionNotifySink")]
HRESULT
GetSessionNotifySink(
[in] ITsSbSession *pSession,
[out] ITsSbSessionNotifySink **ppSessionNotifySink
);
[id(6), helpstring("method AddTargetToStore")]
HRESULT
AddTargetToStore(
[in] ITsSbTarget* pTarget,
[out] ITsSbTargetNotifySink** ppTargetNotifySink
);
[id(7), helpstring("method AddSessionToStore")]
HRESULT
AddSessionToStore(
[in] ITsSbSession* pSession,
[out] ITsSbSessionNotifySink** ppSessionNotifySink
);
[id(8), helpstring("method AddEnvironmentToStore")]
HRESULT
AddEnvironmentToStore(
[in] ITsSbEnvironment *pEnvironment
);
[id(9), helpstring("method RemoveEnvironmentFromStore")]
HRESULT
RemoveEnvironmentFromStore(
[in] BSTR EnvironmentName
);
[id(10), helpstring("method EnumerateFarms")]
HRESULT
EnumerateFarms(
[out] DWORD *pdwCount,
[out] SAFEARRAY(BSTR) *pVal
);
[id(11), helpstring("method EnumerateTargetsByFarm")]
HRESULT
EnumerateTargetsByFarm(
[in] BSTR FarmName,
[in, out] DWORD *pdwCount,
[out, size_is(*pdwCount)] IUnknown **pVal[]
);
[id(12), helpstring("method EnumerateNonFarmTargets")]
HRESULT
EnumerateNonFarmTargets(
[in, out] DWORD *pdwCount,
[out, size_is(*pdwCount)] IUnknown **pVal[]
);
[id(13), helpstring("method QueryEnvironment")]
HRESULT
QueryEnvironment(
[in] BSTR EnvironmentName,
[out] ITsSbEnvironment **ppEnvironment
);
[id(14), helpstring("method EnumerateEnvironments")]
HRESULT
EnumerateEnvironments(
[in, out] DWORD *pdwCount,
[out, size_is(*pdwCount)] ITsSbEnvironment **pVal[]
);
[id(15), helpstring("method EnumerateSessionsByTargetName")]
HRESULT
EnumerateSessionsByTargetName(
[in] BSTR TargetName,
[in, out] DWORD *pdwCount,
[out, size_is(*pdwCount)] ITsSbSession **ppVal[]
);
};
[
object,
uuid(d521ad43-7123-49a2-8622-8871a147439e),
helpstring("interface ITsSbGlobalStore"),
pointer_default(unique)
]
interface ITsSbGlobalStore : IUnknown
{
[id(1), helpstring("method QueryTarget")]
HRESULT
QueryTarget(
[in] BSTR ProviderName,
[in] BSTR TargetName,
[in] BSTR FarmName, // if NULL, the first target found will be returned
[out] ITsSbTarget **ppTarget
);
[id(2), helpstring("method QuerySessionByUserName")]
HRESULT
QuerySessionByUserName(
[in] BSTR ProviderName,
[in] BSTR UserName,
[in] TARGET_TYPE TargetType,
[in] BSTR TargetName,
[out] ITsSbSession **ppSession
);
[id(3), helpstring("method QuerySessionBySessionId")]
HRESULT
QuerySessionBySessionId(
[in] BSTR ProviderName,
[in] DWORD dwSessionId,
[in] BSTR TargetName,
[out] ITsSbSession **ppSession
);
[id(4), helpstring("method EnumerateFarms")]
HRESULT
EnumerateFarms(
[in] BSTR ProviderName,
[out] DWORD *pdwCount,
[out] SAFEARRAY(BSTR) *pVal
);
[id(5), helpstring("method EnumerateTargetsByFarm")]
HRESULT
EnumerateTargetsByFarm(
[in] BSTR ProviderName,
[in] BSTR FarmName,
[in, out] DWORD *pdwCount,
[out, size_is(*pdwCount)] IUnknown **pVal[]
);
[id(6), helpstring("method EnumerateNonFarmTargets")]
HRESULT
EnumerateNonFarmTargets(
[in] BSTR ProviderName,
[in, out] DWORD *pdwCount,
[out, size_is(*pdwCount)] IUnknown **pVal[]
);
};