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