computenetwork.h 6.9 KB

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