master
  1/**
  2 * This file has no copyright assigned and is placed in the Public Domain.
  3 * This file is part of the mingw-w64 runtime package.
  4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
  5 */
  6
  7#ifndef HCN_CLIENT_H
  8#define HCN_CLIENT_H
  9
 10#include <apiset.h>
 11#include <apisetcconv.h>
 12#include <minwindef.h>
 13
 14#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
 15
 16#ifdef __cplusplus
 17extern "C" {
 18#endif
 19
 20typedef enum HCN_NOTIFICATIONS {
 21  HcnNotificationInvalid = 0x00000000,
 22  HcnNotificationNetworkPreCreate = 0x00000001,
 23  HcnNotificationNetworkCreate = 0x00000002,
 24  HcnNotificationNetworkPreDelete = 0x00000003,
 25  HcnNotificationNetworkDelete = 0x00000004,
 26  HcnNotificationNamespaceCreate = 0x00000005,
 27  HcnNotificationNamespaceDelete = 0x00000006,
 28  HcnNotificationGuestNetworkServiceCreate = 0x00000007,
 29  HcnNotificationGuestNetworkServiceDelete = 0x00000008,
 30  HcnNotificationNetworkEndpointAttached = 0x00000009,
 31  HcnNotificationNetworkEndpointDetached = 0x00000010,
 32  HcnNotificationGuestNetworkServiceStateChanged = 0x00000011,
 33  HcnNotificationGuestNetworkServiceInterfaceStateChanged = 0x00000012,
 34  HcnNotificationServiceDisconnect = 0x01000000,
 35  HcnNotificationFlagsReserved = 0xF0000000
 36} HCN_NOTIFICATIONS;
 37
 38typedef void* HCN_CALLBACK;
 39
 40typedef void (CALLBACK *HCN_NOTIFICATION_CALLBACK)(DWORD NotificationType, void *Context, HRESULT NotificationStatus, PCWSTR NotificationData);
 41
 42typedef void* HCN_NETWORK;
 43typedef HCN_NETWORK* PHCN_NETWORK;
 44
 45HRESULT WINAPI HcnEnumerateNetworks (PCWSTR Query, PWSTR *Networks, PWSTR *ErrorRecord);
 46HRESULT WINAPI HcnCreateNetwork (REFGUID Id, PCWSTR Settings, PHCN_NETWORK Network, PWSTR *ErrorRecord);
 47HRESULT WINAPI HcnOpenNetwork (REFGUID Id, PHCN_NETWORK Network, PWSTR *ErrorRecord);
 48HRESULT WINAPI HcnModifyNetwork (HCN_NETWORK Network, PCWSTR Settings, PWSTR *ErrorRecord);
 49HRESULT WINAPI HcnQueryNetworkProperties (HCN_NETWORK Network, PCWSTR Query, PWSTR *Properties, PWSTR *ErrorRecord);
 50HRESULT WINAPI HcnDeleteNetwork (REFGUID Id, PWSTR *ErrorRecord);
 51HRESULT WINAPI HcnCloseNetwork (HCN_NETWORK Network);
 52
 53typedef void* HCN_NAMESPACE;
 54typedef HCN_NAMESPACE* PHCN_NAMESPACE;
 55
 56HRESULT WINAPI HcnEnumerateNamespaces (PCWSTR Query, PWSTR *Namespaces, PWSTR *ErrorRecord);
 57HRESULT WINAPI HcnCreateNamespace (REFGUID Id, PCWSTR Settings, PHCN_NAMESPACE Namespace, PWSTR *ErrorRecord);
 58HRESULT WINAPI HcnOpenNamespace (REFGUID Id, PHCN_NAMESPACE Namespace, PWSTR *ErrorRecord);
 59HRESULT WINAPI HcnModifyNamespace (HCN_NAMESPACE Namespace, PCWSTR Settings, PWSTR *ErrorRecord);
 60HRESULT WINAPI HcnQueryNamespaceProperties (HCN_NAMESPACE Namespace, PCWSTR Query, PWSTR *Properties, PWSTR *ErrorRecord);
 61HRESULT WINAPI HcnDeleteNamespace (REFGUID Id, PWSTR *ErrorRecord);
 62HRESULT WINAPI HcnCloseNamespace (HCN_NAMESPACE Namespace);
 63
 64typedef void* HCN_ENDPOINT;
 65typedef HCN_ENDPOINT* PHCN_ENDPOINT;
 66
 67HRESULT WINAPI HcnEnumerateEndpoints (PCWSTR Query, PWSTR *Endpoints, PWSTR *ErrorRecord);
 68HRESULT WINAPI HcnCreateEndpoint (HCN_NETWORK Network, REFGUID Id, PCWSTR Settings, PHCN_ENDPOINT Endpoint, PWSTR *ErrorRecord);
 69HRESULT WINAPI HcnOpenEndpoint (REFGUID Id, PHCN_ENDPOINT Endpoint, PWSTR *ErrorRecord);
 70HRESULT WINAPI HcnModifyEndpoint (HCN_ENDPOINT Endpoint, PCWSTR Settings, PWSTR *ErrorRecord);
 71HRESULT WINAPI HcnQueryEndpointProperties (HCN_ENDPOINT Endpoint, PCWSTR Query, PWSTR *Properties, PWSTR *ErrorRecord);
 72HRESULT WINAPI HcnDeleteEndpoint (REFGUID Id, PWSTR *ErrorRecord);
 73HRESULT WINAPI HcnCloseEndpoint (HCN_ENDPOINT Endpoint);
 74
 75typedef void* HCN_LOADBALANCER;
 76typedef HCN_LOADBALANCER* PHCN_LOADBALANCER;
 77
 78HRESULT WINAPI HcnEnumerateLoadBalancers (PCWSTR Query, PWSTR *LoadBalancer, PWSTR *ErrorRecord);
 79HRESULT WINAPI HcnCreateLoadBalancer (REFGUID Id, PCWSTR Settings, PHCN_LOADBALANCER LoadBalancer, PWSTR *ErrorRecord);
 80HRESULT WINAPI HcnOpenLoadBalancer (REFGUID Id, PHCN_LOADBALANCER LoadBalancer, PWSTR *ErrorRecord);
 81HRESULT WINAPI HcnModifyLoadBalancer (HCN_LOADBALANCER LoadBalancer, PCWSTR Settings, PWSTR *ErrorRecord);
 82HRESULT WINAPI HcnQueryLoadBalancerProperties (HCN_LOADBALANCER LoadBalancer, PCWSTR Query, PWSTR *Properties, PWSTR *ErrorRecord);
 83HRESULT WINAPI HcnDeleteLoadBalancer (REFGUID Id, PWSTR *ErrorRecord);
 84HRESULT WINAPI HcnCloseLoadBalancer (HCN_LOADBALANCER LoadBalancer);
 85
 86typedef void* HCN_SERVICE;
 87typedef HCN_SERVICE* PHCN_SERVICE;
 88
 89HRESULT WINAPI HcnRegisterServiceCallback (HCN_NOTIFICATION_CALLBACK Callback, void *Context, HCN_CALLBACK *CallbackHandle);
 90HRESULT WINAPI HcnUnregisterServiceCallback (HCN_CALLBACK CallbackHandle);
 91
 92typedef void* HCN_GUESTNETWORKSERVICE;
 93typedef HCN_GUESTNETWORKSERVICE* PHCN_GUESTNETWORKSERVICE;
 94
 95HRESULT WINAPI HcnRegisterGuestNetworkServiceCallback (HCN_GUESTNETWORKSERVICE GuestNetworkService, HCN_NOTIFICATION_CALLBACK Callback, void* Context, HCN_CALLBACK* CallbackHandle);
 96HRESULT WINAPI HcnUnregisterGuestNetworkServiceCallback (HCN_CALLBACK CallbackHandle);
 97HRESULT WINAPI HcnCreateGuestNetworkService (REFGUID Id, PCWSTR Settings, PHCN_GUESTNETWORKSERVICE GuestNetworkService, PWSTR* ErrorRecord);
 98HRESULT WINAPI HcnCloseGuestNetworkService (HCN_GUESTNETWORKSERVICE GuestNetworkService);
 99HRESULT WINAPI HcnModifyGuestNetworkService (HCN_GUESTNETWORKSERVICE GuestNetworkService, PCWSTR Settings, PWSTR* ErrorRecord);
100HRESULT WINAPI HcnDeleteGuestNetworkService (REFGUID Id, PWSTR* ErrorRecord);
101
102typedef enum tagHCN_PORT_PROTOCOL {
103  HCN_PORT_PROTOCOL_TCP = 0x01,
104  HCN_PORT_PROTOCOL_UDP = 0x02,
105  HCN_PORT_PROTOCOL_BOTH = 0x03
106} HCN_PORT_PROTOCOL;
107
108typedef enum tagHCN_PORT_ACCESS {
109  HCN_PORT_ACCESS_EXCLUSIVE = 0x01,
110  HCN_PORT_ACCESS_SHARED = 0x02
111} HCN_PORT_ACCESS;
112
113typedef struct tagHCN_PORT_RANGE_RESERVATION {
114  USHORT startingPort;
115  USHORT endingPort;
116} HCN_PORT_RANGE_RESERVATION;
117
118typedef struct tagHCN_PORT_RANGE_ENTRY {
119  GUID OwningPartitionId;
120  GUID TargetPartitionId;
121  HCN_PORT_PROTOCOL Protocol;
122  UINT64 Priority;
123  UINT32 ReservationType;
124  UINT32 SharingFlags;
125  UINT32 DeliveryMode;
126  UINT16 StartingPort;
127  UINT16 EndingPort;
128} HCN_PORT_RANGE_ENTRY, *PHCN_PORT_RANGE_ENTRY;
129
130HRESULT WINAPI HcnReserveGuestNetworkServicePort (HCN_GUESTNETWORKSERVICE GuestNetworkService, HCN_PORT_PROTOCOL Protocol, HCN_PORT_ACCESS Access, USHORT Port, HANDLE* PortReservationHandle);
131HRESULT WINAPI HcnReserveGuestNetworkServicePortRange (HCN_GUESTNETWORKSERVICE GuestNetworkService, USHORT PortCount, HCN_PORT_RANGE_RESERVATION* PortRangeReservation, HANDLE* PortReservationHandle);
132HRESULT WINAPI HcnReleaseGuestNetworkServicePortReservationHandle (HANDLE PortReservationHandle);
133HRESULT WINAPI HcnEnumerateGuestNetworkPortReservations (ULONG* ReturnCount, HCN_PORT_RANGE_ENTRY** PortEntries);
134VOID WINAPI HcnFreeGuestNetworkPortReservations (HCN_PORT_RANGE_ENTRY* PortEntries);
135HRESULT WINAPI HcnQueryEndpointStats (HCN_ENDPOINT Endpoint, PCWSTR Query, PWSTR *Stats, PWSTR *ErrorRecord);
136HRESULT WINAPI HcnQueryEndpointAddresses (HCN_ENDPOINT Endpoint, PCWSTR Query, PWSTR *Addresses, PWSTR *ErrorRecord);
137
138#ifdef __cplusplus
139}
140#endif
141
142#endif /* WINAPI_PARTITION_DESKTOP */
143
144#endif /* HCN_CLIENT_H */