/*** Autogenerated by WIDL 10.4 from include/iwscapi.idl - Do not edit ***/

#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif
#include <rpc.h>
#include <rpcndr.h>
#endif

#ifndef COM_NO_WINDOWS_H
#include <windows.h>
#include <ole2.h>
#endif

#ifndef __iwscapi_h__
#define __iwscapi_h__

/* Forward declarations */

#ifndef __IWscProduct_FWD_DEFINED__
#define __IWscProduct_FWD_DEFINED__
typedef interface IWscProduct IWscProduct;
#ifdef __cplusplus
interface IWscProduct;
#endif /* __cplusplus */
#endif

#ifndef __IWscProduct2_FWD_DEFINED__
#define __IWscProduct2_FWD_DEFINED__
typedef interface IWscProduct2 IWscProduct2;
#ifdef __cplusplus
interface IWscProduct2;
#endif /* __cplusplus */
#endif

#ifndef __IWscProduct3_FWD_DEFINED__
#define __IWscProduct3_FWD_DEFINED__
typedef interface IWscProduct3 IWscProduct3;
#ifdef __cplusplus
interface IWscProduct3;
#endif /* __cplusplus */
#endif

#ifndef __IWSCProductList_FWD_DEFINED__
#define __IWSCProductList_FWD_DEFINED__
typedef interface IWSCProductList IWSCProductList;
#ifdef __cplusplus
interface IWSCProductList;
#endif /* __cplusplus */
#endif

#ifndef __IWSCDefaultProduct_FWD_DEFINED__
#define __IWSCDefaultProduct_FWD_DEFINED__
typedef interface IWSCDefaultProduct IWSCDefaultProduct;
#ifdef __cplusplus
interface IWSCDefaultProduct;
#endif /* __cplusplus */
#endif

#ifndef __WSCProductList_FWD_DEFINED__
#define __WSCProductList_FWD_DEFINED__
#ifdef __cplusplus
typedef class WSCProductList WSCProductList;
#else
typedef struct WSCProductList WSCProductList;
#endif /* defined __cplusplus */
#endif /* defined __WSCProductList_FWD_DEFINED__ */

#ifndef __WSCDefaultProduct_FWD_DEFINED__
#define __WSCDefaultProduct_FWD_DEFINED__
#ifdef __cplusplus
typedef class WSCDefaultProduct WSCDefaultProduct;
#else
typedef struct WSCDefaultProduct WSCDefaultProduct;
#endif /* defined __cplusplus */
#endif /* defined __WSCDefaultProduct_FWD_DEFINED__ */

/* Headers for imported files */

#include <oaidl.h>

#ifdef __cplusplus
extern "C" {
#endif

typedef enum WSC_SECURITY_PRODUCT_SUBSTATUS {
    WSC_SECURITY_PRODUCT_SUBSTATUS_NOT_SET = 0,
    WSC_SECURITY_PRODUCT_SUBSTATUS_NO_ACTION = 1,
    WSC_SECURITY_PRODUCT_SUBSTATUS_ACTION_RECOMMENDED = 2,
    WSC_SECURITY_PRODUCT_SUBSTATUS_ACTION_NEEDED = 3
} WSC_SECURITY_PRODUCT_SUBSTATUS;
typedef enum WSC_SECURITY_PRODUCT_STATE {
    WSC_SECURITY_PRODUCT_STATE_ON = 0,
    WSC_SECURITY_PRODUCT_STATE_OFF = 1,
    WSC_SECURITY_PRODUCT_STATE_SNOOZED = 2,
    WSC_SECURITY_PRODUCT_STATE_EXPIRED = 3
} WSC_SECURITY_PRODUCT_STATE;
typedef enum _SECURITY_PRODUCT_TYPE {
    SECURITY_PRODUCT_TYPE_ANTIVIRUS = 0,
    SECURITY_PRODUCT_TYPE_FIREWALL = 1,
    SECURITY_PRODUCT_TYPE_ANTISPYWARE = 2
} SECURITY_PRODUCT_TYPE;
typedef enum _WSC_SECURITY_SIGNATURE_STATUS {
    WSC_SECURITY_PRODUCT_OUT_OF_DATE = 0,
    WSC_SECURITY_PRODUCT_UP_TO_DATE = 1
} WSC_SECURITY_SIGNATURE_STATUS;
/*****************************************************************************
 * IWscProduct interface
 */
#ifndef __IWscProduct_INTERFACE_DEFINED__
#define __IWscProduct_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWscProduct, 0x8c38232e, 0x3a45, 0x4a27, 0x92,0xb0, 0x1a,0x16,0xa9,0x75,0xf6,0x69);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("8c38232e-3a45-4a27-92b0-1a16a975f669")
IWscProduct : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_ProductName(
        BSTR *val) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ProductState(
        WSC_SECURITY_PRODUCT_STATE *val) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_SignatureStatus(
        WSC_SECURITY_SIGNATURE_STATUS *val) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_RemediationPath(
        BSTR *val) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ProductStateTimestamp(
        BSTR *val) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ProductGuid(
        BSTR *val) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ProductIsDefault(
        WINBOOL *val) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IWscProduct, 0x8c38232e, 0x3a45, 0x4a27, 0x92,0xb0, 0x1a,0x16,0xa9,0x75,0xf6,0x69)
#endif
#else
typedef struct IWscProductVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWscProduct *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWscProduct *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWscProduct *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IWscProduct *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IWscProduct *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IWscProduct *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IWscProduct *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IWscProduct methods ***/
    HRESULT (STDMETHODCALLTYPE *get_ProductName)(
        IWscProduct *This,
        BSTR *val);

    HRESULT (STDMETHODCALLTYPE *get_ProductState)(
        IWscProduct *This,
        WSC_SECURITY_PRODUCT_STATE *val);

    HRESULT (STDMETHODCALLTYPE *get_SignatureStatus)(
        IWscProduct *This,
        WSC_SECURITY_SIGNATURE_STATUS *val);

    HRESULT (STDMETHODCALLTYPE *get_RemediationPath)(
        IWscProduct *This,
        BSTR *val);

    HRESULT (STDMETHODCALLTYPE *get_ProductStateTimestamp)(
        IWscProduct *This,
        BSTR *val);

    HRESULT (STDMETHODCALLTYPE *get_ProductGuid)(
        IWscProduct *This,
        BSTR *val);

    HRESULT (STDMETHODCALLTYPE *get_ProductIsDefault)(
        IWscProduct *This,
        WINBOOL *val);

    END_INTERFACE
} IWscProductVtbl;

interface IWscProduct {
    CONST_VTBL IWscProductVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IWscProduct_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWscProduct_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWscProduct_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IWscProduct_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IWscProduct_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IWscProduct_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IWscProduct_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IWscProduct methods ***/
#define IWscProduct_get_ProductName(This,val) (This)->lpVtbl->get_ProductName(This,val)
#define IWscProduct_get_ProductState(This,val) (This)->lpVtbl->get_ProductState(This,val)
#define IWscProduct_get_SignatureStatus(This,val) (This)->lpVtbl->get_SignatureStatus(This,val)
#define IWscProduct_get_RemediationPath(This,val) (This)->lpVtbl->get_RemediationPath(This,val)
#define IWscProduct_get_ProductStateTimestamp(This,val) (This)->lpVtbl->get_ProductStateTimestamp(This,val)
#define IWscProduct_get_ProductGuid(This,val) (This)->lpVtbl->get_ProductGuid(This,val)
#define IWscProduct_get_ProductIsDefault(This,val) (This)->lpVtbl->get_ProductIsDefault(This,val)
#else
/*** IUnknown methods ***/
static inline HRESULT IWscProduct_QueryInterface(IWscProduct* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IWscProduct_AddRef(IWscProduct* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IWscProduct_Release(IWscProduct* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static inline HRESULT IWscProduct_GetTypeInfoCount(IWscProduct* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static inline HRESULT IWscProduct_GetTypeInfo(IWscProduct* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static inline HRESULT IWscProduct_GetIDsOfNames(IWscProduct* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static inline HRESULT IWscProduct_Invoke(IWscProduct* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IWscProduct methods ***/
static inline HRESULT IWscProduct_get_ProductName(IWscProduct* This,BSTR *val) {
    return This->lpVtbl->get_ProductName(This,val);
}
static inline HRESULT IWscProduct_get_ProductState(IWscProduct* This,WSC_SECURITY_PRODUCT_STATE *val) {
    return This->lpVtbl->get_ProductState(This,val);
}
static inline HRESULT IWscProduct_get_SignatureStatus(IWscProduct* This,WSC_SECURITY_SIGNATURE_STATUS *val) {
    return This->lpVtbl->get_SignatureStatus(This,val);
}
static inline HRESULT IWscProduct_get_RemediationPath(IWscProduct* This,BSTR *val) {
    return This->lpVtbl->get_RemediationPath(This,val);
}
static inline HRESULT IWscProduct_get_ProductStateTimestamp(IWscProduct* This,BSTR *val) {
    return This->lpVtbl->get_ProductStateTimestamp(This,val);
}
static inline HRESULT IWscProduct_get_ProductGuid(IWscProduct* This,BSTR *val) {
    return This->lpVtbl->get_ProductGuid(This,val);
}
static inline HRESULT IWscProduct_get_ProductIsDefault(IWscProduct* This,WINBOOL *val) {
    return This->lpVtbl->get_ProductIsDefault(This,val);
}
#endif
#endif

#endif


#endif  /* __IWscProduct_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IWscProduct2 interface
 */
#ifndef __IWscProduct2_INTERFACE_DEFINED__
#define __IWscProduct2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWscProduct2, 0xf896ca54, 0xfe09, 0x4403, 0x86,0xd4, 0x23,0xcb,0x48,0x8d,0x81,0xd8);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("f896ca54-fe09-4403-86d4-23cb488d81d8")
IWscProduct2 : public IWscProduct
{
    virtual HRESULT STDMETHODCALLTYPE get_AntivirusScanSubstatus(
        WSC_SECURITY_PRODUCT_SUBSTATUS *status) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_AntivirusSettingsSubstatus(
        WSC_SECURITY_PRODUCT_SUBSTATUS *status) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_AntivirusProtectionUpdateSubstatus(
        WSC_SECURITY_PRODUCT_SUBSTATUS *status) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_FirewallDomainProfileSubstatus(
        WSC_SECURITY_PRODUCT_SUBSTATUS *status) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_FirewallPrivateProfileSubstatus(
        WSC_SECURITY_PRODUCT_SUBSTATUS *status) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_FirewallPublicProfileSubstatus(
        WSC_SECURITY_PRODUCT_SUBSTATUS *status) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IWscProduct2, 0xf896ca54, 0xfe09, 0x4403, 0x86,0xd4, 0x23,0xcb,0x48,0x8d,0x81,0xd8)
#endif
#else
typedef struct IWscProduct2Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWscProduct2 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWscProduct2 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWscProduct2 *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IWscProduct2 *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IWscProduct2 *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IWscProduct2 *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IWscProduct2 *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IWscProduct methods ***/
    HRESULT (STDMETHODCALLTYPE *get_ProductName)(
        IWscProduct2 *This,
        BSTR *val);

    HRESULT (STDMETHODCALLTYPE *get_ProductState)(
        IWscProduct2 *This,
        WSC_SECURITY_PRODUCT_STATE *val);

    HRESULT (STDMETHODCALLTYPE *get_SignatureStatus)(
        IWscProduct2 *This,
        WSC_SECURITY_SIGNATURE_STATUS *val);

    HRESULT (STDMETHODCALLTYPE *get_RemediationPath)(
        IWscProduct2 *This,
        BSTR *val);

    HRESULT (STDMETHODCALLTYPE *get_ProductStateTimestamp)(
        IWscProduct2 *This,
        BSTR *val);

    HRESULT (STDMETHODCALLTYPE *get_ProductGuid)(
        IWscProduct2 *This,
        BSTR *val);

    HRESULT (STDMETHODCALLTYPE *get_ProductIsDefault)(
        IWscProduct2 *This,
        WINBOOL *val);

    /*** IWscProduct2 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_AntivirusScanSubstatus)(
        IWscProduct2 *This,
        WSC_SECURITY_PRODUCT_SUBSTATUS *status);

    HRESULT (STDMETHODCALLTYPE *get_AntivirusSettingsSubstatus)(
        IWscProduct2 *This,
        WSC_SECURITY_PRODUCT_SUBSTATUS *status);

    HRESULT (STDMETHODCALLTYPE *get_AntivirusProtectionUpdateSubstatus)(
        IWscProduct2 *This,
        WSC_SECURITY_PRODUCT_SUBSTATUS *status);

    HRESULT (STDMETHODCALLTYPE *get_FirewallDomainProfileSubstatus)(
        IWscProduct2 *This,
        WSC_SECURITY_PRODUCT_SUBSTATUS *status);

    HRESULT (STDMETHODCALLTYPE *get_FirewallPrivateProfileSubstatus)(
        IWscProduct2 *This,
        WSC_SECURITY_PRODUCT_SUBSTATUS *status);

    HRESULT (STDMETHODCALLTYPE *get_FirewallPublicProfileSubstatus)(
        IWscProduct2 *This,
        WSC_SECURITY_PRODUCT_SUBSTATUS *status);

    END_INTERFACE
} IWscProduct2Vtbl;

interface IWscProduct2 {
    CONST_VTBL IWscProduct2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IWscProduct2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWscProduct2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWscProduct2_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IWscProduct2_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IWscProduct2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IWscProduct2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IWscProduct2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IWscProduct methods ***/
#define IWscProduct2_get_ProductName(This,val) (This)->lpVtbl->get_ProductName(This,val)
#define IWscProduct2_get_ProductState(This,val) (This)->lpVtbl->get_ProductState(This,val)
#define IWscProduct2_get_SignatureStatus(This,val) (This)->lpVtbl->get_SignatureStatus(This,val)
#define IWscProduct2_get_RemediationPath(This,val) (This)->lpVtbl->get_RemediationPath(This,val)
#define IWscProduct2_get_ProductStateTimestamp(This,val) (This)->lpVtbl->get_ProductStateTimestamp(This,val)
#define IWscProduct2_get_ProductGuid(This,val) (This)->lpVtbl->get_ProductGuid(This,val)
#define IWscProduct2_get_ProductIsDefault(This,val) (This)->lpVtbl->get_ProductIsDefault(This,val)
/*** IWscProduct2 methods ***/
#define IWscProduct2_get_AntivirusScanSubstatus(This,status) (This)->lpVtbl->get_AntivirusScanSubstatus(This,status)
#define IWscProduct2_get_AntivirusSettingsSubstatus(This,status) (This)->lpVtbl->get_AntivirusSettingsSubstatus(This,status)
#define IWscProduct2_get_AntivirusProtectionUpdateSubstatus(This,status) (This)->lpVtbl->get_AntivirusProtectionUpdateSubstatus(This,status)
#define IWscProduct2_get_FirewallDomainProfileSubstatus(This,status) (This)->lpVtbl->get_FirewallDomainProfileSubstatus(This,status)
#define IWscProduct2_get_FirewallPrivateProfileSubstatus(This,status) (This)->lpVtbl->get_FirewallPrivateProfileSubstatus(This,status)
#define IWscProduct2_get_FirewallPublicProfileSubstatus(This,status) (This)->lpVtbl->get_FirewallPublicProfileSubstatus(This,status)
#else
/*** IUnknown methods ***/
static inline HRESULT IWscProduct2_QueryInterface(IWscProduct2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IWscProduct2_AddRef(IWscProduct2* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IWscProduct2_Release(IWscProduct2* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static inline HRESULT IWscProduct2_GetTypeInfoCount(IWscProduct2* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static inline HRESULT IWscProduct2_GetTypeInfo(IWscProduct2* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static inline HRESULT IWscProduct2_GetIDsOfNames(IWscProduct2* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static inline HRESULT IWscProduct2_Invoke(IWscProduct2* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IWscProduct methods ***/
static inline HRESULT IWscProduct2_get_ProductName(IWscProduct2* This,BSTR *val) {
    return This->lpVtbl->get_ProductName(This,val);
}
static inline HRESULT IWscProduct2_get_ProductState(IWscProduct2* This,WSC_SECURITY_PRODUCT_STATE *val) {
    return This->lpVtbl->get_ProductState(This,val);
}
static inline HRESULT IWscProduct2_get_SignatureStatus(IWscProduct2* This,WSC_SECURITY_SIGNATURE_STATUS *val) {
    return This->lpVtbl->get_SignatureStatus(This,val);
}
static inline HRESULT IWscProduct2_get_RemediationPath(IWscProduct2* This,BSTR *val) {
    return This->lpVtbl->get_RemediationPath(This,val);
}
static inline HRESULT IWscProduct2_get_ProductStateTimestamp(IWscProduct2* This,BSTR *val) {
    return This->lpVtbl->get_ProductStateTimestamp(This,val);
}
static inline HRESULT IWscProduct2_get_ProductGuid(IWscProduct2* This,BSTR *val) {
    return This->lpVtbl->get_ProductGuid(This,val);
}
static inline HRESULT IWscProduct2_get_ProductIsDefault(IWscProduct2* This,WINBOOL *val) {
    return This->lpVtbl->get_ProductIsDefault(This,val);
}
/*** IWscProduct2 methods ***/
static inline HRESULT IWscProduct2_get_AntivirusScanSubstatus(IWscProduct2* This,WSC_SECURITY_PRODUCT_SUBSTATUS *status) {
    return This->lpVtbl->get_AntivirusScanSubstatus(This,status);
}
static inline HRESULT IWscProduct2_get_AntivirusSettingsSubstatus(IWscProduct2* This,WSC_SECURITY_PRODUCT_SUBSTATUS *status) {
    return This->lpVtbl->get_AntivirusSettingsSubstatus(This,status);
}
static inline HRESULT IWscProduct2_get_AntivirusProtectionUpdateSubstatus(IWscProduct2* This,WSC_SECURITY_PRODUCT_SUBSTATUS *status) {
    return This->lpVtbl->get_AntivirusProtectionUpdateSubstatus(This,status);
}
static inline HRESULT IWscProduct2_get_FirewallDomainProfileSubstatus(IWscProduct2* This,WSC_SECURITY_PRODUCT_SUBSTATUS *status) {
    return This->lpVtbl->get_FirewallDomainProfileSubstatus(This,status);
}
static inline HRESULT IWscProduct2_get_FirewallPrivateProfileSubstatus(IWscProduct2* This,WSC_SECURITY_PRODUCT_SUBSTATUS *status) {
    return This->lpVtbl->get_FirewallPrivateProfileSubstatus(This,status);
}
static inline HRESULT IWscProduct2_get_FirewallPublicProfileSubstatus(IWscProduct2* This,WSC_SECURITY_PRODUCT_SUBSTATUS *status) {
    return This->lpVtbl->get_FirewallPublicProfileSubstatus(This,status);
}
#endif
#endif

#endif


#endif  /* __IWscProduct2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IWscProduct3 interface
 */
#ifndef __IWscProduct3_INTERFACE_DEFINED__
#define __IWscProduct3_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWscProduct3, 0x55536524, 0xd1d1, 0x4726, 0x8c,0x7c, 0x04,0x99,0x6a,0x19,0x04,0xe7);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("55536524-d1d1-4726-8c7c-04996a1904e7")
IWscProduct3 : public IWscProduct2
{
    virtual HRESULT STDMETHODCALLTYPE get_AntivirusDaysUntilExpired(
        DWORD *days) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IWscProduct3, 0x55536524, 0xd1d1, 0x4726, 0x8c,0x7c, 0x04,0x99,0x6a,0x19,0x04,0xe7)
#endif
#else
typedef struct IWscProduct3Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWscProduct3 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWscProduct3 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWscProduct3 *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IWscProduct3 *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IWscProduct3 *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IWscProduct3 *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IWscProduct3 *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IWscProduct methods ***/
    HRESULT (STDMETHODCALLTYPE *get_ProductName)(
        IWscProduct3 *This,
        BSTR *val);

    HRESULT (STDMETHODCALLTYPE *get_ProductState)(
        IWscProduct3 *This,
        WSC_SECURITY_PRODUCT_STATE *val);

    HRESULT (STDMETHODCALLTYPE *get_SignatureStatus)(
        IWscProduct3 *This,
        WSC_SECURITY_SIGNATURE_STATUS *val);

    HRESULT (STDMETHODCALLTYPE *get_RemediationPath)(
        IWscProduct3 *This,
        BSTR *val);

    HRESULT (STDMETHODCALLTYPE *get_ProductStateTimestamp)(
        IWscProduct3 *This,
        BSTR *val);

    HRESULT (STDMETHODCALLTYPE *get_ProductGuid)(
        IWscProduct3 *This,
        BSTR *val);

    HRESULT (STDMETHODCALLTYPE *get_ProductIsDefault)(
        IWscProduct3 *This,
        WINBOOL *val);

    /*** IWscProduct2 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_AntivirusScanSubstatus)(
        IWscProduct3 *This,
        WSC_SECURITY_PRODUCT_SUBSTATUS *status);

    HRESULT (STDMETHODCALLTYPE *get_AntivirusSettingsSubstatus)(
        IWscProduct3 *This,
        WSC_SECURITY_PRODUCT_SUBSTATUS *status);

    HRESULT (STDMETHODCALLTYPE *get_AntivirusProtectionUpdateSubstatus)(
        IWscProduct3 *This,
        WSC_SECURITY_PRODUCT_SUBSTATUS *status);

    HRESULT (STDMETHODCALLTYPE *get_FirewallDomainProfileSubstatus)(
        IWscProduct3 *This,
        WSC_SECURITY_PRODUCT_SUBSTATUS *status);

    HRESULT (STDMETHODCALLTYPE *get_FirewallPrivateProfileSubstatus)(
        IWscProduct3 *This,
        WSC_SECURITY_PRODUCT_SUBSTATUS *status);

    HRESULT (STDMETHODCALLTYPE *get_FirewallPublicProfileSubstatus)(
        IWscProduct3 *This,
        WSC_SECURITY_PRODUCT_SUBSTATUS *status);

    /*** IWscProduct3 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_AntivirusDaysUntilExpired)(
        IWscProduct3 *This,
        DWORD *days);

    END_INTERFACE
} IWscProduct3Vtbl;

interface IWscProduct3 {
    CONST_VTBL IWscProduct3Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IWscProduct3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWscProduct3_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWscProduct3_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IWscProduct3_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IWscProduct3_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IWscProduct3_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IWscProduct3_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IWscProduct methods ***/
#define IWscProduct3_get_ProductName(This,val) (This)->lpVtbl->get_ProductName(This,val)
#define IWscProduct3_get_ProductState(This,val) (This)->lpVtbl->get_ProductState(This,val)
#define IWscProduct3_get_SignatureStatus(This,val) (This)->lpVtbl->get_SignatureStatus(This,val)
#define IWscProduct3_get_RemediationPath(This,val) (This)->lpVtbl->get_RemediationPath(This,val)
#define IWscProduct3_get_ProductStateTimestamp(This,val) (This)->lpVtbl->get_ProductStateTimestamp(This,val)
#define IWscProduct3_get_ProductGuid(This,val) (This)->lpVtbl->get_ProductGuid(This,val)
#define IWscProduct3_get_ProductIsDefault(This,val) (This)->lpVtbl->get_ProductIsDefault(This,val)
/*** IWscProduct2 methods ***/
#define IWscProduct3_get_AntivirusScanSubstatus(This,status) (This)->lpVtbl->get_AntivirusScanSubstatus(This,status)
#define IWscProduct3_get_AntivirusSettingsSubstatus(This,status) (This)->lpVtbl->get_AntivirusSettingsSubstatus(This,status)
#define IWscProduct3_get_AntivirusProtectionUpdateSubstatus(This,status) (This)->lpVtbl->get_AntivirusProtectionUpdateSubstatus(This,status)
#define IWscProduct3_get_FirewallDomainProfileSubstatus(This,status) (This)->lpVtbl->get_FirewallDomainProfileSubstatus(This,status)
#define IWscProduct3_get_FirewallPrivateProfileSubstatus(This,status) (This)->lpVtbl->get_FirewallPrivateProfileSubstatus(This,status)
#define IWscProduct3_get_FirewallPublicProfileSubstatus(This,status) (This)->lpVtbl->get_FirewallPublicProfileSubstatus(This,status)
/*** IWscProduct3 methods ***/
#define IWscProduct3_get_AntivirusDaysUntilExpired(This,days) (This)->lpVtbl->get_AntivirusDaysUntilExpired(This,days)
#else
/*** IUnknown methods ***/
static inline HRESULT IWscProduct3_QueryInterface(IWscProduct3* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IWscProduct3_AddRef(IWscProduct3* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IWscProduct3_Release(IWscProduct3* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static inline HRESULT IWscProduct3_GetTypeInfoCount(IWscProduct3* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static inline HRESULT IWscProduct3_GetTypeInfo(IWscProduct3* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static inline HRESULT IWscProduct3_GetIDsOfNames(IWscProduct3* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static inline HRESULT IWscProduct3_Invoke(IWscProduct3* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IWscProduct methods ***/
static inline HRESULT IWscProduct3_get_ProductName(IWscProduct3* This,BSTR *val) {
    return This->lpVtbl->get_ProductName(This,val);
}
static inline HRESULT IWscProduct3_get_ProductState(IWscProduct3* This,WSC_SECURITY_PRODUCT_STATE *val) {
    return This->lpVtbl->get_ProductState(This,val);
}
static inline HRESULT IWscProduct3_get_SignatureStatus(IWscProduct3* This,WSC_SECURITY_SIGNATURE_STATUS *val) {
    return This->lpVtbl->get_SignatureStatus(This,val);
}
static inline HRESULT IWscProduct3_get_RemediationPath(IWscProduct3* This,BSTR *val) {
    return This->lpVtbl->get_RemediationPath(This,val);
}
static inline HRESULT IWscProduct3_get_ProductStateTimestamp(IWscProduct3* This,BSTR *val) {
    return This->lpVtbl->get_ProductStateTimestamp(This,val);
}
static inline HRESULT IWscProduct3_get_ProductGuid(IWscProduct3* This,BSTR *val) {
    return This->lpVtbl->get_ProductGuid(This,val);
}
static inline HRESULT IWscProduct3_get_ProductIsDefault(IWscProduct3* This,WINBOOL *val) {
    return This->lpVtbl->get_ProductIsDefault(This,val);
}
/*** IWscProduct2 methods ***/
static inline HRESULT IWscProduct3_get_AntivirusScanSubstatus(IWscProduct3* This,WSC_SECURITY_PRODUCT_SUBSTATUS *status) {
    return This->lpVtbl->get_AntivirusScanSubstatus(This,status);
}
static inline HRESULT IWscProduct3_get_AntivirusSettingsSubstatus(IWscProduct3* This,WSC_SECURITY_PRODUCT_SUBSTATUS *status) {
    return This->lpVtbl->get_AntivirusSettingsSubstatus(This,status);
}
static inline HRESULT IWscProduct3_get_AntivirusProtectionUpdateSubstatus(IWscProduct3* This,WSC_SECURITY_PRODUCT_SUBSTATUS *status) {
    return This->lpVtbl->get_AntivirusProtectionUpdateSubstatus(This,status);
}
static inline HRESULT IWscProduct3_get_FirewallDomainProfileSubstatus(IWscProduct3* This,WSC_SECURITY_PRODUCT_SUBSTATUS *status) {
    return This->lpVtbl->get_FirewallDomainProfileSubstatus(This,status);
}
static inline HRESULT IWscProduct3_get_FirewallPrivateProfileSubstatus(IWscProduct3* This,WSC_SECURITY_PRODUCT_SUBSTATUS *status) {
    return This->lpVtbl->get_FirewallPrivateProfileSubstatus(This,status);
}
static inline HRESULT IWscProduct3_get_FirewallPublicProfileSubstatus(IWscProduct3* This,WSC_SECURITY_PRODUCT_SUBSTATUS *status) {
    return This->lpVtbl->get_FirewallPublicProfileSubstatus(This,status);
}
/*** IWscProduct3 methods ***/
static inline HRESULT IWscProduct3_get_AntivirusDaysUntilExpired(IWscProduct3* This,DWORD *days) {
    return This->lpVtbl->get_AntivirusDaysUntilExpired(This,days);
}
#endif
#endif

#endif


#endif  /* __IWscProduct3_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IWSCProductList interface
 */
#ifndef __IWSCProductList_INTERFACE_DEFINED__
#define __IWSCProductList_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWSCProductList, 0x722a338c, 0x6e8e, 0x4e72, 0xac,0x27, 0x14,0x17,0xfb,0x0c,0x81,0xc2);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("722a338c-6e8e-4e72-ac27-1417fb0c81c2")
IWSCProductList : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE Initialize(
        ULONG provider) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Count(
        LONG *val) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Item(
        ULONG index,
        IWscProduct **val) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IWSCProductList, 0x722a338c, 0x6e8e, 0x4e72, 0xac,0x27, 0x14,0x17,0xfb,0x0c,0x81,0xc2)
#endif
#else
typedef struct IWSCProductListVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWSCProductList *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWSCProductList *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWSCProductList *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IWSCProductList *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IWSCProductList *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IWSCProductList *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IWSCProductList *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IWSCProductList methods ***/
    HRESULT (STDMETHODCALLTYPE *Initialize)(
        IWSCProductList *This,
        ULONG provider);

    HRESULT (STDMETHODCALLTYPE *get_Count)(
        IWSCProductList *This,
        LONG *val);

    HRESULT (STDMETHODCALLTYPE *get_Item)(
        IWSCProductList *This,
        ULONG index,
        IWscProduct **val);

    END_INTERFACE
} IWSCProductListVtbl;

interface IWSCProductList {
    CONST_VTBL IWSCProductListVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IWSCProductList_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWSCProductList_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWSCProductList_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IWSCProductList_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IWSCProductList_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IWSCProductList_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IWSCProductList_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IWSCProductList methods ***/
#define IWSCProductList_Initialize(This,provider) (This)->lpVtbl->Initialize(This,provider)
#define IWSCProductList_get_Count(This,val) (This)->lpVtbl->get_Count(This,val)
#define IWSCProductList_get_Item(This,index,val) (This)->lpVtbl->get_Item(This,index,val)
#else
/*** IUnknown methods ***/
static inline HRESULT IWSCProductList_QueryInterface(IWSCProductList* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IWSCProductList_AddRef(IWSCProductList* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IWSCProductList_Release(IWSCProductList* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static inline HRESULT IWSCProductList_GetTypeInfoCount(IWSCProductList* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static inline HRESULT IWSCProductList_GetTypeInfo(IWSCProductList* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static inline HRESULT IWSCProductList_GetIDsOfNames(IWSCProductList* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static inline HRESULT IWSCProductList_Invoke(IWSCProductList* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IWSCProductList methods ***/
static inline HRESULT IWSCProductList_Initialize(IWSCProductList* This,ULONG provider) {
    return This->lpVtbl->Initialize(This,provider);
}
static inline HRESULT IWSCProductList_get_Count(IWSCProductList* This,LONG *val) {
    return This->lpVtbl->get_Count(This,val);
}
static inline HRESULT IWSCProductList_get_Item(IWSCProductList* This,ULONG index,IWscProduct **val) {
    return This->lpVtbl->get_Item(This,index,val);
}
#endif
#endif

#endif


#endif  /* __IWSCProductList_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IWSCDefaultProduct interface
 */
#ifndef __IWSCDefaultProduct_INTERFACE_DEFINED__
#define __IWSCDefaultProduct_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWSCDefaultProduct, 0x0476d69c, 0xf21a, 0x11e5, 0x9c,0xe9, 0x5e,0x55,0x17,0x50,0x7c,0x66);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0476d69c-f21a-11e5-9ce9-5e5517507c66")
IWSCDefaultProduct : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE SetDefaultProduct(
        SECURITY_PRODUCT_TYPE type,
        BSTR guid) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IWSCDefaultProduct, 0x0476d69c, 0xf21a, 0x11e5, 0x9c,0xe9, 0x5e,0x55,0x17,0x50,0x7c,0x66)
#endif
#else
typedef struct IWSCDefaultProductVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWSCDefaultProduct *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWSCDefaultProduct *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWSCDefaultProduct *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IWSCDefaultProduct *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IWSCDefaultProduct *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IWSCDefaultProduct *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IWSCDefaultProduct *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IWSCDefaultProduct methods ***/
    HRESULT (STDMETHODCALLTYPE *SetDefaultProduct)(
        IWSCDefaultProduct *This,
        SECURITY_PRODUCT_TYPE type,
        BSTR guid);

    END_INTERFACE
} IWSCDefaultProductVtbl;

interface IWSCDefaultProduct {
    CONST_VTBL IWSCDefaultProductVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IWSCDefaultProduct_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWSCDefaultProduct_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWSCDefaultProduct_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IWSCDefaultProduct_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IWSCDefaultProduct_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IWSCDefaultProduct_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IWSCDefaultProduct_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IWSCDefaultProduct methods ***/
#define IWSCDefaultProduct_SetDefaultProduct(This,type,guid) (This)->lpVtbl->SetDefaultProduct(This,type,guid)
#else
/*** IUnknown methods ***/
static inline HRESULT IWSCDefaultProduct_QueryInterface(IWSCDefaultProduct* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IWSCDefaultProduct_AddRef(IWSCDefaultProduct* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IWSCDefaultProduct_Release(IWSCDefaultProduct* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static inline HRESULT IWSCDefaultProduct_GetTypeInfoCount(IWSCDefaultProduct* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static inline HRESULT IWSCDefaultProduct_GetTypeInfo(IWSCDefaultProduct* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static inline HRESULT IWSCDefaultProduct_GetIDsOfNames(IWSCDefaultProduct* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static inline HRESULT IWSCDefaultProduct_Invoke(IWSCDefaultProduct* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IWSCDefaultProduct methods ***/
static inline HRESULT IWSCDefaultProduct_SetDefaultProduct(IWSCDefaultProduct* This,SECURITY_PRODUCT_TYPE type,BSTR guid) {
    return This->lpVtbl->SetDefaultProduct(This,type,guid);
}
#endif
#endif

#endif


#endif  /* __IWSCDefaultProduct_INTERFACE_DEFINED__ */

#ifndef __wscAPILib_LIBRARY_DEFINED__
#define __wscAPILib_LIBRARY_DEFINED__

DEFINE_GUID(LIBID_wscAPILib, 0xb52a4496, 0x7753, 0x4f74, 0xbe,0x64, 0xc2,0x07,0x2e,0x30,0x81,0x22);

/*****************************************************************************
 * WSCProductList coclass
 */

DEFINE_GUID(CLSID_WSCProductList, 0x17072f7b, 0x9abe, 0x4a74, 0xa2,0x61, 0x1e,0xb7,0x6b,0x55,0x10,0x7a);

#ifdef __cplusplus
class DECLSPEC_UUID("17072f7b-9abe-4a74-a261-1eb76b55107a") WSCProductList;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(WSCProductList, 0x17072f7b, 0x9abe, 0x4a74, 0xa2,0x61, 0x1e,0xb7,0x6b,0x55,0x10,0x7a)
#endif
#endif

/*****************************************************************************
 * WSCDefaultProduct coclass
 */

DEFINE_GUID(CLSID_WSCDefaultProduct, 0x2981a36e, 0xf22d, 0x11e5, 0x9c,0xe9, 0x5e,0x55,0x17,0x50,0x7c,0x66);

#ifdef __cplusplus
class DECLSPEC_UUID("2981a36e-f22d-11e5-9ce9-5e5517507c66") WSCDefaultProduct;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(WSCDefaultProduct, 0x2981a36e, 0xf22d, 0x11e5, 0x9c,0xe9, 0x5e,0x55,0x17,0x50,0x7c,0x66)
#endif
#endif

#endif /* __wscAPILib_LIBRARY_DEFINED__ */
/* Begin additional prototypes for all interfaces */


/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __iwscapi_h__ */
