blob: c8bee04a5a48d39dab5bfd7aa1c2a19b46947836 [file] [log] [blame]
// Copyright (c) FIRST and other WPILib contributors.
// Open Source Software; you can modify and/or share it under the terms of
// the WPILib BSD license file in the root directory of this project.
#pragma once
#ifndef UNICODE
#define UNICODE
#endif
#include <windows.h>
#include <WinDNS.h>
namespace wpi {
class DynamicDns {
public:
using DnsServiceFreeInstanceFunc =
VOID(WINAPI*)(_In_ PDNS_SERVICE_INSTANCE pInstance);
using DnsServiceConstructInstanceFunc = PDNS_SERVICE_INSTANCE(WINAPI*)(
_In_ PCWSTR pServiceName, _In_ PCWSTR pHostName,
_In_opt_ PIP4_ADDRESS pIp4, _In_opt_ PIP6_ADDRESS pIp6, _In_ WORD wPort,
_In_ WORD wPriority, _In_ WORD wWeight, _In_ DWORD dwPropertiesCount,
_In_reads_(dwPropertiesCount) PCWSTR* keys,
_In_reads_(dwPropertiesCount) PCWSTR* values);
using DnsServiceRegisterFunc =
DWORD(WINAPI*)(_In_ PDNS_SERVICE_REGISTER_REQUEST pRequest,
_Inout_opt_ PDNS_SERVICE_CANCEL pCancel);
using DnsServiceDeRegisterFunc =
DWORD(WINAPI*)(_In_ PDNS_SERVICE_REGISTER_REQUEST pRequest,
_Inout_opt_ PDNS_SERVICE_CANCEL pCancel);
using DnsServiceBrowseFunc =
DNS_STATUS(WINAPI*)(_In_ PDNS_SERVICE_BROWSE_REQUEST pRequest,
_Inout_ PDNS_SERVICE_CANCEL pCancel);
using DnsServiceBrowseCancelFunc =
DNS_STATUS(WINAPI*)(_In_ PDNS_SERVICE_CANCEL pCancelHandle);
DnsServiceBrowseFunc DnsServiceBrowsePtr{nullptr};
DnsServiceBrowseCancelFunc DnsServiceBrowseCancelPtr{nullptr};
DnsServiceFreeInstanceFunc DnsServiceFreeInstancePtr{nullptr};
DnsServiceConstructInstanceFunc DnsServiceConstructInstancePtr{nullptr};
DnsServiceRegisterFunc DnsServiceRegisterPtr{nullptr};
DnsServiceDeRegisterFunc DnsServiceDeRegisterPtr{nullptr};
bool CanDnsAnnounce{false};
bool CanDnsResolve{false};
static DynamicDns& GetDynamicDns();
private:
DynamicDns();
};
} // namespace wpi