////////////////////////////////////////////////////////////////////////////// // // Copyright (c) 2000 Microsoft Corporation // // Module Name: // ClusCfgPostCfg.idl // // Description: // This file describes the interfaces used during post configuration of // resources / applications after the initial local quorum cluster has // been configured. // // Maintained By: // Geoff Pease (GPease) 06-JUN-2000 // ////////////////////////////////////////////////////////////////////////////// // Comments for generated files cpp_quote( "//////////////////////////////////////////////////////////////////////////////" ) cpp_quote( "//" ) cpp_quote( "// Copyright (c) 2000 Microsoft Corporation" ) cpp_quote( "//" ) cpp_quote( "// Remarks:" ) cpp_quote( "// Generated file. See file ClusCfgPostCfg.idl for more details." ) cpp_quote( "//" ) cpp_quote( "//////////////////////////////////////////////////////////////////////////////" ) ////////////////////////////////////////////////////////////////////////////// // Imported Files ////////////////////////////////////////////////////////////////////////////// import "unknwn.idl"; ////////////////////////////////////////////////////////////////////////////// // Forward Declarations ////////////////////////////////////////////////////////////////////////////// interface IClusCfgManagedResourceCfg; interface IClusCfgResourcePreCreate; interface IClusCfgResourceCreate; interface IClusCfgResourcePostCreate; interface IClusCfgResourceEvict; interface IClusCfgGroupCfg; ////////////////////////////////////////////////////////////////////////////// // Type Definitions ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// // Interface Definitions ////////////////////////////////////////////////////////////////////////////// //**************************************************************************** //++ // // interface IClusCfgManagedResourceCfg // // Description: // TODO: gpease 06-JUN-2000 // Write a description. // //-- //**************************************************************************** [ object, uuid( 60300A0F-77E1-440c-BD94-6BFB0DBFDB3A ), local, pointer_default( unique ) ] interface IClusCfgManagedResourceCfg : IUnknown { ////////////////////////////////////////////////////////////////////////// // // STDMETHOD // IClusCfgManagedResourceCfg::PreCreate( // IUnknown * punkServicesIn // ) // // Description: // This method is called by the post configuration manager to // determine the requirements of the resource. Querying the // punkServicesIn allows the managed resource to use services // provided by the manager. // // Arguments: // punkServicesIn // The resource should QI this interface for services provided // by the post configuration manager and to set its dependencies. // // Return Values: // S_OK // Success. // // other HRESULTs. // The call failed. // ////////////////////////////////////////////////////////////////////////// HRESULT PreCreate( IUnknown * punkServicesIn ); ////////////////////////////////////////////////////////////////////////// // // STDMETHOD // IClusCfgManagedResourceCfg::Create( // IUnknown * punkServicesIn // ) // // Description: // This method is called by the post configuration manager to // have the resource create an instance of itself. Querying the // punkServicesIn allows the managed resource to use services // provided by the manager. // // Arguments: // punkServicesIn // The resource should QI this interface for services provided // by the post configuration manager and to create itself. // // Return Values: // S_OK // Success. // // other HRESULTs. // The call failed. // ////////////////////////////////////////////////////////////////////////// HRESULT Create( IUnknown * punkServicesIn ); ////////////////////////////////////////////////////////////////////////// // // STDMETHOD // IClusCfgManagedResourceCfg::PostCreate( // IUnknown * punkServicesIn // ) // // Description: // This method is called by the post configuration manager to allow // resources to perform any post-creation configuration that may be // needed. At this point the cluster is fully configured. Querying // the punkServicesIn allows the managed resource to use services // provided by the manager. // // Arguments: // punkServicesIn // The resource should QI this interface for services provided // by the post configuration manager. // // Return Values: // S_OK // Success. // // other HRESULTs. // The call failed. // ////////////////////////////////////////////////////////////////////////// HRESULT PostCreate( IUnknown * punkServicesIn ); ////////////////////////////////////////////////////////////////////////// // // STDMETHOD // IClusCfgManagedResourceCfg::Evict( // IUnknown * punkServicesIn // ) // // Description: // This method is called by the post configuration manager to alert // the resource that this node was evicted from the cluster. The // resource should do whatever cleanup it needs to do revert to a // non-clustered state. Querying the punkServicesIn allows the // managed resource to uses services provided by the post // configuration manager. // // Arguments: // punkServicesIn // The resource should QI this interface for services provided // by the post configuration manager. // // Return Values: // S_OK // Success. // // other HRESULTs. // The call failed. Errors are ignored and do not prevent a node // from being evicted. // ////////////////////////////////////////////////////////////////////////// HRESULT Evict( IUnknown * punkServicesIn ); }; //*** interface IClusCfgManagedResourceCfg //**************************************************************************** //++ // // interface IClusCfgResourcePreCreate // // Description: // TODO: gpease 06-JUN-2000 // Write a description. // //-- //**************************************************************************** [ object, uuid( 4240F6A1-9D49-427e-8F3D-09384E1F59E4 ), local, pointer_default( unique ) ] interface IClusCfgResourcePreCreate : IUnknown { typedef [ uuid( 1DAF9692-6662-43b1-AD45-D50F7849B0CD ), helpstring("Resource dependency flags") ] enum EDependencyFlags { [helpstring("Unknown access")] dfUNKNOWN = 0, [helpstring("Shared access resource")] dfSHARED = 1, [helpstring("Exclusive access resource")] dfEXCLUSIVE = 2, } EDependencyFlags; ////////////////////////////////////////////////////////////////////////// // // STDMETHOD // IClusCfgResourcePreCreate::SetDependency( // LPCLSID pclsidDepResTypeIn, // EDependencyFlags dflagIn // ) // // Description: // Informs the post configuration manager that a resource has a // dependency on another type of resource and if the resource needs // the resource for shared access or exclusive access. // // Arguments: // pclsidDepResTypeIn // The CLSID of the type of resource that a resource is // requesting a dependency on. These are documented in the SDK // or by the 3rd party resource. // // dfIn // Flags to modify the dependency relationship. The following // are defined flags: // // dfSHARED - the dependent resource can be shared. // dfEXCLUSIVE - the dependent resource can not be shared. // // Return Value: // S_OK // Success. // // other HRESULTs. // The call failed. // ////////////////////////////////////////////////////////////////////////// HRESULT SetDependency( LPCLSID pclsidDepResTypeIn, DWORD dfIn ); ////////////////////////////////////////////////////////////////////////// // // STDMETHOD // IClusCfgResourcePreCreate::GetType( // CLSID * pclsidIn // ) // // Description: // A managed resource MUST call this to indicate its resource type. // Failure to call this during PreCreate will result in your // resource not being created. // // Arguments: // pclsidIn // Pointer to the GUID of the resource type. // // Return Values: // S_OK // Success. // // other HRESULTs. // The call failed. // ////////////////////////////////////////////////////////////////////////// HRESULT SetType( CLSID * pclsidIn ); ////////////////////////////////////////////////////////////////////////// // // STDMETHOD // IClusCfgResourcePreCreate::SetClassType( // CLSID * pclsidIn // ) // // Description: // A managed resource sets this to indicate that its resource type // can be considered to be of a class of resource. You may call this // multiple times to indicate all the classes you belong to. // // Arguments: // pclsidIn // Pointer to the GUID of the resource class type. // // Return Values: // S_OK // Success. // // other HRESULTs. // The call failed. // ////////////////////////////////////////////////////////////////////////// HRESULT SetClassType( CLSID * pclsidIn ); }; //*** interface IClusCfgResourcePreCreate //**************************************************************************** //++ // // interface IClusCfgResourceCreate // // Description: // TODO: gpease 06-JUN-2000 // Write a description. // //-- //**************************************************************************** [ object, uuid( 0647B41A-C777-443c-9432-02CCCF4FF443 ), local, pointer_default( unique ) ] interface IClusCfgResourceCreate : IUnknown { ////////////////////////////////////////////////////////////////////////// // // STDMETHOD // IClusCfgResourceCreate::SetPropertyBinary( // LPCWSTR pcszNameIn, // const DWORD cbSizeIn, // const BYTE * pbyteIn // ) // // Description: // // Arguments: // // Return Value: // S_OK // Success. // // other HRESULTs. // The call failed. // ////////////////////////////////////////////////////////////////////////// HRESULT SetPropertyBinary( LPCWSTR pcszNameIn, const DWORD cbSizeIn, const BYTE * pbyteIn ); ////////////////////////////////////////////////////////////////////////// // // STDMETHOD // IClusCfgResourceCreate::SetPropertyDWORD( // LPCWSTR pcszNameIn, // const DWORD dwDWORDIn // ) // // Description: // // Arguments: // // Return Value: // S_OK // Success. // // other HRESULTs. // The call failed. // ////////////////////////////////////////////////////////////////////////// HRESULT SetPropertyDWORD( LPCWSTR pcszNameIn, const DWORD dwDWORDIn ); ////////////////////////////////////////////////////////////////////////// // // STDMETHOD // IClusCfgResourceCreate::SetPropertyString( // LPCWSTR pcszNameIn, // LPCWSTR pcszStringIn // ) // // Description: // // Arguments: // // Return Value: // S_OK // Success. // // other HRESULTs. // The call failed. // ////////////////////////////////////////////////////////////////////////// HRESULT SetPropertyString( LPCWSTR pcszNameIn, LPCWSTR pcszStringIn ); ////////////////////////////////////////////////////////////////////////// // // STDMETHOD // IClusCfgResourceCreate::SetPropertyExpandString( // LPCWSTR pcszNameIn, // LPCWSTR pcszStringIn // ) // // Description: // // Arguments: // // Return Value: // S_OK // Success. // // other HRESULTs. // The call failed. // ////////////////////////////////////////////////////////////////////////// HRESULT SetPropertyExpandString( LPCWSTR pcszNameIn, LPCWSTR pcszStringIn ); ////////////////////////////////////////////////////////////////////////// // // STDMETHOD // IClusCfgResourceCreate::SetPropertyMultiString( // LPCWSTR pcszNameIn, // const DWORD cbMultiStringIn, // LPCWSTR pcszMultiStringIn // ) // // Description: // // Arguments: // // Return Value: // S_OK // Success. // // other HRESULTs. // The call failed. // ////////////////////////////////////////////////////////////////////////// HRESULT SetPropertyMultiString( LPCWSTR pcszNameIn, const DWORD cbMultiStringIn, LPCWSTR pcszMultiStringIn ); ////////////////////////////////////////////////////////////////////////// // // STDMETHOD // IClusCfgResourceCreate::SetPropertyUnsignedLargeInt( // LPCWSTR pcszNameIn, // const ULARGE_INTEGER ulIntIn // ) // // Description: // // Arguments: // // Return Value: // S_OK // Success. // // other HRESULTs. // The call failed. // ////////////////////////////////////////////////////////////////////////// HRESULT SetPropertyUnsignedLargeInt( LPCWSTR pcszNameIn, const ULARGE_INTEGER ulIntIn ); ////////////////////////////////////////////////////////////////////////// // // STDMETHOD // IClusCfgResourceCreate::SetPropertyLong( // LPCWSTR pcszNameIn, // const LONG lLongIn // ) // // Description: // // Arguments: // // Return Value: // S_OK // Success. // // other HRESULTs. // The call failed. // ////////////////////////////////////////////////////////////////////////// HRESULT SetPropertyLong( LPCWSTR pcszNameIn, const LONG lLongIn ); ////////////////////////////////////////////////////////////////////////// // // STDMETHOD // IClusCfgResourceCreate::SetPropertySecurityDescriptor( // LPCWSTR pcszNameIn, // const SECURITY_DESCRIPTOR * pcsdIn // ) // // Description: // // Arguments: // // Return Value: // S_OK // Success. // // other HRESULTs. // The call failed. // ////////////////////////////////////////////////////////////////////////// HRESULT SetPropertySecurityDescriptor( LPCWSTR pcszNameIn, const SECURITY_DESCRIPTOR * pcsdIn ); ////////////////////////////////////////////////////////////////////////// // // STDMETHOD // IClusCfgResourceCreate::SetPropertyLargeInt( // LPCWSTR pcszNameIn, // const LARGE_INTEGER lIntIn // ) // // Description: // // Arguments: // // Return Value: // S_OK // Success. // // other HRESULTs. // The call failed. // ////////////////////////////////////////////////////////////////////////// HRESULT SetPropertyLargeInt( LPCWSTR pcszNameIn, const LARGE_INTEGER lIntIn ); ////////////////////////////////////////////////////////////////////////// // // STDMETHOD // IClusCfgResourceCreate::SendResourceControl( // DWORD dwControlCode, // LPVOID lpInBuffer, // DWORD cbInBufferSize, // ) // // Description: // // Arguments: // // Return Value: // S_OK // Success. // // other HRESULTs. // The call failed. // ////////////////////////////////////////////////////////////////////////// HRESULT SendResourceControl( DWORD dwControlCode, LPVOID lpInBuffer, DWORD cbInBufferSize ); }; //*** interface IClusCfgResourceCreate //**************************************************************************** //++ // // interface IClusCfgResourcePostCreate // // Description: // TODO: gpease 06-JUN-2000 // Write a description. // //-- //**************************************************************************** [ object, uuid( 72A9BF54-13B6-451f-910D-6913EBF025AB ), local, pointer_default( unique ) ] interface IClusCfgResourcePostCreate : IUnknown { ////////////////////////////////////////////////////////////////////////// // // STDMETHOD // IClusCfgResourcePostCreate::ChangeName( // LPCWSTR pcszNameIn // ) // // Description: // Changes the name of the resource. // // Arguments: // pcszNameIn // The name to assign the group. // // Return Value: // S_OK // Success. // // other HRESULTs. // The call failed. // ////////////////////////////////////////////////////////////////////////// HRESULT ChangeName( LPCWSTR pcszNameIn ); ////////////////////////////////////////////////////////////////////////// // // STDMETHOD // IClusCfgResourceCreate::SendResourceControl( // DWORD dwControlCode, // LPVOID lpInBuffer, // DWORD cbInBufferSize, // LPVOID lpOutBuffer, // DWORD cbOutBufferSize, // LPDWORD lpcbBytesReturned // ) // // Description: // // Arguments: // // Return Value: // S_OK // Success. // // other HRESULTs. // The call failed. // ////////////////////////////////////////////////////////////////////////// HRESULT SendResourceControl( DWORD dwControlCode, LPVOID lpInBuffer, DWORD cbInBufferSize, LPVOID lpOutBuffer, DWORD cbOutBufferSize, LPDWORD lpcbBytesReturned ); }; //*** interface IClusCfgResourcePostCreate //**************************************************************************** //++ // // interface IClusCfgGroupCfg // // Description: // TODO: gpease 06-JUN-2000 // Write a description. // //-- //**************************************************************************** [ object, uuid( DCB6D3D2-A55F-49e5-A64A-0CCFEB01ED3A ), local, pointer_default( unique ) ] interface IClusCfgGroupCfg : IUnknown { ////////////////////////////////////////////////////////////////////////// // // STDMETHOD // IClusCfgGroupCfg::SetName( // LPCWSTR pcszNameIn // ) // // Description: // Changes the name of the group in which the resource was created. // Note that the last resource to set the name wins. The ordering // of the last resource is the resource that doesn't have anything // depending on it. // // Arguments: // pcszNameIn // The name to assign the group. // // Return Value: // S_OK // Success. // // other HRESULTs. // The call failed. // ////////////////////////////////////////////////////////////////////////// HRESULT SetName( LPCWSTR pcszNameIn ); ////////////////////////////////////////////////////////////////////////// // // STDMETHOD // IClusCfgGroupCfg::GetName( // DWORD * pcbSizeInout, // LPWSTR pszNameOut // ) // // Description: // Retrieves the name of the group in which the resource was created. // Note that the last resource to set the name wins. The ordering // of the last resource is the resource that doesn't have anything // depending on it. Do not cache this value as the name may change // after control has been returned to the manager. // // Arguments: // pcbSizeInout // Size of the pszNameOut buffer. On return, it is the size // of the sting in bytes (not WCHARs). If the buffer is too // small, the required buffer size will be returned. // // bstrNameIn // The name to assign the group. // // Return Value: // S_OK // Success. // // HRESULT_FROM_WIN32( ERROR_MORE_DATA ) // The buffer size specified is too small. // // other HRESULTs. // The call failed. // ////////////////////////////////////////////////////////////////////////// HRESULT GetName( DWORD * pcbSizeInout, LPWSTR pszNameOut ); }; //*** interface IClusCfgGroupCfg