blob: 532bf4d24815aef0a001f626199e96f4a4de62f2 [file] [log] [blame]
/**
* This file is part of the mingw-w64 runtime package.
* No warranty is given; refer to the file DISCLAIMER within this package.
*/
import "naptypes.idl";
import "unknwn.idl";
cpp_quote("#include <winapifamily.h>")
cpp_quote("")
cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
[pointer_default (unique)]
interface INapSoHTypes {
typedef enum tagSoHAttributeType {
sohAttributeTypeSystemHealthId = 2,
sohAttributeTypeIpv4FixupServers = 3,
sohAttributeTypeComplianceResultCodes = 4,
sohAttributeTypeTimeOfLastUpdate = 5,
sohAttributeTypeClientId = 6,
sohAttributeTypeVendorSpecific = 7,
sohAttributeTypeHealthClass = 8,
sohAttributeTypeSoftwareVersion = 9,
sohAttributeTypeProductName = 10,
sohAttributeTypeHealthClassStatus = 11,
sohAttributeTypeSoHGenerationTime = 12,
sohAttributeTypeErrorCodes = 13,
sohAttributeTypeFailureCategory = 14,
sohAttributeTypeIpv6FixupServers = 15,
sohAttributeTypeExtendedIsolationState = 16
} SoHAttributeType;
typedef enum tagHealthClassValue {
healthClassFirewall = 0,
healthClassPatchLevel = 1,
healthClassAntiVirus = 2,
healthClassCriticalUpdate = 3,
healthClassReserved = 128
} HealthClassValue;
typedef [switch_type (SoHAttributeType)] union tagSoHAttributeValue {
[case (sohAttributeTypeSystemHealthId)] SystemHealthEntityId idVal;
[case (sohAttributeTypeIpv4FixupServers)] struct tagIpv4Addresses {
[range (1, maxIpv4CountPerSoHAttribute)] UINT16 count;
[size_is (count)] Ipv4Address *addresses;
} v4AddressesVal;
[case (sohAttributeTypeIpv6FixupServers)] struct tagIpv6Addresses {
[range (1, maxIpv6CountPerSoHAttribute)] UINT16 count;
[size_is (count)] Ipv6Address *addresses;
} v6AddressesVal;
[case (sohAttributeTypeComplianceResultCodes, sohAttributeTypeErrorCodes)] ResultCodes codesVal;
[case (sohAttributeTypeTimeOfLastUpdate, sohAttributeTypeSoHGenerationTime)] FILETIME dateTimeVal;
[case (sohAttributeTypeVendorSpecific)] struct tagVendorSpecific {
UINT32 vendorId;
[range (0, maxSoHAttributeSize - 4)] UINT16 size;
[size_is (size)] BYTE *vendorSpecificData;
} vendorSpecificVal;
[case (sohAttributeTypeHealthClass, sohAttributeTypeFailureCategory, sohAttributeTypeExtendedIsolationState)] UINT8 uint8Val;
[default] struct tagOctetString {
[range (0, maxSoHAttributeSize)] UINT16 size;
[size_is (size)] BYTE *data;
} octetStringVal;
} SoHAttributeValue;
};
[object, uuid (35298344-96a6-45e7-9b6b-62ecc6e09920), pointer_default (unique)]
interface INapSoHConstructor : IUnknown {
HRESULT Initialize ([in] SystemHealthEntityId id,[in] BOOL isRequest);
HRESULT AppendAttribute ([in] SoHAttributeType type,[in, switch_is (type)] const SoHAttributeValue *value);
HRESULT GetSoH ([out] SoH **soh);
HRESULT Validate ([in] const SoH *soh,[in] BOOL isRequest);
};
[object, uuid (FB2FA8B0-2cd5-457d-ABA8-4376f63ea1c0), pointer_default (unique)]
interface INapSoHProcessor : IUnknown {
HRESULT Initialize ([in] const SoH *soh,[in] BOOL isRequest,[out] SystemHealthEntityId *id);
HRESULT FindNextAttribute ([in] UINT16 fromLocation,[in] SoHAttributeType type,[out] UINT16 *attributeLocation);
HRESULT GetAttribute ([in] UINT16 attributeLocation,[out] SoHAttributeType *type,[out, switch_is (*type)] SoHAttributeValue **value);
HRESULT GetNumberOfAttributes ([out] UINT16 *attributeCount);
};
cpp_quote("EXTERN_C const CLSID CLSID_NapSoHConstructor;")
cpp_quote("EXTERN_C const CLSID CLSID_NapSoHProcessor;")
cpp_quote("#endif")