/*** Autogenerated by WIDL 4.12.1 from include/napenforcementclient.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 __napenforcementclient_h__
#define __napenforcementclient_h__

/* Forward declarations */

#ifndef __INapEnforcementClientBinding_FWD_DEFINED__
#define __INapEnforcementClientBinding_FWD_DEFINED__
typedef interface INapEnforcementClientBinding INapEnforcementClientBinding;
#ifdef __cplusplus
interface INapEnforcementClientBinding;
#endif /* __cplusplus */
#endif

#ifndef __INapEnforcementClientCallback_FWD_DEFINED__
#define __INapEnforcementClientCallback_FWD_DEFINED__
typedef interface INapEnforcementClientCallback INapEnforcementClientCallback;
#ifdef __cplusplus
interface INapEnforcementClientCallback;
#endif /* __cplusplus */
#endif

#ifndef __INapEnforcementClientConnection_FWD_DEFINED__
#define __INapEnforcementClientConnection_FWD_DEFINED__
typedef interface INapEnforcementClientConnection INapEnforcementClientConnection;
#ifdef __cplusplus
interface INapEnforcementClientConnection;
#endif /* __cplusplus */
#endif

#ifndef __INapEnforcementClientConnection2_FWD_DEFINED__
#define __INapEnforcementClientConnection2_FWD_DEFINED__
typedef interface INapEnforcementClientConnection2 INapEnforcementClientConnection2;
#ifdef __cplusplus
interface INapEnforcementClientConnection2;
#endif /* __cplusplus */
#endif

/* Headers for imported files */

#include <naptypes.h>
#include <unknwn.h>

#ifdef __cplusplus
extern "C" {
#endif

#include <winapifamily.h>

#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#ifndef __INapEnforcementClientBinding_FWD_DEFINED__
#define __INapEnforcementClientBinding_FWD_DEFINED__
typedef interface INapEnforcementClientBinding INapEnforcementClientBinding;
#ifdef __cplusplus
interface INapEnforcementClientBinding;
#endif /* __cplusplus */
#endif

#ifndef __INapEnforcementClientCallback_FWD_DEFINED__
#define __INapEnforcementClientCallback_FWD_DEFINED__
typedef interface INapEnforcementClientCallback INapEnforcementClientCallback;
#ifdef __cplusplus
interface INapEnforcementClientCallback;
#endif /* __cplusplus */
#endif

#ifndef __INapEnforcementClientConnection_FWD_DEFINED__
#define __INapEnforcementClientConnection_FWD_DEFINED__
typedef interface INapEnforcementClientConnection INapEnforcementClientConnection;
#ifdef __cplusplus
interface INapEnforcementClientConnection;
#endif /* __cplusplus */
#endif

#ifndef __INapEnforcementClientConnection2_FWD_DEFINED__
#define __INapEnforcementClientConnection2_FWD_DEFINED__
typedef interface INapEnforcementClientConnection2 INapEnforcementClientConnection2;
#ifdef __cplusplus
interface INapEnforcementClientConnection2;
#endif /* __cplusplus */
#endif

/*****************************************************************************
 * INapEnforcementClientBinding interface
 */
#ifndef __INapEnforcementClientBinding_INTERFACE_DEFINED__
#define __INapEnforcementClientBinding_INTERFACE_DEFINED__

DEFINE_GUID(IID_INapEnforcementClientBinding, 0x92b93223, 0x7487, 0x42d9, 0x9a,0x91, 0x5b,0x85,0x07,0x72,0x03,0x84);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("92b93223-7487-42d9-9a91-5b8507720384")
INapEnforcementClientBinding : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Initialize(
        EnforcementEntityId id,
        INapEnforcementClientCallback *callback) = 0;

    virtual HRESULT STDMETHODCALLTYPE Uninitialize(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateConnection(
        INapEnforcementClientConnection **connection) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSoHRequest(
        INapEnforcementClientConnection *connection,
        WINBOOL *retriggerHint) = 0;

    virtual HRESULT STDMETHODCALLTYPE ProcessSoHResponse(
        INapEnforcementClientConnection *connection) = 0;

    virtual HRESULT STDMETHODCALLTYPE NotifyConnectionStateDown(
        INapEnforcementClientConnection *downCxn) = 0;

    virtual HRESULT STDMETHODCALLTYPE NotifySoHChangeFailure(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(INapEnforcementClientBinding, 0x92b93223, 0x7487, 0x42d9, 0x9a,0x91, 0x5b,0x85,0x07,0x72,0x03,0x84)
#endif
#else
typedef struct INapEnforcementClientBindingVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** INapEnforcementClientBinding methods ***/
    HRESULT (STDMETHODCALLTYPE *Initialize)(
        INapEnforcementClientBinding *This,
        EnforcementEntityId id,
        INapEnforcementClientCallback *callback);

    HRESULT (STDMETHODCALLTYPE *Uninitialize)(
        INapEnforcementClientBinding *This);

    HRESULT (STDMETHODCALLTYPE *CreateConnection)(
        INapEnforcementClientBinding *This,
        INapEnforcementClientConnection **connection);

    HRESULT (STDMETHODCALLTYPE *GetSoHRequest)(
        INapEnforcementClientBinding *This,
        INapEnforcementClientConnection *connection,
        WINBOOL *retriggerHint);

    HRESULT (STDMETHODCALLTYPE *ProcessSoHResponse)(
        INapEnforcementClientBinding *This,
        INapEnforcementClientConnection *connection);

    HRESULT (STDMETHODCALLTYPE *NotifyConnectionStateDown)(
        INapEnforcementClientBinding *This,
        INapEnforcementClientConnection *downCxn);

    HRESULT (STDMETHODCALLTYPE *NotifySoHChangeFailure)(
        INapEnforcementClientBinding *This);

    END_INTERFACE
} INapEnforcementClientBindingVtbl;

interface INapEnforcementClientBinding {
    CONST_VTBL INapEnforcementClientBindingVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define INapEnforcementClientBinding_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define INapEnforcementClientBinding_AddRef(This) (This)->lpVtbl->AddRef(This)
#define INapEnforcementClientBinding_Release(This) (This)->lpVtbl->Release(This)
/*** INapEnforcementClientBinding methods ***/
#define INapEnforcementClientBinding_Initialize(This,id,callback) (This)->lpVtbl->Initialize(This,id,callback)
#define INapEnforcementClientBinding_Uninitialize(This) (This)->lpVtbl->Uninitialize(This)
#define INapEnforcementClientBinding_CreateConnection(This,connection) (This)->lpVtbl->CreateConnection(This,connection)
#define INapEnforcementClientBinding_GetSoHRequest(This,connection,retriggerHint) (This)->lpVtbl->GetSoHRequest(This,connection,retriggerHint)
#define INapEnforcementClientBinding_ProcessSoHResponse(This,connection) (This)->lpVtbl->ProcessSoHResponse(This,connection)
#define INapEnforcementClientBinding_NotifyConnectionStateDown(This,downCxn) (This)->lpVtbl->NotifyConnectionStateDown(This,downCxn)
#define INapEnforcementClientBinding_NotifySoHChangeFailure(This) (This)->lpVtbl->NotifySoHChangeFailure(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT INapEnforcementClientBinding_QueryInterface(INapEnforcementClientBinding* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG INapEnforcementClientBinding_AddRef(INapEnforcementClientBinding* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG INapEnforcementClientBinding_Release(INapEnforcementClientBinding* This) {
    return This->lpVtbl->Release(This);
}
/*** INapEnforcementClientBinding methods ***/
static FORCEINLINE HRESULT INapEnforcementClientBinding_Initialize(INapEnforcementClientBinding* This,EnforcementEntityId id,INapEnforcementClientCallback *callback) {
    return This->lpVtbl->Initialize(This,id,callback);
}
static FORCEINLINE HRESULT INapEnforcementClientBinding_Uninitialize(INapEnforcementClientBinding* This) {
    return This->lpVtbl->Uninitialize(This);
}
static FORCEINLINE HRESULT INapEnforcementClientBinding_CreateConnection(INapEnforcementClientBinding* This,INapEnforcementClientConnection **connection) {
    return This->lpVtbl->CreateConnection(This,connection);
}
static FORCEINLINE HRESULT INapEnforcementClientBinding_GetSoHRequest(INapEnforcementClientBinding* This,INapEnforcementClientConnection *connection,WINBOOL *retriggerHint) {
    return This->lpVtbl->GetSoHRequest(This,connection,retriggerHint);
}
static FORCEINLINE HRESULT INapEnforcementClientBinding_ProcessSoHResponse(INapEnforcementClientBinding* This,INapEnforcementClientConnection *connection) {
    return This->lpVtbl->ProcessSoHResponse(This,connection);
}
static FORCEINLINE HRESULT INapEnforcementClientBinding_NotifyConnectionStateDown(INapEnforcementClientBinding* This,INapEnforcementClientConnection *downCxn) {
    return This->lpVtbl->NotifyConnectionStateDown(This,downCxn);
}
static FORCEINLINE HRESULT INapEnforcementClientBinding_NotifySoHChangeFailure(INapEnforcementClientBinding* This) {
    return This->lpVtbl->NotifySoHChangeFailure(This);
}
#endif
#endif

#endif


#endif  /* __INapEnforcementClientBinding_INTERFACE_DEFINED__ */

/*****************************************************************************
 * INapEnforcementClientCallback interface
 */
#ifndef __INapEnforcementClientCallback_INTERFACE_DEFINED__
#define __INapEnforcementClientCallback_INTERFACE_DEFINED__

typedef struct tagConnections {
    UINT16 count;
    INapEnforcementClientConnection **connections;
} Connections;
DEFINE_GUID(IID_INapEnforcementClientCallback, 0xf5a0b90a, 0x83a1, 0x4f76, 0xba,0x3f, 0x02,0x54,0x18,0x68,0x28,0x14);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("f5a0b90a-83a1-4f76-ba3f-025418682814")
INapEnforcementClientCallback : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE NotifySoHChange(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetConnections(
        Connections **connections) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(INapEnforcementClientCallback, 0xf5a0b90a, 0x83a1, 0x4f76, 0xba,0x3f, 0x02,0x54,0x18,0x68,0x28,0x14)
#endif
#else
typedef struct INapEnforcementClientCallbackVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** INapEnforcementClientCallback methods ***/
    HRESULT (STDMETHODCALLTYPE *NotifySoHChange)(
        INapEnforcementClientCallback *This);

    HRESULT (STDMETHODCALLTYPE *GetConnections)(
        INapEnforcementClientCallback *This,
        Connections **connections);

    END_INTERFACE
} INapEnforcementClientCallbackVtbl;

interface INapEnforcementClientCallback {
    CONST_VTBL INapEnforcementClientCallbackVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define INapEnforcementClientCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define INapEnforcementClientCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
#define INapEnforcementClientCallback_Release(This) (This)->lpVtbl->Release(This)
/*** INapEnforcementClientCallback methods ***/
#define INapEnforcementClientCallback_NotifySoHChange(This) (This)->lpVtbl->NotifySoHChange(This)
#define INapEnforcementClientCallback_GetConnections(This,connections) (This)->lpVtbl->GetConnections(This,connections)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT INapEnforcementClientCallback_QueryInterface(INapEnforcementClientCallback* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG INapEnforcementClientCallback_AddRef(INapEnforcementClientCallback* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG INapEnforcementClientCallback_Release(INapEnforcementClientCallback* This) {
    return This->lpVtbl->Release(This);
}
/*** INapEnforcementClientCallback methods ***/
static FORCEINLINE HRESULT INapEnforcementClientCallback_NotifySoHChange(INapEnforcementClientCallback* This) {
    return This->lpVtbl->NotifySoHChange(This);
}
static FORCEINLINE HRESULT INapEnforcementClientCallback_GetConnections(INapEnforcementClientCallback* This,Connections **connections) {
    return This->lpVtbl->GetConnections(This,connections);
}
#endif
#endif

#endif


#endif  /* __INapEnforcementClientCallback_INTERFACE_DEFINED__ */

/*****************************************************************************
 * INapEnforcementClientConnection interface
 */
#ifndef __INapEnforcementClientConnection_INTERFACE_DEFINED__
#define __INapEnforcementClientConnection_INTERFACE_DEFINED__

#define defaultProtocolMaxSize (4000)

#define minProtocolMaxSize (300)

#define maxProtocolMaxSize (0xffff)

typedef UINT32 ProtocolMaxSize;
DEFINE_GUID(IID_INapEnforcementClientConnection, 0xfb3a3505, 0xddb1, 0x468a, 0xb3,0x07, 0xf3,0x28,0xa5,0x74,0x19,0xd8);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("fb3a3505-ddb1-468a-b307-f328a57419d8")
INapEnforcementClientConnection : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Initialize(
        EnforcementEntityId id) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetMaxSize(
        ProtocolMaxSize maxSize) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMaxSize(
        ProtocolMaxSize *maxSize) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetFlags(
        UINT8 flags) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFlags(
        UINT8 *flags) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetConnectionId(
        const ConnectionId *connectionId) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetConnectionId(
        ConnectionId **connectionId) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCorrelationId(
        CorrelationId *correlationId) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetStringCorrelationId(
        StringCorrelationId **correlationId) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCorrelationId(
        CorrelationId correlationId) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetSoHRequest(
        const NetworkSoHRequest *sohRequest) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSoHRequest(
        NetworkSoHRequest **sohRequest) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetSoHResponse(
        const NetworkSoHResponse *sohResponse) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSoHResponse(
        NetworkSoHResponse **sohResponse) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetIsolationInfo(
        const IsolationInfo *isolationInfo) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetIsolationInfo(
        IsolationInfo **isolationInfo) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetPrivateData(
        const PrivateData *privateData) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPrivateData(
        PrivateData **privateData) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetEnforcerPrivateData(
        const PrivateData *privateData) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetEnforcerPrivateData(
        PrivateData **privateData) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(INapEnforcementClientConnection, 0xfb3a3505, 0xddb1, 0x468a, 0xb3,0x07, 0xf3,0x28,0xa5,0x74,0x19,0xd8)
#endif
#else
typedef struct INapEnforcementClientConnectionVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** INapEnforcementClientConnection methods ***/
    HRESULT (STDMETHODCALLTYPE *Initialize)(
        INapEnforcementClientConnection *This,
        EnforcementEntityId id);

    HRESULT (STDMETHODCALLTYPE *SetMaxSize)(
        INapEnforcementClientConnection *This,
        ProtocolMaxSize maxSize);

    HRESULT (STDMETHODCALLTYPE *GetMaxSize)(
        INapEnforcementClientConnection *This,
        ProtocolMaxSize *maxSize);

    HRESULT (STDMETHODCALLTYPE *SetFlags)(
        INapEnforcementClientConnection *This,
        UINT8 flags);

    HRESULT (STDMETHODCALLTYPE *GetFlags)(
        INapEnforcementClientConnection *This,
        UINT8 *flags);

    HRESULT (STDMETHODCALLTYPE *SetConnectionId)(
        INapEnforcementClientConnection *This,
        const ConnectionId *connectionId);

    HRESULT (STDMETHODCALLTYPE *GetConnectionId)(
        INapEnforcementClientConnection *This,
        ConnectionId **connectionId);

    HRESULT (STDMETHODCALLTYPE *GetCorrelationId)(
        INapEnforcementClientConnection *This,
        CorrelationId *correlationId);

    HRESULT (STDMETHODCALLTYPE *GetStringCorrelationId)(
        INapEnforcementClientConnection *This,
        StringCorrelationId **correlationId);

    HRESULT (STDMETHODCALLTYPE *SetCorrelationId)(
        INapEnforcementClientConnection *This,
        CorrelationId correlationId);

    HRESULT (STDMETHODCALLTYPE *SetSoHRequest)(
        INapEnforcementClientConnection *This,
        const NetworkSoHRequest *sohRequest);

    HRESULT (STDMETHODCALLTYPE *GetSoHRequest)(
        INapEnforcementClientConnection *This,
        NetworkSoHRequest **sohRequest);

    HRESULT (STDMETHODCALLTYPE *SetSoHResponse)(
        INapEnforcementClientConnection *This,
        const NetworkSoHResponse *sohResponse);

    HRESULT (STDMETHODCALLTYPE *GetSoHResponse)(
        INapEnforcementClientConnection *This,
        NetworkSoHResponse **sohResponse);

    HRESULT (STDMETHODCALLTYPE *SetIsolationInfo)(
        INapEnforcementClientConnection *This,
        const IsolationInfo *isolationInfo);

    HRESULT (STDMETHODCALLTYPE *GetIsolationInfo)(
        INapEnforcementClientConnection *This,
        IsolationInfo **isolationInfo);

    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
        INapEnforcementClientConnection *This,
        const PrivateData *privateData);

    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
        INapEnforcementClientConnection *This,
        PrivateData **privateData);

    HRESULT (STDMETHODCALLTYPE *SetEnforcerPrivateData)(
        INapEnforcementClientConnection *This,
        const PrivateData *privateData);

    HRESULT (STDMETHODCALLTYPE *GetEnforcerPrivateData)(
        INapEnforcementClientConnection *This,
        PrivateData **privateData);

    END_INTERFACE
} INapEnforcementClientConnectionVtbl;

interface INapEnforcementClientConnection {
    CONST_VTBL INapEnforcementClientConnectionVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define INapEnforcementClientConnection_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define INapEnforcementClientConnection_AddRef(This) (This)->lpVtbl->AddRef(This)
#define INapEnforcementClientConnection_Release(This) (This)->lpVtbl->Release(This)
/*** INapEnforcementClientConnection methods ***/
#define INapEnforcementClientConnection_Initialize(This,id) (This)->lpVtbl->Initialize(This,id)
#define INapEnforcementClientConnection_SetMaxSize(This,maxSize) (This)->lpVtbl->SetMaxSize(This,maxSize)
#define INapEnforcementClientConnection_GetMaxSize(This,maxSize) (This)->lpVtbl->GetMaxSize(This,maxSize)
#define INapEnforcementClientConnection_SetFlags(This,flags) (This)->lpVtbl->SetFlags(This,flags)
#define INapEnforcementClientConnection_GetFlags(This,flags) (This)->lpVtbl->GetFlags(This,flags)
#define INapEnforcementClientConnection_SetConnectionId(This,connectionId) (This)->lpVtbl->SetConnectionId(This,connectionId)
#define INapEnforcementClientConnection_GetConnectionId(This,connectionId) (This)->lpVtbl->GetConnectionId(This,connectionId)
#define INapEnforcementClientConnection_GetCorrelationId(This,correlationId) (This)->lpVtbl->GetCorrelationId(This,correlationId)
#define INapEnforcementClientConnection_GetStringCorrelationId(This,correlationId) (This)->lpVtbl->GetStringCorrelationId(This,correlationId)
#define INapEnforcementClientConnection_SetCorrelationId(This,correlationId) (This)->lpVtbl->SetCorrelationId(This,correlationId)
#define INapEnforcementClientConnection_SetSoHRequest(This,sohRequest) (This)->lpVtbl->SetSoHRequest(This,sohRequest)
#define INapEnforcementClientConnection_GetSoHRequest(This,sohRequest) (This)->lpVtbl->GetSoHRequest(This,sohRequest)
#define INapEnforcementClientConnection_SetSoHResponse(This,sohResponse) (This)->lpVtbl->SetSoHResponse(This,sohResponse)
#define INapEnforcementClientConnection_GetSoHResponse(This,sohResponse) (This)->lpVtbl->GetSoHResponse(This,sohResponse)
#define INapEnforcementClientConnection_SetIsolationInfo(This,isolationInfo) (This)->lpVtbl->SetIsolationInfo(This,isolationInfo)
#define INapEnforcementClientConnection_GetIsolationInfo(This,isolationInfo) (This)->lpVtbl->GetIsolationInfo(This,isolationInfo)
#define INapEnforcementClientConnection_SetPrivateData(This,privateData) (This)->lpVtbl->SetPrivateData(This,privateData)
#define INapEnforcementClientConnection_GetPrivateData(This,privateData) (This)->lpVtbl->GetPrivateData(This,privateData)
#define INapEnforcementClientConnection_SetEnforcerPrivateData(This,privateData) (This)->lpVtbl->SetEnforcerPrivateData(This,privateData)
#define INapEnforcementClientConnection_GetEnforcerPrivateData(This,privateData) (This)->lpVtbl->GetEnforcerPrivateData(This,privateData)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT INapEnforcementClientConnection_QueryInterface(INapEnforcementClientConnection* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG INapEnforcementClientConnection_AddRef(INapEnforcementClientConnection* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG INapEnforcementClientConnection_Release(INapEnforcementClientConnection* This) {
    return This->lpVtbl->Release(This);
}
/*** INapEnforcementClientConnection methods ***/
static FORCEINLINE HRESULT INapEnforcementClientConnection_Initialize(INapEnforcementClientConnection* This,EnforcementEntityId id) {
    return This->lpVtbl->Initialize(This,id);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection_SetMaxSize(INapEnforcementClientConnection* This,ProtocolMaxSize maxSize) {
    return This->lpVtbl->SetMaxSize(This,maxSize);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection_GetMaxSize(INapEnforcementClientConnection* This,ProtocolMaxSize *maxSize) {
    return This->lpVtbl->GetMaxSize(This,maxSize);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection_SetFlags(INapEnforcementClientConnection* This,UINT8 flags) {
    return This->lpVtbl->SetFlags(This,flags);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection_GetFlags(INapEnforcementClientConnection* This,UINT8 *flags) {
    return This->lpVtbl->GetFlags(This,flags);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection_SetConnectionId(INapEnforcementClientConnection* This,const ConnectionId *connectionId) {
    return This->lpVtbl->SetConnectionId(This,connectionId);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection_GetConnectionId(INapEnforcementClientConnection* This,ConnectionId **connectionId) {
    return This->lpVtbl->GetConnectionId(This,connectionId);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection_GetCorrelationId(INapEnforcementClientConnection* This,CorrelationId *correlationId) {
    return This->lpVtbl->GetCorrelationId(This,correlationId);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection_GetStringCorrelationId(INapEnforcementClientConnection* This,StringCorrelationId **correlationId) {
    return This->lpVtbl->GetStringCorrelationId(This,correlationId);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection_SetCorrelationId(INapEnforcementClientConnection* This,CorrelationId correlationId) {
    return This->lpVtbl->SetCorrelationId(This,correlationId);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection_SetSoHRequest(INapEnforcementClientConnection* This,const NetworkSoHRequest *sohRequest) {
    return This->lpVtbl->SetSoHRequest(This,sohRequest);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection_GetSoHRequest(INapEnforcementClientConnection* This,NetworkSoHRequest **sohRequest) {
    return This->lpVtbl->GetSoHRequest(This,sohRequest);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection_SetSoHResponse(INapEnforcementClientConnection* This,const NetworkSoHResponse *sohResponse) {
    return This->lpVtbl->SetSoHResponse(This,sohResponse);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection_GetSoHResponse(INapEnforcementClientConnection* This,NetworkSoHResponse **sohResponse) {
    return This->lpVtbl->GetSoHResponse(This,sohResponse);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection_SetIsolationInfo(INapEnforcementClientConnection* This,const IsolationInfo *isolationInfo) {
    return This->lpVtbl->SetIsolationInfo(This,isolationInfo);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection_GetIsolationInfo(INapEnforcementClientConnection* This,IsolationInfo **isolationInfo) {
    return This->lpVtbl->GetIsolationInfo(This,isolationInfo);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection_SetPrivateData(INapEnforcementClientConnection* This,const PrivateData *privateData) {
    return This->lpVtbl->SetPrivateData(This,privateData);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection_GetPrivateData(INapEnforcementClientConnection* This,PrivateData **privateData) {
    return This->lpVtbl->GetPrivateData(This,privateData);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection_SetEnforcerPrivateData(INapEnforcementClientConnection* This,const PrivateData *privateData) {
    return This->lpVtbl->SetEnforcerPrivateData(This,privateData);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection_GetEnforcerPrivateData(INapEnforcementClientConnection* This,PrivateData **privateData) {
    return This->lpVtbl->GetEnforcerPrivateData(This,privateData);
}
#endif
#endif

#endif


#endif  /* __INapEnforcementClientConnection_INTERFACE_DEFINED__ */

/*****************************************************************************
 * INapEnforcementClientConnection2 interface
 */
#ifndef __INapEnforcementClientConnection2_INTERFACE_DEFINED__
#define __INapEnforcementClientConnection2_INTERFACE_DEFINED__

DEFINE_GUID(IID_INapEnforcementClientConnection2, 0xbd244906, 0x70dd, 0x4690, 0xbe,0xea, 0x64,0x86,0x53,0x39,0x35,0x00);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("bd244906-70dd-4690-beea-648653393500")
INapEnforcementClientConnection2 : public INapEnforcementClientConnection
{
    virtual HRESULT STDMETHODCALLTYPE SetIsolationInfoEx(
        const IsolationInfoEx *isolationInfo) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetIsolationInfoEx(
        IsolationInfoEx **isolationInfo) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetInstalledShvs(
        SystemHealthEntityCount *count,
        SystemHealthEntityId **ids) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetInstalledShvs(
        SystemHealthEntityCount count,
        SystemHealthEntityId *ids) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(INapEnforcementClientConnection2, 0xbd244906, 0x70dd, 0x4690, 0xbe,0xea, 0x64,0x86,0x53,0x39,0x35,0x00)
#endif
#else
typedef struct INapEnforcementClientConnection2Vtbl {
    BEGIN_INTERFACE

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

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

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

    /*** INapEnforcementClientConnection methods ***/
    HRESULT (STDMETHODCALLTYPE *Initialize)(
        INapEnforcementClientConnection2 *This,
        EnforcementEntityId id);

    HRESULT (STDMETHODCALLTYPE *SetMaxSize)(
        INapEnforcementClientConnection2 *This,
        ProtocolMaxSize maxSize);

    HRESULT (STDMETHODCALLTYPE *GetMaxSize)(
        INapEnforcementClientConnection2 *This,
        ProtocolMaxSize *maxSize);

    HRESULT (STDMETHODCALLTYPE *SetFlags)(
        INapEnforcementClientConnection2 *This,
        UINT8 flags);

    HRESULT (STDMETHODCALLTYPE *GetFlags)(
        INapEnforcementClientConnection2 *This,
        UINT8 *flags);

    HRESULT (STDMETHODCALLTYPE *SetConnectionId)(
        INapEnforcementClientConnection2 *This,
        const ConnectionId *connectionId);

    HRESULT (STDMETHODCALLTYPE *GetConnectionId)(
        INapEnforcementClientConnection2 *This,
        ConnectionId **connectionId);

    HRESULT (STDMETHODCALLTYPE *GetCorrelationId)(
        INapEnforcementClientConnection2 *This,
        CorrelationId *correlationId);

    HRESULT (STDMETHODCALLTYPE *GetStringCorrelationId)(
        INapEnforcementClientConnection2 *This,
        StringCorrelationId **correlationId);

    HRESULT (STDMETHODCALLTYPE *SetCorrelationId)(
        INapEnforcementClientConnection2 *This,
        CorrelationId correlationId);

    HRESULT (STDMETHODCALLTYPE *SetSoHRequest)(
        INapEnforcementClientConnection2 *This,
        const NetworkSoHRequest *sohRequest);

    HRESULT (STDMETHODCALLTYPE *GetSoHRequest)(
        INapEnforcementClientConnection2 *This,
        NetworkSoHRequest **sohRequest);

    HRESULT (STDMETHODCALLTYPE *SetSoHResponse)(
        INapEnforcementClientConnection2 *This,
        const NetworkSoHResponse *sohResponse);

    HRESULT (STDMETHODCALLTYPE *GetSoHResponse)(
        INapEnforcementClientConnection2 *This,
        NetworkSoHResponse **sohResponse);

    HRESULT (STDMETHODCALLTYPE *SetIsolationInfo)(
        INapEnforcementClientConnection2 *This,
        const IsolationInfo *isolationInfo);

    HRESULT (STDMETHODCALLTYPE *GetIsolationInfo)(
        INapEnforcementClientConnection2 *This,
        IsolationInfo **isolationInfo);

    HRESULT (STDMETHODCALLTYPE *SetPrivateData)(
        INapEnforcementClientConnection2 *This,
        const PrivateData *privateData);

    HRESULT (STDMETHODCALLTYPE *GetPrivateData)(
        INapEnforcementClientConnection2 *This,
        PrivateData **privateData);

    HRESULT (STDMETHODCALLTYPE *SetEnforcerPrivateData)(
        INapEnforcementClientConnection2 *This,
        const PrivateData *privateData);

    HRESULT (STDMETHODCALLTYPE *GetEnforcerPrivateData)(
        INapEnforcementClientConnection2 *This,
        PrivateData **privateData);

    /*** INapEnforcementClientConnection2 methods ***/
    HRESULT (STDMETHODCALLTYPE *SetIsolationInfoEx)(
        INapEnforcementClientConnection2 *This,
        const IsolationInfoEx *isolationInfo);

    HRESULT (STDMETHODCALLTYPE *GetIsolationInfoEx)(
        INapEnforcementClientConnection2 *This,
        IsolationInfoEx **isolationInfo);

    HRESULT (STDMETHODCALLTYPE *GetInstalledShvs)(
        INapEnforcementClientConnection2 *This,
        SystemHealthEntityCount *count,
        SystemHealthEntityId **ids);

    HRESULT (STDMETHODCALLTYPE *SetInstalledShvs)(
        INapEnforcementClientConnection2 *This,
        SystemHealthEntityCount count,
        SystemHealthEntityId *ids);

    END_INTERFACE
} INapEnforcementClientConnection2Vtbl;

interface INapEnforcementClientConnection2 {
    CONST_VTBL INapEnforcementClientConnection2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define INapEnforcementClientConnection2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define INapEnforcementClientConnection2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define INapEnforcementClientConnection2_Release(This) (This)->lpVtbl->Release(This)
/*** INapEnforcementClientConnection methods ***/
#define INapEnforcementClientConnection2_Initialize(This,id) (This)->lpVtbl->Initialize(This,id)
#define INapEnforcementClientConnection2_SetMaxSize(This,maxSize) (This)->lpVtbl->SetMaxSize(This,maxSize)
#define INapEnforcementClientConnection2_GetMaxSize(This,maxSize) (This)->lpVtbl->GetMaxSize(This,maxSize)
#define INapEnforcementClientConnection2_SetFlags(This,flags) (This)->lpVtbl->SetFlags(This,flags)
#define INapEnforcementClientConnection2_GetFlags(This,flags) (This)->lpVtbl->GetFlags(This,flags)
#define INapEnforcementClientConnection2_SetConnectionId(This,connectionId) (This)->lpVtbl->SetConnectionId(This,connectionId)
#define INapEnforcementClientConnection2_GetConnectionId(This,connectionId) (This)->lpVtbl->GetConnectionId(This,connectionId)
#define INapEnforcementClientConnection2_GetCorrelationId(This,correlationId) (This)->lpVtbl->GetCorrelationId(This,correlationId)
#define INapEnforcementClientConnection2_GetStringCorrelationId(This,correlationId) (This)->lpVtbl->GetStringCorrelationId(This,correlationId)
#define INapEnforcementClientConnection2_SetCorrelationId(This,correlationId) (This)->lpVtbl->SetCorrelationId(This,correlationId)
#define INapEnforcementClientConnection2_SetSoHRequest(This,sohRequest) (This)->lpVtbl->SetSoHRequest(This,sohRequest)
#define INapEnforcementClientConnection2_GetSoHRequest(This,sohRequest) (This)->lpVtbl->GetSoHRequest(This,sohRequest)
#define INapEnforcementClientConnection2_SetSoHResponse(This,sohResponse) (This)->lpVtbl->SetSoHResponse(This,sohResponse)
#define INapEnforcementClientConnection2_GetSoHResponse(This,sohResponse) (This)->lpVtbl->GetSoHResponse(This,sohResponse)
#define INapEnforcementClientConnection2_SetIsolationInfo(This,isolationInfo) (This)->lpVtbl->SetIsolationInfo(This,isolationInfo)
#define INapEnforcementClientConnection2_GetIsolationInfo(This,isolationInfo) (This)->lpVtbl->GetIsolationInfo(This,isolationInfo)
#define INapEnforcementClientConnection2_SetPrivateData(This,privateData) (This)->lpVtbl->SetPrivateData(This,privateData)
#define INapEnforcementClientConnection2_GetPrivateData(This,privateData) (This)->lpVtbl->GetPrivateData(This,privateData)
#define INapEnforcementClientConnection2_SetEnforcerPrivateData(This,privateData) (This)->lpVtbl->SetEnforcerPrivateData(This,privateData)
#define INapEnforcementClientConnection2_GetEnforcerPrivateData(This,privateData) (This)->lpVtbl->GetEnforcerPrivateData(This,privateData)
/*** INapEnforcementClientConnection2 methods ***/
#define INapEnforcementClientConnection2_SetIsolationInfoEx(This,isolationInfo) (This)->lpVtbl->SetIsolationInfoEx(This,isolationInfo)
#define INapEnforcementClientConnection2_GetIsolationInfoEx(This,isolationInfo) (This)->lpVtbl->GetIsolationInfoEx(This,isolationInfo)
#define INapEnforcementClientConnection2_GetInstalledShvs(This,count,ids) (This)->lpVtbl->GetInstalledShvs(This,count,ids)
#define INapEnforcementClientConnection2_SetInstalledShvs(This,count,ids) (This)->lpVtbl->SetInstalledShvs(This,count,ids)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT INapEnforcementClientConnection2_QueryInterface(INapEnforcementClientConnection2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG INapEnforcementClientConnection2_AddRef(INapEnforcementClientConnection2* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG INapEnforcementClientConnection2_Release(INapEnforcementClientConnection2* This) {
    return This->lpVtbl->Release(This);
}
/*** INapEnforcementClientConnection methods ***/
static FORCEINLINE HRESULT INapEnforcementClientConnection2_Initialize(INapEnforcementClientConnection2* This,EnforcementEntityId id) {
    return This->lpVtbl->Initialize(This,id);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection2_SetMaxSize(INapEnforcementClientConnection2* This,ProtocolMaxSize maxSize) {
    return This->lpVtbl->SetMaxSize(This,maxSize);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection2_GetMaxSize(INapEnforcementClientConnection2* This,ProtocolMaxSize *maxSize) {
    return This->lpVtbl->GetMaxSize(This,maxSize);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection2_SetFlags(INapEnforcementClientConnection2* This,UINT8 flags) {
    return This->lpVtbl->SetFlags(This,flags);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection2_GetFlags(INapEnforcementClientConnection2* This,UINT8 *flags) {
    return This->lpVtbl->GetFlags(This,flags);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection2_SetConnectionId(INapEnforcementClientConnection2* This,const ConnectionId *connectionId) {
    return This->lpVtbl->SetConnectionId(This,connectionId);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection2_GetConnectionId(INapEnforcementClientConnection2* This,ConnectionId **connectionId) {
    return This->lpVtbl->GetConnectionId(This,connectionId);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection2_GetCorrelationId(INapEnforcementClientConnection2* This,CorrelationId *correlationId) {
    return This->lpVtbl->GetCorrelationId(This,correlationId);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection2_GetStringCorrelationId(INapEnforcementClientConnection2* This,StringCorrelationId **correlationId) {
    return This->lpVtbl->GetStringCorrelationId(This,correlationId);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection2_SetCorrelationId(INapEnforcementClientConnection2* This,CorrelationId correlationId) {
    return This->lpVtbl->SetCorrelationId(This,correlationId);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection2_SetSoHRequest(INapEnforcementClientConnection2* This,const NetworkSoHRequest *sohRequest) {
    return This->lpVtbl->SetSoHRequest(This,sohRequest);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection2_GetSoHRequest(INapEnforcementClientConnection2* This,NetworkSoHRequest **sohRequest) {
    return This->lpVtbl->GetSoHRequest(This,sohRequest);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection2_SetSoHResponse(INapEnforcementClientConnection2* This,const NetworkSoHResponse *sohResponse) {
    return This->lpVtbl->SetSoHResponse(This,sohResponse);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection2_GetSoHResponse(INapEnforcementClientConnection2* This,NetworkSoHResponse **sohResponse) {
    return This->lpVtbl->GetSoHResponse(This,sohResponse);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection2_SetIsolationInfo(INapEnforcementClientConnection2* This,const IsolationInfo *isolationInfo) {
    return This->lpVtbl->SetIsolationInfo(This,isolationInfo);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection2_GetIsolationInfo(INapEnforcementClientConnection2* This,IsolationInfo **isolationInfo) {
    return This->lpVtbl->GetIsolationInfo(This,isolationInfo);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection2_SetPrivateData(INapEnforcementClientConnection2* This,const PrivateData *privateData) {
    return This->lpVtbl->SetPrivateData(This,privateData);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection2_GetPrivateData(INapEnforcementClientConnection2* This,PrivateData **privateData) {
    return This->lpVtbl->GetPrivateData(This,privateData);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection2_SetEnforcerPrivateData(INapEnforcementClientConnection2* This,const PrivateData *privateData) {
    return This->lpVtbl->SetEnforcerPrivateData(This,privateData);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection2_GetEnforcerPrivateData(INapEnforcementClientConnection2* This,PrivateData **privateData) {
    return This->lpVtbl->GetEnforcerPrivateData(This,privateData);
}
/*** INapEnforcementClientConnection2 methods ***/
static FORCEINLINE HRESULT INapEnforcementClientConnection2_SetIsolationInfoEx(INapEnforcementClientConnection2* This,const IsolationInfoEx *isolationInfo) {
    return This->lpVtbl->SetIsolationInfoEx(This,isolationInfo);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection2_GetIsolationInfoEx(INapEnforcementClientConnection2* This,IsolationInfoEx **isolationInfo) {
    return This->lpVtbl->GetIsolationInfoEx(This,isolationInfo);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection2_GetInstalledShvs(INapEnforcementClientConnection2* This,SystemHealthEntityCount *count,SystemHealthEntityId **ids) {
    return This->lpVtbl->GetInstalledShvs(This,count,ids);
}
static FORCEINLINE HRESULT INapEnforcementClientConnection2_SetInstalledShvs(INapEnforcementClientConnection2* This,SystemHealthEntityCount count,SystemHealthEntityId *ids) {
    return This->lpVtbl->SetInstalledShvs(This,count,ids);
}
#endif
#endif

#endif


#endif  /* __INapEnforcementClientConnection2_INTERFACE_DEFINED__ */

EXTERN_C const CLSID CLSID_NapEnforcementClientBinding;
#endif
/* Begin additional prototypes for all interfaces */


/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __napenforcementclient_h__ */
