|  | /** | 
|  | * 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") |