

/* this ALWAYS GENERATED file contains the definitions for the interfaces */


 /* File created by MIDL compiler version 7.00.0555 */
/* Compiler settings for identityprovider.idl:
    Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555 
    protocol : dce , ms_ext, c_ext, robust
    error checks: allocation ref bounds_check enum stub_data 
    VC __declspec() decoration level: 
         __declspec(uuid()), __declspec(selectany), __declspec(novtable)
         DECLSPEC_UUID(), MIDL_INTERFACE()
*/
/* @@MIDL_FILE_HEADING(  ) */

#pragma warning( disable: 4049 )  /* more than 64k source lines */


/* verify that the <rpcndr.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 500
#endif

/* verify that the <rpcsal.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCSAL_H_VERSION__
#define __REQUIRED_RPCSAL_H_VERSION__ 100
#endif

#include "rpc.h"
#include "rpcndr.h"

#ifndef __RPCNDR_H_VERSION__
#error this stub requires an updated version of <rpcndr.h>
#endif // __RPCNDR_H_VERSION__

#ifndef COM_NO_WINDOWS_H
#include "windows.h"
#include "ole2.h"
#endif /*COM_NO_WINDOWS_H*/

#ifndef __identityprovider_h__
#define __identityprovider_h__

#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

/* Forward Declarations */ 

#ifndef __IIdentityAdvise_FWD_DEFINED__
#define __IIdentityAdvise_FWD_DEFINED__
typedef interface IIdentityAdvise IIdentityAdvise;
#endif 	/* __IIdentityAdvise_FWD_DEFINED__ */


#ifndef __AsyncIIdentityAdvise_FWD_DEFINED__
#define __AsyncIIdentityAdvise_FWD_DEFINED__
typedef interface AsyncIIdentityAdvise AsyncIIdentityAdvise;
#endif 	/* __AsyncIIdentityAdvise_FWD_DEFINED__ */


#ifndef __IIdentityProvider_FWD_DEFINED__
#define __IIdentityProvider_FWD_DEFINED__
typedef interface IIdentityProvider IIdentityProvider;
#endif 	/* __IIdentityProvider_FWD_DEFINED__ */


#ifndef __AsyncIIdentityProvider_FWD_DEFINED__
#define __AsyncIIdentityProvider_FWD_DEFINED__
typedef interface AsyncIIdentityProvider AsyncIIdentityProvider;
#endif 	/* __AsyncIIdentityProvider_FWD_DEFINED__ */


#ifndef __IAssociatedIdentityProvider_FWD_DEFINED__
#define __IAssociatedIdentityProvider_FWD_DEFINED__
typedef interface IAssociatedIdentityProvider IAssociatedIdentityProvider;
#endif 	/* __IAssociatedIdentityProvider_FWD_DEFINED__ */


#ifndef __AsyncIAssociatedIdentityProvider_FWD_DEFINED__
#define __AsyncIAssociatedIdentityProvider_FWD_DEFINED__
typedef interface AsyncIAssociatedIdentityProvider AsyncIAssociatedIdentityProvider;
#endif 	/* __AsyncIAssociatedIdentityProvider_FWD_DEFINED__ */


/* header files for imported files */
#include "oaidl.h"
#include "ocidl.h"
#include "propsys.h"
#include "IdentityCommon.h"

#ifdef __cplusplus
extern "C"{
#endif 


/* interface __MIDL_itf_identityprovider_0000_0000 */
/* [local] */ 

#if 0
#endif // 0

enum tag_IdentityUpdateEvent
    {	IDENTITY_ASSOCIATED	= 0x1,
	IDENTITY_DISASSOCIATED	= 0x2,
	IDENTITY_CREATED	= 0x4,
	IDENTITY_IMPORTED	= 0x8,
	IDENTITY_DELETED	= 0x10,
	IDENTITY_PROPCHANGED	= 0x20
    } ;
#define      IDENTITY_KEYWORD_ASSOCIATED L"associated"
#define      IDENTITY_KEYWORD_LOCAL      L"local"
#define      IDENTITY_KEYWORD_HOMEGROUP  L"homegroup"
DEFINE_GUID(OID_OAssociatedIdentityProviderObject, 0x98c5a3dd, 0xdb68, 0x4f1a, 0x8d, 0x2b, 0x90, 0x79, 0xcd, 0xfe, 0xaf, 0x61);


extern RPC_IF_HANDLE __MIDL_itf_identityprovider_0000_0000_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_identityprovider_0000_0000_v0_0_s_ifspec;

#ifndef __IIdentityAdvise_INTERFACE_DEFINED__
#define __IIdentityAdvise_INTERFACE_DEFINED__

/* interface IIdentityAdvise */
/* [unique][async_uuid][uuid][object] */ 


EXTERN_C const IID IID_IIdentityAdvise;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("4e982fed-d14b-440c-b8d6-bb386453d386")
    IIdentityAdvise : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE IdentityUpdated( 
            /* [in] */ DWORD dwIdentityUpdateEvents,
            /* [in] */ __RPC__in LPCWSTR lpszUniqueID) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IIdentityAdviseVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IIdentityAdvise * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IIdentityAdvise * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IIdentityAdvise * This);
        
        HRESULT ( STDMETHODCALLTYPE *IdentityUpdated )( 
            __RPC__in IIdentityAdvise * This,
            /* [in] */ DWORD dwIdentityUpdateEvents,
            /* [in] */ __RPC__in LPCWSTR lpszUniqueID);
        
        END_INTERFACE
    } IIdentityAdviseVtbl;

    interface IIdentityAdvise
    {
        CONST_VTBL struct IIdentityAdviseVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IIdentityAdvise_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IIdentityAdvise_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IIdentityAdvise_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IIdentityAdvise_IdentityUpdated(This,dwIdentityUpdateEvents,lpszUniqueID)	\
    ( (This)->lpVtbl -> IdentityUpdated(This,dwIdentityUpdateEvents,lpszUniqueID) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IIdentityAdvise_INTERFACE_DEFINED__ */


#ifndef __AsyncIIdentityAdvise_INTERFACE_DEFINED__
#define __AsyncIIdentityAdvise_INTERFACE_DEFINED__

/* interface AsyncIIdentityAdvise */
/* [uuid][unique][object] */ 


EXTERN_C const IID IID_AsyncIIdentityAdvise;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("3ab4c8da-d038-4830-8dd9-3253c55a127f")
    AsyncIIdentityAdvise : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE Begin_IdentityUpdated( 
            /* [in] */ DWORD dwIdentityUpdateEvents,
            /* [in] */ __RPC__in LPCWSTR lpszUniqueID) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Finish_IdentityUpdated( void) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct AsyncIIdentityAdviseVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in AsyncIIdentityAdvise * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in AsyncIIdentityAdvise * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in AsyncIIdentityAdvise * This);
        
        HRESULT ( STDMETHODCALLTYPE *Begin_IdentityUpdated )( 
            __RPC__in AsyncIIdentityAdvise * This,
            /* [in] */ DWORD dwIdentityUpdateEvents,
            /* [in] */ __RPC__in LPCWSTR lpszUniqueID);
        
        HRESULT ( STDMETHODCALLTYPE *Finish_IdentityUpdated )( 
            __RPC__in AsyncIIdentityAdvise * This);
        
        END_INTERFACE
    } AsyncIIdentityAdviseVtbl;

    interface AsyncIIdentityAdvise
    {
        CONST_VTBL struct AsyncIIdentityAdviseVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define AsyncIIdentityAdvise_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define AsyncIIdentityAdvise_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define AsyncIIdentityAdvise_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define AsyncIIdentityAdvise_Begin_IdentityUpdated(This,dwIdentityUpdateEvents,lpszUniqueID)	\
    ( (This)->lpVtbl -> Begin_IdentityUpdated(This,dwIdentityUpdateEvents,lpszUniqueID) ) 

#define AsyncIIdentityAdvise_Finish_IdentityUpdated(This)	\
    ( (This)->lpVtbl -> Finish_IdentityUpdated(This) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __AsyncIIdentityAdvise_INTERFACE_DEFINED__ */


#ifndef __IIdentityProvider_INTERFACE_DEFINED__
#define __IIdentityProvider_INTERFACE_DEFINED__

/* interface IIdentityProvider */
/* [unique][async_uuid][uuid][object] */ 


EXTERN_C const IID IID_IIdentityProvider;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("0d1b9e0c-e8ba-4f55-a81b-bce934b948f5")
    IIdentityProvider : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetIdentityEnum( 
            /* [in] */ const IDENTITY_TYPE eIdentityType,
            /* [unique][in] */ __RPC__in_opt const PROPERTYKEY *pFilterkey,
            /* [unique][in] */ __RPC__in_opt const PROPVARIANT *pFilterPropVarValue,
            /* [out] */ __RPC__deref_out_opt IEnumUnknown **ppIdentityEnum) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Create( 
            /* [in] */ __RPC__in LPCWSTR lpszUserName,
            /* [out] */ __RPC__deref_out_opt IPropertyStore **ppPropertyStore,
            /* [in] */ __RPC__in const PROPVARIANT *pKeywordsToAdd) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Import( 
            /* [in] */ __RPC__in_opt IPropertyStore *pPropertyStore) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Delete( 
            /* [in] */ __RPC__in LPCWSTR lpszUniqueID,
            /* [in] */ __RPC__in const PROPVARIANT *pKeywordsToDelete) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE FindByUniqueID( 
            /* [in] */ __RPC__in LPCWSTR lpszUniqueID,
            /* [out] */ __RPC__deref_out_opt IPropertyStore **ppPropertyStore) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetProviderPropertyStore( 
            /* [out] */ __RPC__deref_out_opt IPropertyStore **ppPropertyStore) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Advise( 
            /* [in] */ __RPC__in_opt IIdentityAdvise *pIdentityAdvise,
            /* [in] */ DWORD dwIdentityUpdateEvents,
            /* [out] */ __RPC__out DWORD *pdwCookie) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE UnAdvise( 
            /* [in] */ const DWORD dwCookie) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IIdentityProviderVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IIdentityProvider * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IIdentityProvider * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IIdentityProvider * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetIdentityEnum )( 
            __RPC__in IIdentityProvider * This,
            /* [in] */ const IDENTITY_TYPE eIdentityType,
            /* [unique][in] */ __RPC__in_opt const PROPERTYKEY *pFilterkey,
            /* [unique][in] */ __RPC__in_opt const PROPVARIANT *pFilterPropVarValue,
            /* [out] */ __RPC__deref_out_opt IEnumUnknown **ppIdentityEnum);
        
        HRESULT ( STDMETHODCALLTYPE *Create )( 
            __RPC__in IIdentityProvider * This,
            /* [in] */ __RPC__in LPCWSTR lpszUserName,
            /* [out] */ __RPC__deref_out_opt IPropertyStore **ppPropertyStore,
            /* [in] */ __RPC__in const PROPVARIANT *pKeywordsToAdd);
        
        HRESULT ( STDMETHODCALLTYPE *Import )( 
            __RPC__in IIdentityProvider * This,
            /* [in] */ __RPC__in_opt IPropertyStore *pPropertyStore);
        
        HRESULT ( STDMETHODCALLTYPE *Delete )( 
            __RPC__in IIdentityProvider * This,
            /* [in] */ __RPC__in LPCWSTR lpszUniqueID,
            /* [in] */ __RPC__in const PROPVARIANT *pKeywordsToDelete);
        
        HRESULT ( STDMETHODCALLTYPE *FindByUniqueID )( 
            __RPC__in IIdentityProvider * This,
            /* [in] */ __RPC__in LPCWSTR lpszUniqueID,
            /* [out] */ __RPC__deref_out_opt IPropertyStore **ppPropertyStore);
        
        HRESULT ( STDMETHODCALLTYPE *GetProviderPropertyStore )( 
            __RPC__in IIdentityProvider * This,
            /* [out] */ __RPC__deref_out_opt IPropertyStore **ppPropertyStore);
        
        HRESULT ( STDMETHODCALLTYPE *Advise )( 
            __RPC__in IIdentityProvider * This,
            /* [in] */ __RPC__in_opt IIdentityAdvise *pIdentityAdvise,
            /* [in] */ DWORD dwIdentityUpdateEvents,
            /* [out] */ __RPC__out DWORD *pdwCookie);
        
        HRESULT ( STDMETHODCALLTYPE *UnAdvise )( 
            __RPC__in IIdentityProvider * This,
            /* [in] */ const DWORD dwCookie);
        
        END_INTERFACE
    } IIdentityProviderVtbl;

    interface IIdentityProvider
    {
        CONST_VTBL struct IIdentityProviderVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IIdentityProvider_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IIdentityProvider_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IIdentityProvider_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IIdentityProvider_GetIdentityEnum(This,eIdentityType,pFilterkey,pFilterPropVarValue,ppIdentityEnum)	\
    ( (This)->lpVtbl -> GetIdentityEnum(This,eIdentityType,pFilterkey,pFilterPropVarValue,ppIdentityEnum) ) 

#define IIdentityProvider_Create(This,lpszUserName,ppPropertyStore,pKeywordsToAdd)	\
    ( (This)->lpVtbl -> Create(This,lpszUserName,ppPropertyStore,pKeywordsToAdd) ) 

#define IIdentityProvider_Import(This,pPropertyStore)	\
    ( (This)->lpVtbl -> Import(This,pPropertyStore) ) 

#define IIdentityProvider_Delete(This,lpszUniqueID,pKeywordsToDelete)	\
    ( (This)->lpVtbl -> Delete(This,lpszUniqueID,pKeywordsToDelete) ) 

#define IIdentityProvider_FindByUniqueID(This,lpszUniqueID,ppPropertyStore)	\
    ( (This)->lpVtbl -> FindByUniqueID(This,lpszUniqueID,ppPropertyStore) ) 

#define IIdentityProvider_GetProviderPropertyStore(This,ppPropertyStore)	\
    ( (This)->lpVtbl -> GetProviderPropertyStore(This,ppPropertyStore) ) 

#define IIdentityProvider_Advise(This,pIdentityAdvise,dwIdentityUpdateEvents,pdwCookie)	\
    ( (This)->lpVtbl -> Advise(This,pIdentityAdvise,dwIdentityUpdateEvents,pdwCookie) ) 

#define IIdentityProvider_UnAdvise(This,dwCookie)	\
    ( (This)->lpVtbl -> UnAdvise(This,dwCookie) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IIdentityProvider_INTERFACE_DEFINED__ */


#ifndef __AsyncIIdentityProvider_INTERFACE_DEFINED__
#define __AsyncIIdentityProvider_INTERFACE_DEFINED__

/* interface AsyncIIdentityProvider */
/* [uuid][unique][object] */ 


EXTERN_C const IID IID_AsyncIIdentityProvider;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("c6fc9901-c433-4646-8f48-4e4687aae2a0")
    AsyncIIdentityProvider : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE Begin_GetIdentityEnum( 
            /* [in] */ const IDENTITY_TYPE eIdentityType,
            /* [unique][in] */ __RPC__in_opt const PROPERTYKEY *pFilterkey,
            /* [unique][in] */ __RPC__in_opt const PROPVARIANT *pFilterPropVarValue) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Finish_GetIdentityEnum( 
            /* [out] */ __RPC__deref_out_opt IEnumUnknown **ppIdentityEnum) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Begin_Create( 
            /* [in] */ __RPC__in LPCWSTR lpszUserName,
            /* [in] */ __RPC__in const PROPVARIANT *pKeywordsToAdd) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Finish_Create( 
            /* [out] */ __RPC__deref_out_opt IPropertyStore **ppPropertyStore) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Begin_Import( 
            /* [in] */ __RPC__in_opt IPropertyStore *pPropertyStore) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Finish_Import( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Begin_Delete( 
            /* [in] */ __RPC__in LPCWSTR lpszUniqueID,
            /* [in] */ __RPC__in const PROPVARIANT *pKeywordsToDelete) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Finish_Delete( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Begin_FindByUniqueID( 
            /* [in] */ __RPC__in LPCWSTR lpszUniqueID) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Finish_FindByUniqueID( 
            /* [out] */ __RPC__deref_out_opt IPropertyStore **ppPropertyStore) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Begin_GetProviderPropertyStore( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Finish_GetProviderPropertyStore( 
            /* [out] */ __RPC__deref_out_opt IPropertyStore **ppPropertyStore) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Begin_Advise( 
            /* [in] */ __RPC__in_opt IIdentityAdvise *pIdentityAdvise,
            /* [in] */ DWORD dwIdentityUpdateEvents) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Finish_Advise( 
            /* [out] */ __RPC__out DWORD *pdwCookie) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Begin_UnAdvise( 
            /* [in] */ const DWORD dwCookie) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Finish_UnAdvise( void) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct AsyncIIdentityProviderVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in AsyncIIdentityProvider * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in AsyncIIdentityProvider * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in AsyncIIdentityProvider * This);
        
        HRESULT ( STDMETHODCALLTYPE *Begin_GetIdentityEnum )( 
            __RPC__in AsyncIIdentityProvider * This,
            /* [in] */ const IDENTITY_TYPE eIdentityType,
            /* [unique][in] */ __RPC__in_opt const PROPERTYKEY *pFilterkey,
            /* [unique][in] */ __RPC__in_opt const PROPVARIANT *pFilterPropVarValue);
        
        HRESULT ( STDMETHODCALLTYPE *Finish_GetIdentityEnum )( 
            __RPC__in AsyncIIdentityProvider * This,
            /* [out] */ __RPC__deref_out_opt IEnumUnknown **ppIdentityEnum);
        
        HRESULT ( STDMETHODCALLTYPE *Begin_Create )( 
            __RPC__in AsyncIIdentityProvider * This,
            /* [in] */ __RPC__in LPCWSTR lpszUserName,
            /* [in] */ __RPC__in const PROPVARIANT *pKeywordsToAdd);
        
        HRESULT ( STDMETHODCALLTYPE *Finish_Create )( 
            __RPC__in AsyncIIdentityProvider * This,
            /* [out] */ __RPC__deref_out_opt IPropertyStore **ppPropertyStore);
        
        HRESULT ( STDMETHODCALLTYPE *Begin_Import )( 
            __RPC__in AsyncIIdentityProvider * This,
            /* [in] */ __RPC__in_opt IPropertyStore *pPropertyStore);
        
        HRESULT ( STDMETHODCALLTYPE *Finish_Import )( 
            __RPC__in AsyncIIdentityProvider * This);
        
        HRESULT ( STDMETHODCALLTYPE *Begin_Delete )( 
            __RPC__in AsyncIIdentityProvider * This,
            /* [in] */ __RPC__in LPCWSTR lpszUniqueID,
            /* [in] */ __RPC__in const PROPVARIANT *pKeywordsToDelete);
        
        HRESULT ( STDMETHODCALLTYPE *Finish_Delete )( 
            __RPC__in AsyncIIdentityProvider * This);
        
        HRESULT ( STDMETHODCALLTYPE *Begin_FindByUniqueID )( 
            __RPC__in AsyncIIdentityProvider * This,
            /* [in] */ __RPC__in LPCWSTR lpszUniqueID);
        
        HRESULT ( STDMETHODCALLTYPE *Finish_FindByUniqueID )( 
            __RPC__in AsyncIIdentityProvider * This,
            /* [out] */ __RPC__deref_out_opt IPropertyStore **ppPropertyStore);
        
        HRESULT ( STDMETHODCALLTYPE *Begin_GetProviderPropertyStore )( 
            __RPC__in AsyncIIdentityProvider * This);
        
        HRESULT ( STDMETHODCALLTYPE *Finish_GetProviderPropertyStore )( 
            __RPC__in AsyncIIdentityProvider * This,
            /* [out] */ __RPC__deref_out_opt IPropertyStore **ppPropertyStore);
        
        HRESULT ( STDMETHODCALLTYPE *Begin_Advise )( 
            __RPC__in AsyncIIdentityProvider * This,
            /* [in] */ __RPC__in_opt IIdentityAdvise *pIdentityAdvise,
            /* [in] */ DWORD dwIdentityUpdateEvents);
        
        HRESULT ( STDMETHODCALLTYPE *Finish_Advise )( 
            __RPC__in AsyncIIdentityProvider * This,
            /* [out] */ __RPC__out DWORD *pdwCookie);
        
        HRESULT ( STDMETHODCALLTYPE *Begin_UnAdvise )( 
            __RPC__in AsyncIIdentityProvider * This,
            /* [in] */ const DWORD dwCookie);
        
        HRESULT ( STDMETHODCALLTYPE *Finish_UnAdvise )( 
            __RPC__in AsyncIIdentityProvider * This);
        
        END_INTERFACE
    } AsyncIIdentityProviderVtbl;

    interface AsyncIIdentityProvider
    {
        CONST_VTBL struct AsyncIIdentityProviderVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define AsyncIIdentityProvider_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define AsyncIIdentityProvider_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define AsyncIIdentityProvider_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define AsyncIIdentityProvider_Begin_GetIdentityEnum(This,eIdentityType,pFilterkey,pFilterPropVarValue)	\
    ( (This)->lpVtbl -> Begin_GetIdentityEnum(This,eIdentityType,pFilterkey,pFilterPropVarValue) ) 

#define AsyncIIdentityProvider_Finish_GetIdentityEnum(This,ppIdentityEnum)	\
    ( (This)->lpVtbl -> Finish_GetIdentityEnum(This,ppIdentityEnum) ) 

#define AsyncIIdentityProvider_Begin_Create(This,lpszUserName,pKeywordsToAdd)	\
    ( (This)->lpVtbl -> Begin_Create(This,lpszUserName,pKeywordsToAdd) ) 

#define AsyncIIdentityProvider_Finish_Create(This,ppPropertyStore)	\
    ( (This)->lpVtbl -> Finish_Create(This,ppPropertyStore) ) 

#define AsyncIIdentityProvider_Begin_Import(This,pPropertyStore)	\
    ( (This)->lpVtbl -> Begin_Import(This,pPropertyStore) ) 

#define AsyncIIdentityProvider_Finish_Import(This)	\
    ( (This)->lpVtbl -> Finish_Import(This) ) 

#define AsyncIIdentityProvider_Begin_Delete(This,lpszUniqueID,pKeywordsToDelete)	\
    ( (This)->lpVtbl -> Begin_Delete(This,lpszUniqueID,pKeywordsToDelete) ) 

#define AsyncIIdentityProvider_Finish_Delete(This)	\
    ( (This)->lpVtbl -> Finish_Delete(This) ) 

#define AsyncIIdentityProvider_Begin_FindByUniqueID(This,lpszUniqueID)	\
    ( (This)->lpVtbl -> Begin_FindByUniqueID(This,lpszUniqueID) ) 

#define AsyncIIdentityProvider_Finish_FindByUniqueID(This,ppPropertyStore)	\
    ( (This)->lpVtbl -> Finish_FindByUniqueID(This,ppPropertyStore) ) 

#define AsyncIIdentityProvider_Begin_GetProviderPropertyStore(This)	\
    ( (This)->lpVtbl -> Begin_GetProviderPropertyStore(This) ) 

#define AsyncIIdentityProvider_Finish_GetProviderPropertyStore(This,ppPropertyStore)	\
    ( (This)->lpVtbl -> Finish_GetProviderPropertyStore(This,ppPropertyStore) ) 

#define AsyncIIdentityProvider_Begin_Advise(This,pIdentityAdvise,dwIdentityUpdateEvents)	\
    ( (This)->lpVtbl -> Begin_Advise(This,pIdentityAdvise,dwIdentityUpdateEvents) ) 

#define AsyncIIdentityProvider_Finish_Advise(This,pdwCookie)	\
    ( (This)->lpVtbl -> Finish_Advise(This,pdwCookie) ) 

#define AsyncIIdentityProvider_Begin_UnAdvise(This,dwCookie)	\
    ( (This)->lpVtbl -> Begin_UnAdvise(This,dwCookie) ) 

#define AsyncIIdentityProvider_Finish_UnAdvise(This)	\
    ( (This)->lpVtbl -> Finish_UnAdvise(This) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __AsyncIIdentityProvider_INTERFACE_DEFINED__ */


#ifndef __IAssociatedIdentityProvider_INTERFACE_DEFINED__
#define __IAssociatedIdentityProvider_INTERFACE_DEFINED__

/* interface IAssociatedIdentityProvider */
/* [unique][async_uuid][uuid][object] */ 


EXTERN_C const IID IID_IAssociatedIdentityProvider;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("2af066b3-4cbb-4cba-a798-204b6af68cc0")
    IAssociatedIdentityProvider : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE AssociateIdentity( 
            /* [in] */ __RPC__in HWND hwndParent,
            /* [out] */ __RPC__deref_out_opt IPropertyStore **ppPropertyStore) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE DisassociateIdentity( 
            /* [in] */ __RPC__in HWND hwndParent,
            /* [in] */ __RPC__in LPCWSTR lpszUniqueID) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ChangeCredential( 
            /* [in] */ __RPC__in HWND hwndParent,
            /* [in] */ __RPC__in LPCWSTR lpszUniqueID) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IAssociatedIdentityProviderVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IAssociatedIdentityProvider * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IAssociatedIdentityProvider * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IAssociatedIdentityProvider * This);
        
        HRESULT ( STDMETHODCALLTYPE *AssociateIdentity )( 
            __RPC__in IAssociatedIdentityProvider * This,
            /* [in] */ __RPC__in HWND hwndParent,
            /* [out] */ __RPC__deref_out_opt IPropertyStore **ppPropertyStore);
        
        HRESULT ( STDMETHODCALLTYPE *DisassociateIdentity )( 
            __RPC__in IAssociatedIdentityProvider * This,
            /* [in] */ __RPC__in HWND hwndParent,
            /* [in] */ __RPC__in LPCWSTR lpszUniqueID);
        
        HRESULT ( STDMETHODCALLTYPE *ChangeCredential )( 
            __RPC__in IAssociatedIdentityProvider * This,
            /* [in] */ __RPC__in HWND hwndParent,
            /* [in] */ __RPC__in LPCWSTR lpszUniqueID);
        
        END_INTERFACE
    } IAssociatedIdentityProviderVtbl;

    interface IAssociatedIdentityProvider
    {
        CONST_VTBL struct IAssociatedIdentityProviderVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IAssociatedIdentityProvider_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IAssociatedIdentityProvider_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IAssociatedIdentityProvider_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IAssociatedIdentityProvider_AssociateIdentity(This,hwndParent,ppPropertyStore)	\
    ( (This)->lpVtbl -> AssociateIdentity(This,hwndParent,ppPropertyStore) ) 

#define IAssociatedIdentityProvider_DisassociateIdentity(This,hwndParent,lpszUniqueID)	\
    ( (This)->lpVtbl -> DisassociateIdentity(This,hwndParent,lpszUniqueID) ) 

#define IAssociatedIdentityProvider_ChangeCredential(This,hwndParent,lpszUniqueID)	\
    ( (This)->lpVtbl -> ChangeCredential(This,hwndParent,lpszUniqueID) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IAssociatedIdentityProvider_INTERFACE_DEFINED__ */


#ifndef __AsyncIAssociatedIdentityProvider_INTERFACE_DEFINED__
#define __AsyncIAssociatedIdentityProvider_INTERFACE_DEFINED__

/* interface AsyncIAssociatedIdentityProvider */
/* [uuid][unique][object] */ 


EXTERN_C const IID IID_AsyncIAssociatedIdentityProvider;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("2834d6ed-297e-4e72-8a51-961e86f05152")
    AsyncIAssociatedIdentityProvider : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE Begin_AssociateIdentity( 
            /* [in] */ __RPC__in HWND hwndParent) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Finish_AssociateIdentity( 
            /* [out] */ __RPC__deref_out_opt IPropertyStore **ppPropertyStore) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Begin_DisassociateIdentity( 
            /* [in] */ __RPC__in HWND hwndParent,
            /* [in] */ __RPC__in LPCWSTR lpszUniqueID) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Finish_DisassociateIdentity( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Begin_ChangeCredential( 
            /* [in] */ __RPC__in HWND hwndParent,
            /* [in] */ __RPC__in LPCWSTR lpszUniqueID) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Finish_ChangeCredential( void) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct AsyncIAssociatedIdentityProviderVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in AsyncIAssociatedIdentityProvider * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in AsyncIAssociatedIdentityProvider * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in AsyncIAssociatedIdentityProvider * This);
        
        HRESULT ( STDMETHODCALLTYPE *Begin_AssociateIdentity )( 
            __RPC__in AsyncIAssociatedIdentityProvider * This,
            /* [in] */ __RPC__in HWND hwndParent);
        
        HRESULT ( STDMETHODCALLTYPE *Finish_AssociateIdentity )( 
            __RPC__in AsyncIAssociatedIdentityProvider * This,
            /* [out] */ __RPC__deref_out_opt IPropertyStore **ppPropertyStore);
        
        HRESULT ( STDMETHODCALLTYPE *Begin_DisassociateIdentity )( 
            __RPC__in AsyncIAssociatedIdentityProvider * This,
            /* [in] */ __RPC__in HWND hwndParent,
            /* [in] */ __RPC__in LPCWSTR lpszUniqueID);
        
        HRESULT ( STDMETHODCALLTYPE *Finish_DisassociateIdentity )( 
            __RPC__in AsyncIAssociatedIdentityProvider * This);
        
        HRESULT ( STDMETHODCALLTYPE *Begin_ChangeCredential )( 
            __RPC__in AsyncIAssociatedIdentityProvider * This,
            /* [in] */ __RPC__in HWND hwndParent,
            /* [in] */ __RPC__in LPCWSTR lpszUniqueID);
        
        HRESULT ( STDMETHODCALLTYPE *Finish_ChangeCredential )( 
            __RPC__in AsyncIAssociatedIdentityProvider * This);
        
        END_INTERFACE
    } AsyncIAssociatedIdentityProviderVtbl;

    interface AsyncIAssociatedIdentityProvider
    {
        CONST_VTBL struct AsyncIAssociatedIdentityProviderVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define AsyncIAssociatedIdentityProvider_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define AsyncIAssociatedIdentityProvider_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define AsyncIAssociatedIdentityProvider_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define AsyncIAssociatedIdentityProvider_Begin_AssociateIdentity(This,hwndParent)	\
    ( (This)->lpVtbl -> Begin_AssociateIdentity(This,hwndParent) ) 

#define AsyncIAssociatedIdentityProvider_Finish_AssociateIdentity(This,ppPropertyStore)	\
    ( (This)->lpVtbl -> Finish_AssociateIdentity(This,ppPropertyStore) ) 

#define AsyncIAssociatedIdentityProvider_Begin_DisassociateIdentity(This,hwndParent,lpszUniqueID)	\
    ( (This)->lpVtbl -> Begin_DisassociateIdentity(This,hwndParent,lpszUniqueID) ) 

#define AsyncIAssociatedIdentityProvider_Finish_DisassociateIdentity(This)	\
    ( (This)->lpVtbl -> Finish_DisassociateIdentity(This) ) 

#define AsyncIAssociatedIdentityProvider_Begin_ChangeCredential(This,hwndParent,lpszUniqueID)	\
    ( (This)->lpVtbl -> Begin_ChangeCredential(This,hwndParent,lpszUniqueID) ) 

#define AsyncIAssociatedIdentityProvider_Finish_ChangeCredential(This)	\
    ( (This)->lpVtbl -> Finish_ChangeCredential(This) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __AsyncIAssociatedIdentityProvider_INTERFACE_DEFINED__ */


/* Additional Prototypes for ALL interfaces */

unsigned long             __RPC_USER  BSTR_UserSize(     __RPC__in unsigned long *, unsigned long            , __RPC__in BSTR * ); 
unsigned char * __RPC_USER  BSTR_UserMarshal(  __RPC__in unsigned long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in BSTR * ); 
unsigned char * __RPC_USER  BSTR_UserUnmarshal(__RPC__in unsigned long *, __RPC__in_xcount(0) unsigned char *, __RPC__out BSTR * ); 
void                      __RPC_USER  BSTR_UserFree(     __RPC__in unsigned long *, __RPC__in BSTR * ); 

unsigned long             __RPC_USER  HWND_UserSize(     __RPC__in unsigned long *, unsigned long            , __RPC__in HWND * ); 
unsigned char * __RPC_USER  HWND_UserMarshal(  __RPC__in unsigned long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in HWND * ); 
unsigned char * __RPC_USER  HWND_UserUnmarshal(__RPC__in unsigned long *, __RPC__in_xcount(0) unsigned char *, __RPC__out HWND * ); 
void                      __RPC_USER  HWND_UserFree(     __RPC__in unsigned long *, __RPC__in HWND * ); 

unsigned long             __RPC_USER  LPSAFEARRAY_UserSize(     __RPC__in unsigned long *, unsigned long            , __RPC__in LPSAFEARRAY * ); 
unsigned char * __RPC_USER  LPSAFEARRAY_UserMarshal(  __RPC__in unsigned long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in LPSAFEARRAY * ); 
unsigned char * __RPC_USER  LPSAFEARRAY_UserUnmarshal(__RPC__in unsigned long *, __RPC__in_xcount(0) unsigned char *, __RPC__out LPSAFEARRAY * ); 
void                      __RPC_USER  LPSAFEARRAY_UserFree(     __RPC__in unsigned long *, __RPC__in LPSAFEARRAY * ); 

unsigned long             __RPC_USER  BSTR_UserSize64(     __RPC__in unsigned long *, unsigned long            , __RPC__in BSTR * ); 
unsigned char * __RPC_USER  BSTR_UserMarshal64(  __RPC__in unsigned long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in BSTR * ); 
unsigned char * __RPC_USER  BSTR_UserUnmarshal64(__RPC__in unsigned long *, __RPC__in_xcount(0) unsigned char *, __RPC__out BSTR * ); 
void                      __RPC_USER  BSTR_UserFree64(     __RPC__in unsigned long *, __RPC__in BSTR * ); 

unsigned long             __RPC_USER  HWND_UserSize64(     __RPC__in unsigned long *, unsigned long            , __RPC__in HWND * ); 
unsigned char * __RPC_USER  HWND_UserMarshal64(  __RPC__in unsigned long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in HWND * ); 
unsigned char * __RPC_USER  HWND_UserUnmarshal64(__RPC__in unsigned long *, __RPC__in_xcount(0) unsigned char *, __RPC__out HWND * ); 
void                      __RPC_USER  HWND_UserFree64(     __RPC__in unsigned long *, __RPC__in HWND * ); 

unsigned long             __RPC_USER  LPSAFEARRAY_UserSize64(     __RPC__in unsigned long *, unsigned long            , __RPC__in LPSAFEARRAY * ); 
unsigned char * __RPC_USER  LPSAFEARRAY_UserMarshal64(  __RPC__in unsigned long *, __RPC__inout_xcount(0) unsigned char *, __RPC__in LPSAFEARRAY * ); 
unsigned char * __RPC_USER  LPSAFEARRAY_UserUnmarshal64(__RPC__in unsigned long *, __RPC__in_xcount(0) unsigned char *, __RPC__out LPSAFEARRAY * ); 
void                      __RPC_USER  LPSAFEARRAY_UserFree64(     __RPC__in unsigned long *, __RPC__in LPSAFEARRAY * ); 

/* end of Additional Prototypes */

#ifdef __cplusplus
}
#endif

#endif



