correspondent 0.3.1

non-hierarchical networking library
Documentation
#[allow(
    unused_variables,
    non_upper_case_globals,
    non_snake_case,
    unused_unsafe,
    non_camel_case_types,
    dead_code,
    clippy::all
)]
pub mod Windows {
    #[allow(
        unused_variables,
        non_upper_case_globals,
        non_snake_case,
        unused_unsafe,
        non_camel_case_types,
        dead_code,
        clippy::all
    )]
    pub mod Win32 {
        #[allow(
            unused_variables,
            non_upper_case_globals,
            non_snake_case,
            unused_unsafe,
            non_camel_case_types,
            dead_code,
            clippy::all
        )]
        pub mod Foundation {
            #[repr(transparent)]
            #[derive(
                :: std :: default :: Default,
                :: std :: clone :: Clone,
                :: std :: marker :: Copy,
                :: std :: cmp :: PartialEq,
                :: std :: cmp :: Eq,
                :: std :: fmt :: Debug,
            )]
            pub struct BOOL(pub i32);
            unsafe impl ::windows::Abi for BOOL {
                type Abi = Self;
            }
            impl BOOL {
                #[inline]
                pub fn as_bool(self) -> bool {
                    !(self.0 == 0)
                }
                #[inline]
                pub fn ok(self) -> ::windows::Result<()> {
                    if self.as_bool() {
                        Ok(())
                    } else {
                        Err(::windows::HRESULT::from_thread().into())
                    }
                }
                #[inline]
                #[track_caller]
                pub fn unwrap(self) {
                    self.ok().unwrap();
                }
                #[inline]
                #[track_caller]
                pub fn expect(self, msg: &str) {
                    self.ok().expect(msg);
                }
            }
            impl ::std::convert::From<BOOL> for bool {
                fn from(value: BOOL) -> Self {
                    value.as_bool()
                }
            }
            impl ::std::convert::From<&BOOL> for bool {
                fn from(value: &BOOL) -> Self {
                    value.as_bool()
                }
            }
            impl ::std::convert::From<bool> for BOOL {
                fn from(value: bool) -> Self {
                    if value {
                        BOOL(1)
                    } else {
                        BOOL(0)
                    }
                }
            }
            impl ::std::convert::From<&bool> for BOOL {
                fn from(value: &bool) -> Self {
                    (*value).into()
                }
            }
            impl ::std::cmp::PartialEq<bool> for BOOL {
                fn eq(&self, other: &bool) -> bool {
                    self.as_bool() == *other
                }
            }
            impl ::std::cmp::PartialEq<BOOL> for bool {
                fn eq(&self, other: &BOOL) -> bool {
                    *self == other.as_bool()
                }
            }
            impl std::ops::Not for BOOL {
                type Output = Self;
                fn not(self) -> Self::Output {
                    if self.as_bool() {
                        BOOL(0)
                    } else {
                        BOOL(1)
                    }
                }
            }
            impl<'a> ::windows::IntoParam<'a, BOOL> for bool {
                fn into_param(self) -> ::windows::Param<'a, BOOL> {
                    ::windows::Param::Owned(self.into())
                }
            }
            #[repr(transparent)]
            #[derive(:: std :: clone :: Clone, :: std :: marker :: Copy)]
            pub struct HANDLE(pub isize);
            impl HANDLE {}
            impl ::std::default::Default for HANDLE {
                fn default() -> Self {
                    Self(0)
                }
            }
            impl HANDLE {
                pub const NULL: Self = Self(0);
                pub fn is_null(&self) -> bool {
                    self.0 == 0
                }
            }
            impl ::std::fmt::Debug for HANDLE {
                fn fmt(
                    &self,
                    fmt: &mut ::std::fmt::Formatter<'_>,
                ) -> ::std::fmt::Result {
                    fmt.debug_struct("HANDLE").field("Value", &self.0).finish()
                }
            }
            impl ::std::cmp::PartialEq for HANDLE {
                fn eq(&self, other: &Self) -> bool {
                    self.0 == other.0
                }
            }
            impl ::std::cmp::Eq for HANDLE {}
            unsafe impl ::windows::Abi for HANDLE {
                type Abi = Self;
            }
            impl HANDLE {
                pub const INVALID: Self = Self(-1);
                pub fn is_invalid(&self) -> bool {
                    self.0 == -1
                }
            }
            #[repr(transparent)]
            #[derive(
                :: std :: clone :: Clone,
                :: std :: marker :: Copy,
                :: std :: cmp :: Eq,
                :: std :: fmt :: Debug,
            )]
            pub struct PSTR(pub *mut u8);
            impl PSTR {
                pub const NULL: Self = Self(::std::ptr::null_mut());
                pub fn is_null(&self) -> bool {
                    self.0.is_null()
                }
            }
            impl ::std::default::Default for PSTR {
                fn default() -> Self {
                    Self(::std::ptr::null_mut())
                }
            }
            impl ::std::cmp::PartialEq for PSTR {
                fn eq(&self, other: &Self) -> bool {
                    self.0 == other.0
                }
            }
            unsafe impl ::windows::Abi for PSTR {
                type Abi = Self;
                fn drop_param(param: &mut ::windows::Param<'_, Self>) {
                    if let ::windows::Param::Boxed(value) = param {
                        if !value.0.is_null() {
                            unsafe {
                                ::std::boxed::Box::from_raw(value.0);
                            }
                        }
                    }
                }
            }
            impl<'a> ::windows::IntoParam<'a, PSTR> for &'a str {
                fn into_param(self) -> ::windows::Param<'a, PSTR> {
                    ::windows::Param::Boxed(PSTR(
                        ::std::boxed::Box::<[u8]>::into_raw(
                            self.bytes()
                                .chain(::std::iter::once(0))
                                .collect::<std::vec::Vec<u8>>()
                                .into_boxed_slice(),
                        ) as _,
                    ))
                }
            }
            impl<'a> ::windows::IntoParam<'a, PSTR> for String {
                fn into_param(self) -> ::windows::Param<'a, PSTR> {
                    ::windows::Param::Boxed(PSTR(
                        ::std::boxed::Box::<[u8]>::into_raw(
                            self.bytes()
                                .chain(::std::iter::once(0))
                                .collect::<std::vec::Vec<u8>>()
                                .into_boxed_slice(),
                        ) as _,
                    ))
                }
            }
            #[repr(transparent)]
            #[derive(
                :: std :: clone :: Clone,
                :: std :: marker :: Copy,
                :: std :: cmp :: Eq,
                :: std :: fmt :: Debug,
            )]
            pub struct PWSTR(pub *mut u16);
            impl PWSTR {
                pub const NULL: Self = Self(::std::ptr::null_mut());
                pub fn is_null(&self) -> bool {
                    self.0.is_null()
                }
            }
            impl ::std::default::Default for PWSTR {
                fn default() -> Self {
                    Self(::std::ptr::null_mut())
                }
            }
            impl ::std::cmp::PartialEq for PWSTR {
                fn eq(&self, other: &Self) -> bool {
                    self.0 == other.0
                }
            }
            unsafe impl ::windows::Abi for PWSTR {
                type Abi = Self;
                fn drop_param(param: &mut ::windows::Param<'_, Self>) {
                    if let ::windows::Param::Boxed(value) = param {
                        if !value.0.is_null() {
                            unsafe {
                                ::std::boxed::Box::from_raw(value.0);
                            }
                        }
                    }
                }
            }
            impl<'a> ::windows::IntoParam<'a, PWSTR> for &'a str {
                fn into_param(self) -> ::windows::Param<'a, PWSTR> {
                    ::windows::Param::Boxed(PWSTR(
                        ::std::boxed::Box::<[u16]>::into_raw(
                            self.encode_utf16()
                                .chain(::std::iter::once(0))
                                .collect::<std::vec::Vec<u16>>()
                                .into_boxed_slice(),
                        ) as _,
                    ))
                }
            }
            impl<'a> ::windows::IntoParam<'a, PWSTR> for String {
                fn into_param(self) -> ::windows::Param<'a, PWSTR> {
                    ::windows::Param::Boxed(PWSTR(
                        ::std::boxed::Box::<[u16]>::into_raw(
                            self.encode_utf16()
                                .chain(::std::iter::once(0))
                                .collect::<std::vec::Vec<u16>>()
                                .into_boxed_slice(),
                        ) as _,
                    ))
                }
            }
        }
        #[allow(
            unused_variables,
            non_upper_case_globals,
            non_snake_case,
            unused_unsafe,
            non_camel_case_types,
            dead_code,
            clippy::all
        )]
        pub mod NetworkManagement {
            #[allow(
                unused_variables,
                non_upper_case_globals,
                non_snake_case,
                unused_unsafe,
                non_camel_case_types,
                dead_code,
                clippy::all
            )]
            pub mod Dns {
                pub const DNSREC_ADDITIONAL: u32 = 3u32;
                pub const DNSREC_ANSWER: u32 = 1u32;
                pub const DNSREC_AUTHORITY: u32 = 2u32;
                pub const DNSREC_DELETE: u32 = 4u32;
                pub const DNSREC_NOEXIST: u32 = 4u32;
                pub const DNSREC_PREREQ: u32 = 1u32;
                pub const DNSREC_QUESTION: u32 = 0u32;
                pub const DNSREC_SECTION: u32 = 3u32;
                pub const DNSREC_UPDATE: u32 = 2u32;
                pub const DNSREC_ZONE: u32 = 0u32;
                pub const DNSSEC_ALGORITHM_ECDSAP256_SHA256: u32 = 13u32;
                pub const DNSSEC_ALGORITHM_ECDSAP384_SHA384: u32 = 14u32;
                pub const DNSSEC_ALGORITHM_NULL: u32 = 253u32;
                pub const DNSSEC_ALGORITHM_PRIVATE: u32 = 254u32;
                pub const DNSSEC_ALGORITHM_RSAMD5: u32 = 1u32;
                pub const DNSSEC_ALGORITHM_RSASHA1: u32 = 5u32;
                pub const DNSSEC_ALGORITHM_RSASHA1_NSEC3: u32 = 7u32;
                pub const DNSSEC_ALGORITHM_RSASHA256: u32 = 8u32;
                pub const DNSSEC_ALGORITHM_RSASHA512: u32 = 10u32;
                pub const DNSSEC_DIGEST_ALGORITHM_SHA1: u32 = 1u32;
                pub const DNSSEC_DIGEST_ALGORITHM_SHA256: u32 = 2u32;
                pub const DNSSEC_DIGEST_ALGORITHM_SHA384: u32 = 4u32;
                pub const DNSSEC_KEY_FLAG_EXTEND: u32 = 8u32;
                pub const DNSSEC_KEY_FLAG_FLAG10: u32 = 1024u32;
                pub const DNSSEC_KEY_FLAG_FLAG11: u32 = 2048u32;
                pub const DNSSEC_KEY_FLAG_FLAG2: u32 = 4u32;
                pub const DNSSEC_KEY_FLAG_FLAG4: u32 = 16u32;
                pub const DNSSEC_KEY_FLAG_FLAG5: u32 = 32u32;
                pub const DNSSEC_KEY_FLAG_FLAG8: u32 = 256u32;
                pub const DNSSEC_KEY_FLAG_FLAG9: u32 = 512u32;
                pub const DNSSEC_KEY_FLAG_HOST: u32 = 128u32;
                pub const DNSSEC_KEY_FLAG_NOAUTH: u32 = 1u32;
                pub const DNSSEC_KEY_FLAG_NOCONF: u32 = 2u32;
                pub const DNSSEC_KEY_FLAG_NTPE3: u32 = 192u32;
                pub const DNSSEC_KEY_FLAG_SIG0: u32 = 0u32;
                pub const DNSSEC_KEY_FLAG_SIG1: u32 = 4096u32;
                pub const DNSSEC_KEY_FLAG_SIG10: u32 = 40960u32;
                pub const DNSSEC_KEY_FLAG_SIG11: u32 = 45056u32;
                pub const DNSSEC_KEY_FLAG_SIG12: u32 = 49152u32;
                pub const DNSSEC_KEY_FLAG_SIG13: u32 = 53248u32;
                pub const DNSSEC_KEY_FLAG_SIG14: u32 = 57344u32;
                pub const DNSSEC_KEY_FLAG_SIG15: u32 = 61440u32;
                pub const DNSSEC_KEY_FLAG_SIG2: u32 = 8192u32;
                pub const DNSSEC_KEY_FLAG_SIG3: u32 = 12288u32;
                pub const DNSSEC_KEY_FLAG_SIG4: u32 = 16384u32;
                pub const DNSSEC_KEY_FLAG_SIG5: u32 = 20480u32;
                pub const DNSSEC_KEY_FLAG_SIG6: u32 = 24576u32;
                pub const DNSSEC_KEY_FLAG_SIG7: u32 = 28672u32;
                pub const DNSSEC_KEY_FLAG_SIG8: u32 = 32768u32;
                pub const DNSSEC_KEY_FLAG_SIG9: u32 = 36864u32;
                pub const DNSSEC_KEY_FLAG_USER: u32 = 0u32;
                pub const DNSSEC_KEY_FLAG_ZONE: u32 = 64u32;
                pub const DNSSEC_PROTOCOL_DNSSEC: u32 = 3u32;
                pub const DNSSEC_PROTOCOL_EMAIL: u32 = 2u32;
                pub const DNSSEC_PROTOCOL_IPSEC: u32 = 4u32;
                pub const DNSSEC_PROTOCOL_NONE: u32 = 0u32;
                pub const DNSSEC_PROTOCOL_TLS: u32 = 1u32;
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_AAAA_DATA {
                    pub Ip6Address: IP6_ADDRESS,
                }
                impl DNS_AAAA_DATA {}
                unsafe impl ::windows::Abi for DNS_AAAA_DATA {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_ADDR {
                    pub MaxSa:
                        [super::super::System::SystemServices::CHAR; 32],
                    pub Data: DNS_ADDR_0,
                }
                impl DNS_ADDR {}
                unsafe impl ::windows::Abi for DNS_ADDR {
                    type Abi = Self;
                }
                #[repr(C, packed(1))]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub union DNS_ADDR_0 {
                    pub DnsAddrUserDword: [u32; 8],
                }
                impl DNS_ADDR_0 {}
                unsafe impl ::windows::Abi for DNS_ADDR_0 {
                    type Abi = Self;
                }
                #[repr(C, packed(1))]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_ADDR_ARRAY {
                    pub MaxCount: u32,
                    pub AddrCount: u32,
                    pub Tag: u32,
                    pub Family: u16,
                    pub WordReserved: u16,
                    pub Flags: u32,
                    pub MatchFlag: u32,
                    pub Reserved1: u32,
                    pub Reserved2: u32,
                    pub AddrArray: [DNS_ADDR; 1],
                }
                impl DNS_ADDR_ARRAY {}
                unsafe impl ::windows::Abi for DNS_ADDR_ARRAY {
                    type Abi = Self;
                }
                pub const DNS_ADDR_MAX_SOCKADDR_LENGTH: u32 = 32u32;
                pub const DNS_ATMA_AESA_ADDR_LENGTH: u32 = 20u32;
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_ATMA_DATA {
                    pub AddressType: u8,
                    pub Address: [u8; 20],
                }
                impl DNS_ATMA_DATA {}
                impl ::std::default::Default for DNS_ATMA_DATA {
                    fn default() -> Self {
                        Self {
                            AddressType: 0,
                            Address: [0; 20],
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_ATMA_DATA {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_ATMA_DATA")
                            .field("AddressType", &self.AddressType)
                            .field("Address", &self.Address)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_ATMA_DATA {
                    fn eq(&self, other: &Self) -> bool {
                        self.AddressType == other.AddressType
                            && self.Address == other.Address
                    }
                }
                impl ::std::cmp::Eq for DNS_ATMA_DATA {}
                unsafe impl ::windows::Abi for DNS_ATMA_DATA {
                    type Abi = Self;
                }
                pub const DNS_ATMA_FORMAT_AESA: u32 = 2u32;
                pub const DNS_ATMA_FORMAT_E164: u32 = 1u32;
                pub const DNS_ATMA_MAX_ADDR_LENGTH: u32 = 20u32;
                pub const DNS_ATMA_MAX_RECORD_LENGTH: u32 = 21u32;
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_A_DATA {
                    pub IpAddress: u32,
                }
                impl DNS_A_DATA {}
                impl ::std::default::Default for DNS_A_DATA {
                    fn default() -> Self {
                        Self { IpAddress: 0 }
                    }
                }
                impl ::std::fmt::Debug for DNS_A_DATA {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_A_DATA")
                            .field("IpAddress", &self.IpAddress)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_A_DATA {
                    fn eq(&self, other: &Self) -> bool {
                        self.IpAddress == other.IpAddress
                    }
                }
                impl ::std::cmp::Eq for DNS_A_DATA {}
                unsafe impl ::windows::Abi for DNS_A_DATA {
                    type Abi = Self;
                }
                #[derive(
                    :: std :: cmp :: PartialEq,
                    :: std :: cmp :: Eq,
                    :: std :: marker :: Copy,
                    :: std :: clone :: Clone,
                    :: std :: default :: Default,
                    :: std :: fmt :: Debug,
                )]
                #[repr(transparent)]
                pub struct DNS_CHARSET(pub i32);
                pub const DnsCharSetUnknown: DNS_CHARSET = DNS_CHARSET(0i32);
                pub const DnsCharSetUnicode: DNS_CHARSET = DNS_CHARSET(1i32);
                pub const DnsCharSetUtf8: DNS_CHARSET = DNS_CHARSET(2i32);
                pub const DnsCharSetAnsi: DNS_CHARSET = DNS_CHARSET(3i32);
                impl ::std::convert::From<i32> for DNS_CHARSET {
                    fn from(value: i32) -> Self {
                        Self(value)
                    }
                }
                unsafe impl ::windows::Abi for DNS_CHARSET {
                    type Abi = Self;
                }
                pub const DNS_CLASS_ALL: u32 = 255u32;
                pub const DNS_CLASS_ANY: u32 = 255u32;
                pub const DNS_CLASS_CHAOS: u32 = 3u32;
                pub const DNS_CLASS_CSNET: u32 = 2u32;
                pub const DNS_CLASS_HESIOD: u32 = 4u32;
                pub const DNS_CLASS_INTERNET: u32 = 1u32;
                pub const DNS_CLASS_NONE: u32 = 254u32;
                pub const DNS_CLASS_UNICAST_RESPONSE: u32 = 32768u32;
                pub const DNS_COMPRESSED_QUESTION_NAME: u32 = 49164u32;
                pub const DNS_CONFIG_FLAG_ALLOC: u32 = 1u32;
                #[derive(
                    :: std :: cmp :: PartialEq,
                    :: std :: cmp :: Eq,
                    :: std :: marker :: Copy,
                    :: std :: clone :: Clone,
                    :: std :: default :: Default,
                    :: std :: fmt :: Debug,
                )]
                #[repr(transparent)]
                pub struct DNS_CONFIG_TYPE(pub i32);
                pub const DnsConfigPrimaryDomainName_W: DNS_CONFIG_TYPE =
                    DNS_CONFIG_TYPE(0i32);
                pub const DnsConfigPrimaryDomainName_A: DNS_CONFIG_TYPE =
                    DNS_CONFIG_TYPE(1i32);
                pub const DnsConfigPrimaryDomainName_UTF8: DNS_CONFIG_TYPE =
                    DNS_CONFIG_TYPE(2i32);
                pub const DnsConfigAdapterDomainName_W: DNS_CONFIG_TYPE =
                    DNS_CONFIG_TYPE(3i32);
                pub const DnsConfigAdapterDomainName_A: DNS_CONFIG_TYPE =
                    DNS_CONFIG_TYPE(4i32);
                pub const DnsConfigAdapterDomainName_UTF8: DNS_CONFIG_TYPE =
                    DNS_CONFIG_TYPE(5i32);
                pub const DnsConfigDnsServerList: DNS_CONFIG_TYPE =
                    DNS_CONFIG_TYPE(6i32);
                pub const DnsConfigSearchList: DNS_CONFIG_TYPE =
                    DNS_CONFIG_TYPE(7i32);
                pub const DnsConfigAdapterInfo: DNS_CONFIG_TYPE =
                    DNS_CONFIG_TYPE(8i32);
                pub const DnsConfigPrimaryHostNameRegistrationEnabled:
                    DNS_CONFIG_TYPE = DNS_CONFIG_TYPE(9i32);
                pub const DnsConfigAdapterHostNameRegistrationEnabled:
                    DNS_CONFIG_TYPE = DNS_CONFIG_TYPE(10i32);
                pub const DnsConfigAddressRegistrationMaxCount:
                    DNS_CONFIG_TYPE = DNS_CONFIG_TYPE(11i32);
                pub const DnsConfigHostName_W: DNS_CONFIG_TYPE =
                    DNS_CONFIG_TYPE(12i32);
                pub const DnsConfigHostName_A: DNS_CONFIG_TYPE =
                    DNS_CONFIG_TYPE(13i32);
                pub const DnsConfigHostName_UTF8: DNS_CONFIG_TYPE =
                    DNS_CONFIG_TYPE(14i32);
                pub const DnsConfigFullHostName_W: DNS_CONFIG_TYPE =
                    DNS_CONFIG_TYPE(15i32);
                pub const DnsConfigFullHostName_A: DNS_CONFIG_TYPE =
                    DNS_CONFIG_TYPE(16i32);
                pub const DnsConfigFullHostName_UTF8: DNS_CONFIG_TYPE =
                    DNS_CONFIG_TYPE(17i32);
                pub const DnsConfigNameServer: DNS_CONFIG_TYPE =
                    DNS_CONFIG_TYPE(18i32);
                impl ::std::convert::From<i32> for DNS_CONFIG_TYPE {
                    fn from(value: i32) -> Self {
                        Self(value)
                    }
                }
                unsafe impl ::windows::Abi for DNS_CONFIG_TYPE {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_CONNECTION_IFINDEX_ENTRY {
                    pub pwszConnectionName: super::super::Foundation::PWSTR,
                    pub dwIfIndex: u32,
                }
                impl DNS_CONNECTION_IFINDEX_ENTRY {}
                impl ::std::default::Default for DNS_CONNECTION_IFINDEX_ENTRY {
                    fn default() -> Self {
                        Self {
                            pwszConnectionName:
                                ::std::default::Default::default(),
                            dwIfIndex: 0,
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_CONNECTION_IFINDEX_ENTRY {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_CONNECTION_IFINDEX_ENTRY")
                            .field(
                                "pwszConnectionName",
                                &self.pwszConnectionName,
                            )
                            .field("dwIfIndex", &self.dwIfIndex)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_CONNECTION_IFINDEX_ENTRY {
                    fn eq(&self, other: &Self) -> bool {
                        self.pwszConnectionName == other.pwszConnectionName
                            && self.dwIfIndex == other.dwIfIndex
                    }
                }
                impl ::std::cmp::Eq for DNS_CONNECTION_IFINDEX_ENTRY {}
                unsafe impl ::windows::Abi for DNS_CONNECTION_IFINDEX_ENTRY {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_CONNECTION_IFINDEX_LIST {
                    pub pConnectionIfIndexEntries:
                        *mut DNS_CONNECTION_IFINDEX_ENTRY,
                    pub nEntries: u32,
                }
                impl DNS_CONNECTION_IFINDEX_LIST {}
                impl ::std::default::Default for DNS_CONNECTION_IFINDEX_LIST {
                    fn default() -> Self {
                        Self {
                            pConnectionIfIndexEntries: ::std::ptr::null_mut(),
                            nEntries: 0,
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_CONNECTION_IFINDEX_LIST {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_CONNECTION_IFINDEX_LIST")
                            .field(
                                "pConnectionIfIndexEntries",
                                &self.pConnectionIfIndexEntries,
                            )
                            .field("nEntries", &self.nEntries)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_CONNECTION_IFINDEX_LIST {
                    fn eq(&self, other: &Self) -> bool {
                        self.pConnectionIfIndexEntries
                            == other.pConnectionIfIndexEntries
                            && self.nEntries == other.nEntries
                    }
                }
                impl ::std::cmp::Eq for DNS_CONNECTION_IFINDEX_LIST {}
                unsafe impl ::windows::Abi for DNS_CONNECTION_IFINDEX_LIST {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_CONNECTION_NAME {
                    pub wszName: [u16; 65],
                }
                impl DNS_CONNECTION_NAME {}
                impl ::std::default::Default for DNS_CONNECTION_NAME {
                    fn default() -> Self {
                        Self { wszName: [0; 65] }
                    }
                }
                impl ::std::fmt::Debug for DNS_CONNECTION_NAME {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_CONNECTION_NAME")
                            .field("wszName", &self.wszName)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_CONNECTION_NAME {
                    fn eq(&self, other: &Self) -> bool {
                        self.wszName == other.wszName
                    }
                }
                impl ::std::cmp::Eq for DNS_CONNECTION_NAME {}
                unsafe impl ::windows::Abi for DNS_CONNECTION_NAME {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_CONNECTION_NAME_LIST {
                    pub cNames: u32,
                    pub pNames: *mut DNS_CONNECTION_NAME,
                }
                impl DNS_CONNECTION_NAME_LIST {}
                impl ::std::default::Default for DNS_CONNECTION_NAME_LIST {
                    fn default() -> Self {
                        Self {
                            cNames: 0,
                            pNames: ::std::ptr::null_mut(),
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_CONNECTION_NAME_LIST {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_CONNECTION_NAME_LIST")
                            .field("cNames", &self.cNames)
                            .field("pNames", &self.pNames)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_CONNECTION_NAME_LIST {
                    fn eq(&self, other: &Self) -> bool {
                        self.cNames == other.cNames
                            && self.pNames == other.pNames
                    }
                }
                impl ::std::cmp::Eq for DNS_CONNECTION_NAME_LIST {}
                unsafe impl ::windows::Abi for DNS_CONNECTION_NAME_LIST {
                    type Abi = Self;
                }
                pub const DNS_CONNECTION_NAME_MAX_LENGTH: u32 = 64u32;
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_CONNECTION_POLICY_ENTRY {
                    pub pwszHost: super::super::Foundation::PWSTR,
                    pub pwszAppId: super::super::Foundation::PWSTR,
                    pub cbAppSid: u32,
                    pub pbAppSid: *mut u8,
                    pub nConnections: u32,
                    pub ppwszConnections: *mut super::super::Foundation::PWSTR,
                    pub dwPolicyEntryFlags: u32,
                }
                impl DNS_CONNECTION_POLICY_ENTRY {}
                impl ::std::default::Default for DNS_CONNECTION_POLICY_ENTRY {
                    fn default() -> Self {
                        Self {
                            pwszHost: ::std::default::Default::default(),
                            pwszAppId: ::std::default::Default::default(),
                            cbAppSid: 0,
                            pbAppSid: ::std::ptr::null_mut(),
                            nConnections: 0,
                            ppwszConnections: ::std::ptr::null_mut(),
                            dwPolicyEntryFlags: 0,
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_CONNECTION_POLICY_ENTRY {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_CONNECTION_POLICY_ENTRY")
                            .field("pwszHost", &self.pwszHost)
                            .field("pwszAppId", &self.pwszAppId)
                            .field("cbAppSid", &self.cbAppSid)
                            .field("pbAppSid", &self.pbAppSid)
                            .field("nConnections", &self.nConnections)
                            .field("ppwszConnections", &self.ppwszConnections)
                            .field(
                                "dwPolicyEntryFlags",
                                &self.dwPolicyEntryFlags,
                            )
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_CONNECTION_POLICY_ENTRY {
                    fn eq(&self, other: &Self) -> bool {
                        self.pwszHost == other.pwszHost
                            && self.pwszAppId == other.pwszAppId
                            && self.cbAppSid == other.cbAppSid
                            && self.pbAppSid == other.pbAppSid
                            && self.nConnections == other.nConnections
                            && self.ppwszConnections == other.ppwszConnections
                            && self.dwPolicyEntryFlags
                                == other.dwPolicyEntryFlags
                    }
                }
                impl ::std::cmp::Eq for DNS_CONNECTION_POLICY_ENTRY {}
                unsafe impl ::windows::Abi for DNS_CONNECTION_POLICY_ENTRY {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_CONNECTION_POLICY_ENTRY_LIST {
                    pub pPolicyEntries: *mut DNS_CONNECTION_POLICY_ENTRY,
                    pub nEntries: u32,
                }
                impl DNS_CONNECTION_POLICY_ENTRY_LIST {}
                impl ::std::default::Default for DNS_CONNECTION_POLICY_ENTRY_LIST {
                    fn default() -> Self {
                        Self {
                            pPolicyEntries: ::std::ptr::null_mut(),
                            nEntries: 0,
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_CONNECTION_POLICY_ENTRY_LIST {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_CONNECTION_POLICY_ENTRY_LIST")
                            .field("pPolicyEntries", &self.pPolicyEntries)
                            .field("nEntries", &self.nEntries)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_CONNECTION_POLICY_ENTRY_LIST {
                    fn eq(&self, other: &Self) -> bool {
                        self.pPolicyEntries == other.pPolicyEntries
                            && self.nEntries == other.nEntries
                    }
                }
                impl ::std::cmp::Eq for DNS_CONNECTION_POLICY_ENTRY_LIST {}
                unsafe impl ::windows::Abi for DNS_CONNECTION_POLICY_ENTRY_LIST {
                    type Abi = Self;
                }
                pub const DNS_CONNECTION_POLICY_ENTRY_ONDEMAND: u32 = 1u32;
                #[derive(
                    :: std :: cmp :: PartialEq,
                    :: std :: cmp :: Eq,
                    :: std :: marker :: Copy,
                    :: std :: clone :: Clone,
                    :: std :: default :: Default,
                    :: std :: fmt :: Debug,
                )]
                #[repr(transparent)]
                pub struct DNS_CONNECTION_POLICY_TAG(pub i32);
                pub const TAG_DNS_CONNECTION_POLICY_TAG_DEFAULT:
                    DNS_CONNECTION_POLICY_TAG =
                    DNS_CONNECTION_POLICY_TAG(0i32);
                pub const TAG_DNS_CONNECTION_POLICY_TAG_CONNECTION_MANAGER:
                    DNS_CONNECTION_POLICY_TAG =
                    DNS_CONNECTION_POLICY_TAG(1i32);
                pub const TAG_DNS_CONNECTION_POLICY_TAG_WWWPT:
                    DNS_CONNECTION_POLICY_TAG =
                    DNS_CONNECTION_POLICY_TAG(2i32);
                impl ::std::convert::From<i32> for DNS_CONNECTION_POLICY_TAG {
                    fn from(value: i32) -> Self {
                        Self(value)
                    }
                }
                unsafe impl ::windows::Abi for DNS_CONNECTION_POLICY_TAG {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_CONNECTION_PROXY_ELEMENT {
                    pub Type: DNS_CONNECTION_PROXY_TYPE,
                    pub Info: DNS_CONNECTION_PROXY_INFO,
                }
                impl DNS_CONNECTION_PROXY_ELEMENT {}
                unsafe impl ::windows::Abi for DNS_CONNECTION_PROXY_ELEMENT {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_CONNECTION_PROXY_INFO {
                    pub Version: u32,
                    pub pwszFriendlyName: super::super::Foundation::PWSTR,
                    pub Flags: u32,
                    pub Switch: DNS_CONNECTION_PROXY_INFO_SWITCH,
                    pub Anonymous: DNS_CONNECTION_PROXY_INFO_0,
                }
                impl DNS_CONNECTION_PROXY_INFO {}
                unsafe impl ::windows::Abi for DNS_CONNECTION_PROXY_INFO {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub union DNS_CONNECTION_PROXY_INFO_0 {
                    pub Config: DNS_CONNECTION_PROXY_INFO_0_0,
                    pub Script: DNS_CONNECTION_PROXY_INFO_0_1,
                }
                impl DNS_CONNECTION_PROXY_INFO_0 {}
                unsafe impl ::windows::Abi for DNS_CONNECTION_PROXY_INFO_0 {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_CONNECTION_PROXY_INFO_0_0 {
                    pub pwszServer: super::super::Foundation::PWSTR,
                    pub pwszUsername: super::super::Foundation::PWSTR,
                    pub pwszPassword: super::super::Foundation::PWSTR,
                    pub pwszException: super::super::Foundation::PWSTR,
                    pub pwszExtraInfo: super::super::Foundation::PWSTR,
                    pub Port: u16,
                }
                impl DNS_CONNECTION_PROXY_INFO_0_0 {}
                impl ::std::default::Default for DNS_CONNECTION_PROXY_INFO_0_0 {
                    fn default() -> Self {
                        Self {
                            pwszServer: ::std::default::Default::default(),
                            pwszUsername: ::std::default::Default::default(),
                            pwszPassword: ::std::default::Default::default(),
                            pwszException: ::std::default::Default::default(),
                            pwszExtraInfo: ::std::default::Default::default(),
                            Port: 0,
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_CONNECTION_PROXY_INFO_0_0 {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("_DNS_CONNECTION_PROXY_INFO_CONFIG")
                            .field("pwszServer", &self.pwszServer)
                            .field("pwszUsername", &self.pwszUsername)
                            .field("pwszPassword", &self.pwszPassword)
                            .field("pwszException", &self.pwszException)
                            .field("pwszExtraInfo", &self.pwszExtraInfo)
                            .field("Port", &self.Port)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_CONNECTION_PROXY_INFO_0_0 {
                    fn eq(&self, other: &Self) -> bool {
                        self.pwszServer == other.pwszServer
                            && self.pwszUsername == other.pwszUsername
                            && self.pwszPassword == other.pwszPassword
                            && self.pwszException == other.pwszException
                            && self.pwszExtraInfo == other.pwszExtraInfo
                            && self.Port == other.Port
                    }
                }
                impl ::std::cmp::Eq for DNS_CONNECTION_PROXY_INFO_0_0 {}
                unsafe impl ::windows::Abi for DNS_CONNECTION_PROXY_INFO_0_0 {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_CONNECTION_PROXY_INFO_0_1 {
                    pub pwszScript: super::super::Foundation::PWSTR,
                    pub pwszUsername: super::super::Foundation::PWSTR,
                    pub pwszPassword: super::super::Foundation::PWSTR,
                }
                impl DNS_CONNECTION_PROXY_INFO_0_1 {}
                impl ::std::default::Default for DNS_CONNECTION_PROXY_INFO_0_1 {
                    fn default() -> Self {
                        Self {
                            pwszScript: ::std::default::Default::default(),
                            pwszUsername: ::std::default::Default::default(),
                            pwszPassword: ::std::default::Default::default(),
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_CONNECTION_PROXY_INFO_0_1 {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("_DNS_CONNECTION_PROXY_INFO_SCRIPT")
                            .field("pwszScript", &self.pwszScript)
                            .field("pwszUsername", &self.pwszUsername)
                            .field("pwszPassword", &self.pwszPassword)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_CONNECTION_PROXY_INFO_0_1 {
                    fn eq(&self, other: &Self) -> bool {
                        self.pwszScript == other.pwszScript
                            && self.pwszUsername == other.pwszUsername
                            && self.pwszPassword == other.pwszPassword
                    }
                }
                impl ::std::cmp::Eq for DNS_CONNECTION_PROXY_INFO_0_1 {}
                unsafe impl ::windows::Abi for DNS_CONNECTION_PROXY_INFO_0_1 {
                    type Abi = Self;
                }
                pub const DNS_CONNECTION_PROXY_INFO_CURRENT_VERSION: u32 =
                    1u32;
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_CONNECTION_PROXY_INFO_EX {
                    pub ProxyInfo: DNS_CONNECTION_PROXY_INFO,
                    pub dwInterfaceIndex: u32,
                    pub pwszConnectionName: super::super::Foundation::PWSTR,
                    pub fDirectConfiguration: super::super::Foundation::BOOL,
                    pub hConnection: super::super::Foundation::HANDLE,
                }
                impl DNS_CONNECTION_PROXY_INFO_EX {}
                unsafe impl ::windows::Abi for DNS_CONNECTION_PROXY_INFO_EX {
                    type Abi = Self;
                }
                pub const DNS_CONNECTION_PROXY_INFO_EXCEPTION_MAX_LENGTH: u32 =
                    1024u32;
                pub const DNS_CONNECTION_PROXY_INFO_EXTRA_INFO_MAX_LENGTH:
                    u32 = 1024u32;
                pub const DNS_CONNECTION_PROXY_INFO_FLAG_BYPASSLOCAL: u32 =
                    2u32;
                pub const DNS_CONNECTION_PROXY_INFO_FLAG_DISABLED: u32 = 1u32;
                pub const DNS_CONNECTION_PROXY_INFO_FRIENDLY_NAME_MAX_LENGTH : u32 = 64u32 ;
                pub const DNS_CONNECTION_PROXY_INFO_PASSWORD_MAX_LENGTH: u32 =
                    128u32;
                pub const DNS_CONNECTION_PROXY_INFO_SERVER_MAX_LENGTH: u32 =
                    256u32;
                #[derive(
                    :: std :: cmp :: PartialEq,
                    :: std :: cmp :: Eq,
                    :: std :: marker :: Copy,
                    :: std :: clone :: Clone,
                    :: std :: default :: Default,
                    :: std :: fmt :: Debug,
                )]
                #[repr(transparent)]
                pub struct DNS_CONNECTION_PROXY_INFO_SWITCH(pub i32);
                pub const DNS_CONNECTION_PROXY_INFO_SWITCH_CONFIG:
                    DNS_CONNECTION_PROXY_INFO_SWITCH =
                    DNS_CONNECTION_PROXY_INFO_SWITCH(0i32);
                pub const DNS_CONNECTION_PROXY_INFO_SWITCH_SCRIPT:
                    DNS_CONNECTION_PROXY_INFO_SWITCH =
                    DNS_CONNECTION_PROXY_INFO_SWITCH(1i32);
                pub const DNS_CONNECTION_PROXY_INFO_SWITCH_WPAD:
                    DNS_CONNECTION_PROXY_INFO_SWITCH =
                    DNS_CONNECTION_PROXY_INFO_SWITCH(2i32);
                impl ::std::convert::From<i32> for DNS_CONNECTION_PROXY_INFO_SWITCH {
                    fn from(value: i32) -> Self {
                        Self(value)
                    }
                }
                unsafe impl ::windows::Abi for DNS_CONNECTION_PROXY_INFO_SWITCH {
                    type Abi = Self;
                }
                pub const DNS_CONNECTION_PROXY_INFO_USERNAME_MAX_LENGTH: u32 =
                    128u32;
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_CONNECTION_PROXY_LIST {
                    pub cProxies: u32,
                    pub pProxies: *mut DNS_CONNECTION_PROXY_ELEMENT,
                }
                impl DNS_CONNECTION_PROXY_LIST {}
                impl ::std::default::Default for DNS_CONNECTION_PROXY_LIST {
                    fn default() -> Self {
                        Self {
                            cProxies: 0,
                            pProxies: ::std::ptr::null_mut(),
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_CONNECTION_PROXY_LIST {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_CONNECTION_PROXY_LIST")
                            .field("cProxies", &self.cProxies)
                            .field("pProxies", &self.pProxies)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_CONNECTION_PROXY_LIST {
                    fn eq(&self, other: &Self) -> bool {
                        self.cProxies == other.cProxies
                            && self.pProxies == other.pProxies
                    }
                }
                impl ::std::cmp::Eq for DNS_CONNECTION_PROXY_LIST {}
                unsafe impl ::windows::Abi for DNS_CONNECTION_PROXY_LIST {
                    type Abi = Self;
                }
                #[derive(
                    :: std :: cmp :: PartialEq,
                    :: std :: cmp :: Eq,
                    :: std :: marker :: Copy,
                    :: std :: clone :: Clone,
                    :: std :: default :: Default,
                    :: std :: fmt :: Debug,
                )]
                #[repr(transparent)]
                pub struct DNS_CONNECTION_PROXY_TYPE(pub i32);
                pub const DNS_CONNECTION_PROXY_TYPE_NULL:
                    DNS_CONNECTION_PROXY_TYPE =
                    DNS_CONNECTION_PROXY_TYPE(0i32);
                pub const DNS_CONNECTION_PROXY_TYPE_HTTP:
                    DNS_CONNECTION_PROXY_TYPE =
                    DNS_CONNECTION_PROXY_TYPE(1i32);
                pub const DNS_CONNECTION_PROXY_TYPE_WAP:
                    DNS_CONNECTION_PROXY_TYPE =
                    DNS_CONNECTION_PROXY_TYPE(2i32);
                pub const DNS_CONNECTION_PROXY_TYPE_SOCKS4:
                    DNS_CONNECTION_PROXY_TYPE =
                    DNS_CONNECTION_PROXY_TYPE(4i32);
                pub const DNS_CONNECTION_PROXY_TYPE_SOCKS5:
                    DNS_CONNECTION_PROXY_TYPE =
                    DNS_CONNECTION_PROXY_TYPE(5i32);
                impl ::std::convert::From<i32> for DNS_CONNECTION_PROXY_TYPE {
                    fn from(value: i32) -> Self {
                        Self(value)
                    }
                }
                unsafe impl ::windows::Abi for DNS_CONNECTION_PROXY_TYPE {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_DHCID_DATA {
                    pub dwByteCount: u32,
                    pub DHCID: [u8; 1],
                }
                impl DNS_DHCID_DATA {}
                impl ::std::default::Default for DNS_DHCID_DATA {
                    fn default() -> Self {
                        Self {
                            dwByteCount: 0,
                            DHCID: [0; 1],
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_DHCID_DATA {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_DHCID_DATA")
                            .field("dwByteCount", &self.dwByteCount)
                            .field("DHCID", &self.DHCID)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_DHCID_DATA {
                    fn eq(&self, other: &Self) -> bool {
                        self.dwByteCount == other.dwByteCount
                            && self.DHCID == other.DHCID
                    }
                }
                impl ::std::cmp::Eq for DNS_DHCID_DATA {}
                unsafe impl ::windows::Abi for DNS_DHCID_DATA {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_DS_DATA {
                    pub wKeyTag: u16,
                    pub chAlgorithm: u8,
                    pub chDigestType: u8,
                    pub wDigestLength: u16,
                    pub wPad: u16,
                    pub Digest: [u8; 1],
                }
                impl DNS_DS_DATA {}
                impl ::std::default::Default for DNS_DS_DATA {
                    fn default() -> Self {
                        Self {
                            wKeyTag: 0,
                            chAlgorithm: 0,
                            chDigestType: 0,
                            wDigestLength: 0,
                            wPad: 0,
                            Digest: [0; 1],
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_DS_DATA {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_DS_DATA")
                            .field("wKeyTag", &self.wKeyTag)
                            .field("chAlgorithm", &self.chAlgorithm)
                            .field("chDigestType", &self.chDigestType)
                            .field("wDigestLength", &self.wDigestLength)
                            .field("wPad", &self.wPad)
                            .field("Digest", &self.Digest)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_DS_DATA {
                    fn eq(&self, other: &Self) -> bool {
                        self.wKeyTag == other.wKeyTag
                            && self.chAlgorithm == other.chAlgorithm
                            && self.chDigestType == other.chDigestType
                            && self.wDigestLength == other.wDigestLength
                            && self.wPad == other.wPad
                            && self.Digest == other.Digest
                    }
                }
                impl ::std::cmp::Eq for DNS_DS_DATA {}
                unsafe impl ::windows::Abi for DNS_DS_DATA {
                    type Abi = Self;
                }
                #[derive(
                    :: std :: cmp :: PartialEq,
                    :: std :: cmp :: Eq,
                    :: std :: marker :: Copy,
                    :: std :: clone :: Clone,
                    :: std :: default :: Default,
                    :: std :: fmt :: Debug,
                )]
                #[repr(transparent)]
                pub struct DNS_FREE_TYPE(pub i32);
                pub const DnsFreeFlat: DNS_FREE_TYPE = DNS_FREE_TYPE(0i32);
                pub const DnsFreeRecordList: DNS_FREE_TYPE =
                    DNS_FREE_TYPE(1i32);
                pub const DnsFreeParsedMessageFields: DNS_FREE_TYPE =
                    DNS_FREE_TYPE(2i32);
                impl ::std::convert::From<i32> for DNS_FREE_TYPE {
                    fn from(value: i32) -> Self {
                        Self(value)
                    }
                }
                unsafe impl ::windows::Abi for DNS_FREE_TYPE {
                    type Abi = Self;
                }
                #[repr(C, packed(1))]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_HEADER {
                    pub Xid: u16,
                    pub _bitfield1: u8,
                    pub _bitfield2: u8,
                    pub QuestionCount: u16,
                    pub AnswerCount: u16,
                    pub NameServerCount: u16,
                    pub AdditionalCount: u16,
                }
                impl DNS_HEADER {}
                unsafe impl ::windows::Abi for DNS_HEADER {
                    type Abi = Self;
                }
                #[repr(C, packed(1))]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_HEADER_EXT {
                    pub _bitfield: u16,
                    pub chRcode: u8,
                    pub chVersion: u8,
                }
                impl DNS_HEADER_EXT {}
                unsafe impl ::windows::Abi for DNS_HEADER_EXT {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_KEY_DATA {
                    pub wFlags: u16,
                    pub chProtocol: u8,
                    pub chAlgorithm: u8,
                    pub wKeyLength: u16,
                    pub wPad: u16,
                    pub Key: [u8; 1],
                }
                impl DNS_KEY_DATA {}
                impl ::std::default::Default for DNS_KEY_DATA {
                    fn default() -> Self {
                        Self {
                            wFlags: 0,
                            chProtocol: 0,
                            chAlgorithm: 0,
                            wKeyLength: 0,
                            wPad: 0,
                            Key: [0; 1],
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_KEY_DATA {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_KEY_DATA")
                            .field("wFlags", &self.wFlags)
                            .field("chProtocol", &self.chProtocol)
                            .field("chAlgorithm", &self.chAlgorithm)
                            .field("wKeyLength", &self.wKeyLength)
                            .field("wPad", &self.wPad)
                            .field("Key", &self.Key)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_KEY_DATA {
                    fn eq(&self, other: &Self) -> bool {
                        self.wFlags == other.wFlags
                            && self.chProtocol == other.chProtocol
                            && self.chAlgorithm == other.chAlgorithm
                            && self.wKeyLength == other.wKeyLength
                            && self.wPad == other.wPad
                            && self.Key == other.Key
                    }
                }
                impl ::std::cmp::Eq for DNS_KEY_DATA {}
                unsafe impl ::windows::Abi for DNS_KEY_DATA {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_LOC_DATA {
                    pub wVersion: u16,
                    pub wSize: u16,
                    pub wHorPrec: u16,
                    pub wVerPrec: u16,
                    pub dwLatitude: u32,
                    pub dwLongitude: u32,
                    pub dwAltitude: u32,
                }
                impl DNS_LOC_DATA {}
                impl ::std::default::Default for DNS_LOC_DATA {
                    fn default() -> Self {
                        Self {
                            wVersion: 0,
                            wSize: 0,
                            wHorPrec: 0,
                            wVerPrec: 0,
                            dwLatitude: 0,
                            dwLongitude: 0,
                            dwAltitude: 0,
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_LOC_DATA {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_LOC_DATA")
                            .field("wVersion", &self.wVersion)
                            .field("wSize", &self.wSize)
                            .field("wHorPrec", &self.wHorPrec)
                            .field("wVerPrec", &self.wVerPrec)
                            .field("dwLatitude", &self.dwLatitude)
                            .field("dwLongitude", &self.dwLongitude)
                            .field("dwAltitude", &self.dwAltitude)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_LOC_DATA {
                    fn eq(&self, other: &Self) -> bool {
                        self.wVersion == other.wVersion
                            && self.wSize == other.wSize
                            && self.wHorPrec == other.wHorPrec
                            && self.wVerPrec == other.wVerPrec
                            && self.dwLatitude == other.dwLatitude
                            && self.dwLongitude == other.dwLongitude
                            && self.dwAltitude == other.dwAltitude
                    }
                }
                impl ::std::cmp::Eq for DNS_LOC_DATA {}
                unsafe impl ::windows::Abi for DNS_LOC_DATA {
                    type Abi = Self;
                }
                pub const DNS_MAX_IP4_REVERSE_NAME_LENGTH: u32 = 31u32;
                pub const DNS_MAX_IP6_REVERSE_NAME_LENGTH: u32 = 75u32;
                pub const DNS_MAX_LABEL_BUFFER_LENGTH: u32 = 64u32;
                pub const DNS_MAX_LABEL_LENGTH: u32 = 63u32;
                pub const DNS_MAX_NAME_BUFFER_LENGTH: u32 = 256u32;
                pub const DNS_MAX_NAME_LENGTH: u32 = 255u32;
                pub const DNS_MAX_TEXT_STRING_LENGTH: u32 = 255u32;
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_MESSAGE_BUFFER {
                    pub MessageHead: DNS_HEADER,
                    pub MessageBody:
                        [super::super::System::SystemServices::CHAR; 1],
                }
                impl DNS_MESSAGE_BUFFER {}
                unsafe impl ::windows::Abi for DNS_MESSAGE_BUFFER {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_MINFO_DATAA {
                    pub pNameMailbox: super::super::Foundation::PSTR,
                    pub pNameErrorsMailbox: super::super::Foundation::PSTR,
                }
                impl DNS_MINFO_DATAA {}
                impl ::std::default::Default for DNS_MINFO_DATAA {
                    fn default() -> Self {
                        Self {
                            pNameMailbox: ::std::default::Default::default(),
                            pNameErrorsMailbox:
                                ::std::default::Default::default(),
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_MINFO_DATAA {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_MINFO_DATAA")
                            .field("pNameMailbox", &self.pNameMailbox)
                            .field(
                                "pNameErrorsMailbox",
                                &self.pNameErrorsMailbox,
                            )
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_MINFO_DATAA {
                    fn eq(&self, other: &Self) -> bool {
                        self.pNameMailbox == other.pNameMailbox
                            && self.pNameErrorsMailbox
                                == other.pNameErrorsMailbox
                    }
                }
                impl ::std::cmp::Eq for DNS_MINFO_DATAA {}
                unsafe impl ::windows::Abi for DNS_MINFO_DATAA {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_MINFO_DATAW {
                    pub pNameMailbox: super::super::Foundation::PWSTR,
                    pub pNameErrorsMailbox: super::super::Foundation::PWSTR,
                }
                impl DNS_MINFO_DATAW {}
                impl ::std::default::Default for DNS_MINFO_DATAW {
                    fn default() -> Self {
                        Self {
                            pNameMailbox: ::std::default::Default::default(),
                            pNameErrorsMailbox:
                                ::std::default::Default::default(),
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_MINFO_DATAW {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_MINFO_DATAW")
                            .field("pNameMailbox", &self.pNameMailbox)
                            .field(
                                "pNameErrorsMailbox",
                                &self.pNameErrorsMailbox,
                            )
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_MINFO_DATAW {
                    fn eq(&self, other: &Self) -> bool {
                        self.pNameMailbox == other.pNameMailbox
                            && self.pNameErrorsMailbox
                                == other.pNameErrorsMailbox
                    }
                }
                impl ::std::cmp::Eq for DNS_MINFO_DATAW {}
                unsafe impl ::windows::Abi for DNS_MINFO_DATAW {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_MX_DATAA {
                    pub pNameExchange: super::super::Foundation::PSTR,
                    pub wPreference: u16,
                    pub Pad: u16,
                }
                impl DNS_MX_DATAA {}
                impl ::std::default::Default for DNS_MX_DATAA {
                    fn default() -> Self {
                        Self {
                            pNameExchange: ::std::default::Default::default(),
                            wPreference: 0,
                            Pad: 0,
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_MX_DATAA {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_MX_DATAA")
                            .field("pNameExchange", &self.pNameExchange)
                            .field("wPreference", &self.wPreference)
                            .field("Pad", &self.Pad)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_MX_DATAA {
                    fn eq(&self, other: &Self) -> bool {
                        self.pNameExchange == other.pNameExchange
                            && self.wPreference == other.wPreference
                            && self.Pad == other.Pad
                    }
                }
                impl ::std::cmp::Eq for DNS_MX_DATAA {}
                unsafe impl ::windows::Abi for DNS_MX_DATAA {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_MX_DATAW {
                    pub pNameExchange: super::super::Foundation::PWSTR,
                    pub wPreference: u16,
                    pub Pad: u16,
                }
                impl DNS_MX_DATAW {}
                impl ::std::default::Default for DNS_MX_DATAW {
                    fn default() -> Self {
                        Self {
                            pNameExchange: ::std::default::Default::default(),
                            wPreference: 0,
                            Pad: 0,
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_MX_DATAW {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_MX_DATAW")
                            .field("pNameExchange", &self.pNameExchange)
                            .field("wPreference", &self.wPreference)
                            .field("Pad", &self.Pad)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_MX_DATAW {
                    fn eq(&self, other: &Self) -> bool {
                        self.pNameExchange == other.pNameExchange
                            && self.wPreference == other.wPreference
                            && self.Pad == other.Pad
                    }
                }
                impl ::std::cmp::Eq for DNS_MX_DATAW {}
                unsafe impl ::windows::Abi for DNS_MX_DATAW {
                    type Abi = Self;
                }
                #[derive(
                    :: std :: cmp :: PartialEq,
                    :: std :: cmp :: Eq,
                    :: std :: marker :: Copy,
                    :: std :: clone :: Clone,
                    :: std :: default :: Default,
                    :: std :: fmt :: Debug,
                )]
                #[repr(transparent)]
                pub struct DNS_NAME_FORMAT(pub i32);
                pub const DnsNameDomain: DNS_NAME_FORMAT =
                    DNS_NAME_FORMAT(0i32);
                pub const DnsNameDomainLabel: DNS_NAME_FORMAT =
                    DNS_NAME_FORMAT(1i32);
                pub const DnsNameHostnameFull: DNS_NAME_FORMAT =
                    DNS_NAME_FORMAT(2i32);
                pub const DnsNameHostnameLabel: DNS_NAME_FORMAT =
                    DNS_NAME_FORMAT(3i32);
                pub const DnsNameWildcard: DNS_NAME_FORMAT =
                    DNS_NAME_FORMAT(4i32);
                pub const DnsNameSrvRecord: DNS_NAME_FORMAT =
                    DNS_NAME_FORMAT(5i32);
                pub const DnsNameValidateTld: DNS_NAME_FORMAT =
                    DNS_NAME_FORMAT(6i32);
                impl ::std::convert::From<i32> for DNS_NAME_FORMAT {
                    fn from(value: i32) -> Self {
                        Self(value)
                    }
                }
                unsafe impl ::windows::Abi for DNS_NAME_FORMAT {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_NAPTR_DATAA {
                    pub wOrder: u16,
                    pub wPreference: u16,
                    pub pFlags: super::super::Foundation::PSTR,
                    pub pService: super::super::Foundation::PSTR,
                    pub pRegularExpression: super::super::Foundation::PSTR,
                    pub pReplacement: super::super::Foundation::PSTR,
                }
                impl DNS_NAPTR_DATAA {}
                impl ::std::default::Default for DNS_NAPTR_DATAA {
                    fn default() -> Self {
                        Self {
                            wOrder: 0,
                            wPreference: 0,
                            pFlags: ::std::default::Default::default(),
                            pService: ::std::default::Default::default(),
                            pRegularExpression:
                                ::std::default::Default::default(),
                            pReplacement: ::std::default::Default::default(),
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_NAPTR_DATAA {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_NAPTR_DATAA")
                            .field("wOrder", &self.wOrder)
                            .field("wPreference", &self.wPreference)
                            .field("pFlags", &self.pFlags)
                            .field("pService", &self.pService)
                            .field(
                                "pRegularExpression",
                                &self.pRegularExpression,
                            )
                            .field("pReplacement", &self.pReplacement)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_NAPTR_DATAA {
                    fn eq(&self, other: &Self) -> bool {
                        self.wOrder == other.wOrder
                            && self.wPreference == other.wPreference
                            && self.pFlags == other.pFlags
                            && self.pService == other.pService
                            && self.pRegularExpression
                                == other.pRegularExpression
                            && self.pReplacement == other.pReplacement
                    }
                }
                impl ::std::cmp::Eq for DNS_NAPTR_DATAA {}
                unsafe impl ::windows::Abi for DNS_NAPTR_DATAA {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_NAPTR_DATAW {
                    pub wOrder: u16,
                    pub wPreference: u16,
                    pub pFlags: super::super::Foundation::PWSTR,
                    pub pService: super::super::Foundation::PWSTR,
                    pub pRegularExpression: super::super::Foundation::PWSTR,
                    pub pReplacement: super::super::Foundation::PWSTR,
                }
                impl DNS_NAPTR_DATAW {}
                impl ::std::default::Default for DNS_NAPTR_DATAW {
                    fn default() -> Self {
                        Self {
                            wOrder: 0,
                            wPreference: 0,
                            pFlags: ::std::default::Default::default(),
                            pService: ::std::default::Default::default(),
                            pRegularExpression:
                                ::std::default::Default::default(),
                            pReplacement: ::std::default::Default::default(),
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_NAPTR_DATAW {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_NAPTR_DATAW")
                            .field("wOrder", &self.wOrder)
                            .field("wPreference", &self.wPreference)
                            .field("pFlags", &self.pFlags)
                            .field("pService", &self.pService)
                            .field(
                                "pRegularExpression",
                                &self.pRegularExpression,
                            )
                            .field("pReplacement", &self.pReplacement)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_NAPTR_DATAW {
                    fn eq(&self, other: &Self) -> bool {
                        self.wOrder == other.wOrder
                            && self.wPreference == other.wPreference
                            && self.pFlags == other.pFlags
                            && self.pService == other.pService
                            && self.pRegularExpression
                                == other.pRegularExpression
                            && self.pReplacement == other.pReplacement
                    }
                }
                impl ::std::cmp::Eq for DNS_NAPTR_DATAW {}
                unsafe impl ::windows::Abi for DNS_NAPTR_DATAW {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_NSEC3PARAM_DATA {
                    pub chAlgorithm: u8,
                    pub bFlags: u8,
                    pub wIterations: u16,
                    pub bSaltLength: u8,
                    pub bPad: [u8; 3],
                    pub pbSalt: [u8; 1],
                }
                impl DNS_NSEC3PARAM_DATA {}
                impl ::std::default::Default for DNS_NSEC3PARAM_DATA {
                    fn default() -> Self {
                        Self {
                            chAlgorithm: 0,
                            bFlags: 0,
                            wIterations: 0,
                            bSaltLength: 0,
                            bPad: [0; 3],
                            pbSalt: [0; 1],
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_NSEC3PARAM_DATA {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_NSEC3PARAM_DATA")
                            .field("chAlgorithm", &self.chAlgorithm)
                            .field("bFlags", &self.bFlags)
                            .field("wIterations", &self.wIterations)
                            .field("bSaltLength", &self.bSaltLength)
                            .field("bPad", &self.bPad)
                            .field("pbSalt", &self.pbSalt)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_NSEC3PARAM_DATA {
                    fn eq(&self, other: &Self) -> bool {
                        self.chAlgorithm == other.chAlgorithm
                            && self.bFlags == other.bFlags
                            && self.wIterations == other.wIterations
                            && self.bSaltLength == other.bSaltLength
                            && self.bPad == other.bPad
                            && self.pbSalt == other.pbSalt
                    }
                }
                impl ::std::cmp::Eq for DNS_NSEC3PARAM_DATA {}
                unsafe impl ::windows::Abi for DNS_NSEC3PARAM_DATA {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_NSEC3_DATA {
                    pub chAlgorithm: u8,
                    pub bFlags: u8,
                    pub wIterations: u16,
                    pub bSaltLength: u8,
                    pub bHashLength: u8,
                    pub wTypeBitMapsLength: u16,
                    pub chData: [u8; 1],
                }
                impl DNS_NSEC3_DATA {}
                impl ::std::default::Default for DNS_NSEC3_DATA {
                    fn default() -> Self {
                        Self {
                            chAlgorithm: 0,
                            bFlags: 0,
                            wIterations: 0,
                            bSaltLength: 0,
                            bHashLength: 0,
                            wTypeBitMapsLength: 0,
                            chData: [0; 1],
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_NSEC3_DATA {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_NSEC3_DATA")
                            .field("chAlgorithm", &self.chAlgorithm)
                            .field("bFlags", &self.bFlags)
                            .field("wIterations", &self.wIterations)
                            .field("bSaltLength", &self.bSaltLength)
                            .field("bHashLength", &self.bHashLength)
                            .field(
                                "wTypeBitMapsLength",
                                &self.wTypeBitMapsLength,
                            )
                            .field("chData", &self.chData)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_NSEC3_DATA {
                    fn eq(&self, other: &Self) -> bool {
                        self.chAlgorithm == other.chAlgorithm
                            && self.bFlags == other.bFlags
                            && self.wIterations == other.wIterations
                            && self.bSaltLength == other.bSaltLength
                            && self.bHashLength == other.bHashLength
                            && self.wTypeBitMapsLength
                                == other.wTypeBitMapsLength
                            && self.chData == other.chData
                    }
                }
                impl ::std::cmp::Eq for DNS_NSEC3_DATA {}
                unsafe impl ::windows::Abi for DNS_NSEC3_DATA {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_NSEC_DATAA {
                    pub pNextDomainName: super::super::Foundation::PSTR,
                    pub wTypeBitMapsLength: u16,
                    pub wPad: u16,
                    pub TypeBitMaps: [u8; 1],
                }
                impl DNS_NSEC_DATAA {}
                impl ::std::default::Default for DNS_NSEC_DATAA {
                    fn default() -> Self {
                        Self {
                            pNextDomainName: ::std::default::Default::default(
                            ),
                            wTypeBitMapsLength: 0,
                            wPad: 0,
                            TypeBitMaps: [0; 1],
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_NSEC_DATAA {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_NSEC_DATAA")
                            .field("pNextDomainName", &self.pNextDomainName)
                            .field(
                                "wTypeBitMapsLength",
                                &self.wTypeBitMapsLength,
                            )
                            .field("wPad", &self.wPad)
                            .field("TypeBitMaps", &self.TypeBitMaps)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_NSEC_DATAA {
                    fn eq(&self, other: &Self) -> bool {
                        self.pNextDomainName == other.pNextDomainName
                            && self.wTypeBitMapsLength
                                == other.wTypeBitMapsLength
                            && self.wPad == other.wPad
                            && self.TypeBitMaps == other.TypeBitMaps
                    }
                }
                impl ::std::cmp::Eq for DNS_NSEC_DATAA {}
                unsafe impl ::windows::Abi for DNS_NSEC_DATAA {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_NSEC_DATAW {
                    pub pNextDomainName: super::super::Foundation::PWSTR,
                    pub wTypeBitMapsLength: u16,
                    pub wPad: u16,
                    pub TypeBitMaps: [u8; 1],
                }
                impl DNS_NSEC_DATAW {}
                impl ::std::default::Default for DNS_NSEC_DATAW {
                    fn default() -> Self {
                        Self {
                            pNextDomainName: ::std::default::Default::default(
                            ),
                            wTypeBitMapsLength: 0,
                            wPad: 0,
                            TypeBitMaps: [0; 1],
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_NSEC_DATAW {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_NSEC_DATAW")
                            .field("pNextDomainName", &self.pNextDomainName)
                            .field(
                                "wTypeBitMapsLength",
                                &self.wTypeBitMapsLength,
                            )
                            .field("wPad", &self.wPad)
                            .field("TypeBitMaps", &self.TypeBitMaps)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_NSEC_DATAW {
                    fn eq(&self, other: &Self) -> bool {
                        self.pNextDomainName == other.pNextDomainName
                            && self.wTypeBitMapsLength
                                == other.wTypeBitMapsLength
                            && self.wPad == other.wPad
                            && self.TypeBitMaps == other.TypeBitMaps
                    }
                }
                impl ::std::cmp::Eq for DNS_NSEC_DATAW {}
                unsafe impl ::windows::Abi for DNS_NSEC_DATAW {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_NULL_DATA {
                    pub dwByteCount: u32,
                    pub Data: [u8; 1],
                }
                impl DNS_NULL_DATA {}
                impl ::std::default::Default for DNS_NULL_DATA {
                    fn default() -> Self {
                        Self {
                            dwByteCount: 0,
                            Data: [0; 1],
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_NULL_DATA {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_NULL_DATA")
                            .field("dwByteCount", &self.dwByteCount)
                            .field("Data", &self.Data)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_NULL_DATA {
                    fn eq(&self, other: &Self) -> bool {
                        self.dwByteCount == other.dwByteCount
                            && self.Data == other.Data
                    }
                }
                impl ::std::cmp::Eq for DNS_NULL_DATA {}
                unsafe impl ::windows::Abi for DNS_NULL_DATA {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_NXT_DATAA {
                    pub pNameNext: super::super::Foundation::PSTR,
                    pub wNumTypes: u16,
                    pub wTypes: [u16; 1],
                }
                impl DNS_NXT_DATAA {}
                impl ::std::default::Default for DNS_NXT_DATAA {
                    fn default() -> Self {
                        Self {
                            pNameNext: ::std::default::Default::default(),
                            wNumTypes: 0,
                            wTypes: [0; 1],
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_NXT_DATAA {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_NXT_DATAA")
                            .field("pNameNext", &self.pNameNext)
                            .field("wNumTypes", &self.wNumTypes)
                            .field("wTypes", &self.wTypes)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_NXT_DATAA {
                    fn eq(&self, other: &Self) -> bool {
                        self.pNameNext == other.pNameNext
                            && self.wNumTypes == other.wNumTypes
                            && self.wTypes == other.wTypes
                    }
                }
                impl ::std::cmp::Eq for DNS_NXT_DATAA {}
                unsafe impl ::windows::Abi for DNS_NXT_DATAA {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_NXT_DATAW {
                    pub pNameNext: super::super::Foundation::PWSTR,
                    pub wNumTypes: u16,
                    pub wTypes: [u16; 1],
                }
                impl DNS_NXT_DATAW {}
                impl ::std::default::Default for DNS_NXT_DATAW {
                    fn default() -> Self {
                        Self {
                            pNameNext: ::std::default::Default::default(),
                            wNumTypes: 0,
                            wTypes: [0; 1],
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_NXT_DATAW {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_NXT_DATAW")
                            .field("pNameNext", &self.pNameNext)
                            .field("wNumTypes", &self.wNumTypes)
                            .field("wTypes", &self.wTypes)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_NXT_DATAW {
                    fn eq(&self, other: &Self) -> bool {
                        self.pNameNext == other.pNameNext
                            && self.wNumTypes == other.wNumTypes
                            && self.wTypes == other.wTypes
                    }
                }
                impl ::std::cmp::Eq for DNS_NXT_DATAW {}
                unsafe impl ::windows::Abi for DNS_NXT_DATAW {
                    type Abi = Self;
                }
                pub const DNS_OPCODE_IQUERY: u32 = 1u32;
                pub const DNS_OPCODE_NOTIFY: u32 = 4u32;
                pub const DNS_OPCODE_QUERY: u32 = 0u32;
                pub const DNS_OPCODE_SERVER_STATUS: u32 = 2u32;
                pub const DNS_OPCODE_UNKNOWN: u32 = 3u32;
                pub const DNS_OPCODE_UPDATE: u32 = 5u32;
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_OPT_DATA {
                    pub wDataLength: u16,
                    pub wPad: u16,
                    pub Data: [u8; 1],
                }
                impl DNS_OPT_DATA {}
                impl ::std::default::Default for DNS_OPT_DATA {
                    fn default() -> Self {
                        Self {
                            wDataLength: 0,
                            wPad: 0,
                            Data: [0; 1],
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_OPT_DATA {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_OPT_DATA")
                            .field("wDataLength", &self.wDataLength)
                            .field("wPad", &self.wPad)
                            .field("Data", &self.Data)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_OPT_DATA {
                    fn eq(&self, other: &Self) -> bool {
                        self.wDataLength == other.wDataLength
                            && self.wPad == other.wPad
                            && self.Data == other.Data
                    }
                }
                impl ::std::cmp::Eq for DNS_OPT_DATA {}
                unsafe impl ::windows::Abi for DNS_OPT_DATA {
                    type Abi = Self;
                }
                pub const DNS_PORT_HOST_ORDER: u32 = 53u32;
                pub const DNS_PORT_NET_ORDER: u32 = 13568u32;
                pub type DNS_PROXY_COMPLETION_ROUTINE =
                    unsafe extern "system" fn(
                        completioncontext: *mut ::std::ffi::c_void,
                        status: i32,
                    );
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_PROXY_INFORMATION {
                    pub version: u32,
                    pub proxyInformationType: DNS_PROXY_INFORMATION_TYPE,
                    pub proxyName: super::super::Foundation::PWSTR,
                }
                impl DNS_PROXY_INFORMATION {}
                impl ::std::default::Default for DNS_PROXY_INFORMATION {
                    fn default() -> Self {
                        Self {
                            version: 0,
                            proxyInformationType:
                                ::std::default::Default::default(),
                            proxyName: ::std::default::Default::default(),
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_PROXY_INFORMATION {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_PROXY_INFORMATION")
                            .field("version", &self.version)
                            .field(
                                "proxyInformationType",
                                &self.proxyInformationType,
                            )
                            .field("proxyName", &self.proxyName)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_PROXY_INFORMATION {
                    fn eq(&self, other: &Self) -> bool {
                        self.version == other.version
                            && self.proxyInformationType
                                == other.proxyInformationType
                            && self.proxyName == other.proxyName
                    }
                }
                impl ::std::cmp::Eq for DNS_PROXY_INFORMATION {}
                unsafe impl ::windows::Abi for DNS_PROXY_INFORMATION {
                    type Abi = Self;
                }
                #[derive(
                    :: std :: cmp :: PartialEq,
                    :: std :: cmp :: Eq,
                    :: std :: marker :: Copy,
                    :: std :: clone :: Clone,
                    :: std :: default :: Default,
                    :: std :: fmt :: Debug,
                )]
                #[repr(transparent)]
                pub struct DNS_PROXY_INFORMATION_TYPE(pub i32);
                pub const DNS_PROXY_INFORMATION_DIRECT:
                    DNS_PROXY_INFORMATION_TYPE =
                    DNS_PROXY_INFORMATION_TYPE(0i32);
                pub const DNS_PROXY_INFORMATION_DEFAULT_SETTINGS:
                    DNS_PROXY_INFORMATION_TYPE =
                    DNS_PROXY_INFORMATION_TYPE(1i32);
                pub const DNS_PROXY_INFORMATION_PROXY_NAME:
                    DNS_PROXY_INFORMATION_TYPE =
                    DNS_PROXY_INFORMATION_TYPE(2i32);
                pub const DNS_PROXY_INFORMATION_DOES_NOT_EXIST:
                    DNS_PROXY_INFORMATION_TYPE =
                    DNS_PROXY_INFORMATION_TYPE(3i32);
                impl ::std::convert::From<i32> for DNS_PROXY_INFORMATION_TYPE {
                    fn from(value: i32) -> Self {
                        Self(value)
                    }
                }
                unsafe impl ::windows::Abi for DNS_PROXY_INFORMATION_TYPE {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_PTR_DATAA {
                    pub pNameHost: super::super::Foundation::PSTR,
                }
                impl DNS_PTR_DATAA {}
                impl ::std::default::Default for DNS_PTR_DATAA {
                    fn default() -> Self {
                        Self {
                            pNameHost: ::std::default::Default::default(),
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_PTR_DATAA {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_PTR_DATAA")
                            .field("pNameHost", &self.pNameHost)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_PTR_DATAA {
                    fn eq(&self, other: &Self) -> bool {
                        self.pNameHost == other.pNameHost
                    }
                }
                impl ::std::cmp::Eq for DNS_PTR_DATAA {}
                unsafe impl ::windows::Abi for DNS_PTR_DATAA {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_PTR_DATAW {
                    pub pNameHost: super::super::Foundation::PWSTR,
                }
                impl DNS_PTR_DATAW {}
                impl ::std::default::Default for DNS_PTR_DATAW {
                    fn default() -> Self {
                        Self {
                            pNameHost: ::std::default::Default::default(),
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_PTR_DATAW {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_PTR_DATAW")
                            .field("pNameHost", &self.pNameHost)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_PTR_DATAW {
                    fn eq(&self, other: &Self) -> bool {
                        self.pNameHost == other.pNameHost
                    }
                }
                impl ::std::cmp::Eq for DNS_PTR_DATAW {}
                unsafe impl ::windows::Abi for DNS_PTR_DATAW {
                    type Abi = Self;
                }
                pub const DNS_QUERY_ACCEPT_TRUNCATED_RESPONSE: u32 = 1u32;
                pub const DNS_QUERY_ADDRCONFIG: u32 = 8192u32;
                pub const DNS_QUERY_APPEND_MULTILABEL: u32 = 8388608u32;
                pub const DNS_QUERY_BYPASS_CACHE: u32 = 8u32;
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_QUERY_CANCEL {
                    pub Reserved:
                        [super::super::System::SystemServices::CHAR; 32],
                }
                impl DNS_QUERY_CANCEL {}
                impl ::std::default::Default for DNS_QUERY_CANCEL {
                    fn default() -> Self {
                        Self {
                            Reserved: [::std::default::Default::default(); 32],
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_QUERY_CANCEL {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_QUERY_CANCEL")
                            .field("Reserved", &self.Reserved)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_QUERY_CANCEL {
                    fn eq(&self, other: &Self) -> bool {
                        self.Reserved == other.Reserved
                    }
                }
                impl ::std::cmp::Eq for DNS_QUERY_CANCEL {}
                unsafe impl ::windows::Abi for DNS_QUERY_CANCEL {
                    type Abi = Self;
                }
                pub const DNS_QUERY_DISABLE_IDN_ENCODING: u32 = 2097152u32;
                pub const DNS_QUERY_DNSSEC_CHECKING_DISABLED: u32 =
                    33554432u32;
                pub const DNS_QUERY_DNSSEC_OK: u32 = 16777216u32;
                pub const DNS_QUERY_DONT_RESET_TTL_VALUES: u32 = 1048576u32;
                pub const DNS_QUERY_DUAL_ADDR: u32 = 16384u32;
                pub const DNS_QUERY_MULTICAST_ONLY: u32 = 1024u32;
                pub const DNS_QUERY_NO_HOSTS_FILE: u32 = 64u32;
                pub const DNS_QUERY_NO_LOCAL_NAME: u32 = 32u32;
                pub const DNS_QUERY_NO_MULTICAST: u32 = 2048u32;
                pub const DNS_QUERY_NO_NETBT: u32 = 128u32;
                pub const DNS_QUERY_NO_RECURSION: u32 = 4u32;
                pub const DNS_QUERY_NO_WIRE_QUERY: u32 = 16u32;
                #[repr(C)]
                #[derive(:: std :: clone :: Clone)]
                pub struct DNS_QUERY_REQUEST {
                    pub Version: u32,
                    pub QueryName: super::super::Foundation::PWSTR,
                    pub QueryType: u16,
                    pub QueryOptions: u64,
                    pub pDnsServerList: *mut DNS_ADDR_ARRAY,
                    pub InterfaceIndex: u32,
                    pub pQueryCompletionCallback:
                        ::std::option::Option<PDNS_QUERY_COMPLETION_ROUTINE>,
                    pub pQueryContext: *mut ::std::ffi::c_void,
                }
                impl DNS_QUERY_REQUEST {}
                impl ::std::default::Default for DNS_QUERY_REQUEST {
                    fn default() -> Self {
                        Self {
                            Version: 0,
                            QueryName: ::std::default::Default::default(),
                            QueryType: 0,
                            QueryOptions: 0,
                            pDnsServerList: ::std::ptr::null_mut(),
                            InterfaceIndex: 0,
                            pQueryCompletionCallback:
                                ::std::default::Default::default(),
                            pQueryContext: ::std::ptr::null_mut(),
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_QUERY_REQUEST {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_QUERY_REQUEST")
                            .field("Version", &self.Version)
                            .field("QueryName", &self.QueryName)
                            .field("QueryType", &self.QueryType)
                            .field("QueryOptions", &self.QueryOptions)
                            .field("pDnsServerList", &self.pDnsServerList)
                            .field("InterfaceIndex", &self.InterfaceIndex)
                            .field("pQueryContext", &self.pQueryContext)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_QUERY_REQUEST {
                    fn eq(&self, other: &Self) -> bool {
                        self.Version == other.Version
                            && self.QueryName == other.QueryName
                            && self.QueryType == other.QueryType
                            && self.QueryOptions == other.QueryOptions
                            && self.pDnsServerList == other.pDnsServerList
                            && self.InterfaceIndex == other.InterfaceIndex
                            && self
                                .pQueryCompletionCallback
                                .map(|f| f as usize)
                                == other
                                    .pQueryCompletionCallback
                                    .map(|f| f as usize)
                            && self.pQueryContext == other.pQueryContext
                    }
                }
                impl ::std::cmp::Eq for DNS_QUERY_REQUEST {}
                #[repr(C)]
                #[doc(hidden)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_QUERY_REQUEST_abi {
                    pub Version: u32,
                    pub QueryName: super::super::Foundation::PWSTR,
                    pub QueryType: u16,
                    pub QueryOptions: u64,
                    pub pDnsServerList: *mut DNS_ADDR_ARRAY,
                    pub InterfaceIndex: u32,
                    pub pQueryCompletionCallback: ::windows::RawPtr,
                    pub pQueryContext: *mut ::std::ffi::c_void,
                }
                unsafe impl ::windows::Abi for DNS_QUERY_REQUEST {
                    type Abi = DNS_QUERY_REQUEST_abi;
                }
                pub const DNS_QUERY_REQUEST_VERSION1: u32 = 1u32;
                pub const DNS_QUERY_RESERVED: u32 = 4026531840u32;
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_QUERY_RESULT {
                    pub Version: u32,
                    pub QueryStatus: i32,
                    pub QueryOptions: u64,
                    pub pQueryRecords: *mut DNS_RECORDA,
                    pub Reserved: *mut ::std::ffi::c_void,
                }
                impl DNS_QUERY_RESULT {}
                impl ::std::default::Default for DNS_QUERY_RESULT {
                    fn default() -> Self {
                        Self {
                            Version: 0,
                            QueryStatus: 0,
                            QueryOptions: 0,
                            pQueryRecords: ::std::ptr::null_mut(),
                            Reserved: ::std::ptr::null_mut(),
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_QUERY_RESULT {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_QUERY_RESULT")
                            .field("Version", &self.Version)
                            .field("QueryStatus", &self.QueryStatus)
                            .field("QueryOptions", &self.QueryOptions)
                            .field("pQueryRecords", &self.pQueryRecords)
                            .field("Reserved", &self.Reserved)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_QUERY_RESULT {
                    fn eq(&self, other: &Self) -> bool {
                        self.Version == other.Version
                            && self.QueryStatus == other.QueryStatus
                            && self.QueryOptions == other.QueryOptions
                            && self.pQueryRecords == other.pQueryRecords
                            && self.Reserved == other.Reserved
                    }
                }
                impl ::std::cmp::Eq for DNS_QUERY_RESULT {}
                unsafe impl ::windows::Abi for DNS_QUERY_RESULT {
                    type Abi = Self;
                }
                pub const DNS_QUERY_RESULTS_VERSION1: u32 = 1u32;
                pub const DNS_QUERY_RETURN_MESSAGE: u32 = 512u32;
                pub const DNS_QUERY_STANDARD: u32 = 0u32;
                pub const DNS_QUERY_TREAT_AS_FQDN: u32 = 4096u32;
                pub const DNS_QUERY_USE_TCP_ONLY: u32 = 2u32;
                pub const DNS_QUERY_WIRE_ONLY: u32 = 256u32;
                pub const DNS_RCLASS_ALL: u32 = 65280u32;
                pub const DNS_RCLASS_ANY: u32 = 65280u32;
                pub const DNS_RCLASS_CHAOS: u32 = 768u32;
                pub const DNS_RCLASS_CSNET: u32 = 512u32;
                pub const DNS_RCLASS_HESIOD: u32 = 1024u32;
                pub const DNS_RCLASS_INTERNET: u32 = 256u32;
                pub const DNS_RCLASS_NONE: u32 = 65024u32;
                pub const DNS_RCLASS_UNICAST_RESPONSE: u32 = 128u32;
                pub const DNS_RCODE_BADKEY: u32 = 17u32;
                pub const DNS_RCODE_BADSIG: u32 = 16u32;
                pub const DNS_RCODE_BADTIME: u32 = 18u32;
                pub const DNS_RCODE_BADVERS: u32 = 16u32;
                pub const DNS_RCODE_FORMERR: u32 = 1u32;
                pub const DNS_RCODE_MAX: u32 = 15u32;
                pub const DNS_RCODE_NOERROR: u32 = 0u32;
                pub const DNS_RCODE_NOTAUTH: u32 = 9u32;
                pub const DNS_RCODE_NOTIMPL: u32 = 4u32;
                pub const DNS_RCODE_NOTZONE: u32 = 10u32;
                pub const DNS_RCODE_NXDOMAIN: u32 = 3u32;
                pub const DNS_RCODE_NXRRSET: u32 = 8u32;
                pub const DNS_RCODE_REFUSED: u32 = 5u32;
                pub const DNS_RCODE_SERVFAIL: u32 = 2u32;
                pub const DNS_RCODE_YXDOMAIN: u32 = 6u32;
                pub const DNS_RCODE_YXRRSET: u32 = 7u32;
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_RECORDA {
                    pub pNext: *mut DNS_RECORDA,
                    pub pName: super::super::Foundation::PSTR,
                    pub wType: u16,
                    pub wDataLength: u16,
                    pub Flags: DNS_RECORDA_1,
                    pub dwTtl: u32,
                    pub dwReserved: u32,
                    pub Data: DNS_RECORDA_0,
                }
                impl DNS_RECORDA {}
                unsafe impl ::windows::Abi for DNS_RECORDA {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub union DNS_RECORDA_0 {
                    pub A: DNS_A_DATA,
                    pub SOA: DNS_SOA_DATAA,
                    pub Soa: DNS_SOA_DATAA,
                    pub PTR: DNS_PTR_DATAA,
                    pub Ptr: DNS_PTR_DATAA,
                    pub NS: DNS_PTR_DATAA,
                    pub Ns: DNS_PTR_DATAA,
                    pub CNAME: DNS_PTR_DATAA,
                    pub Cname: DNS_PTR_DATAA,
                    pub DNAME: DNS_PTR_DATAA,
                    pub Dname: DNS_PTR_DATAA,
                    pub MB: DNS_PTR_DATAA,
                    pub Mb: DNS_PTR_DATAA,
                    pub MD: DNS_PTR_DATAA,
                    pub Md: DNS_PTR_DATAA,
                    pub MF: DNS_PTR_DATAA,
                    pub Mf: DNS_PTR_DATAA,
                    pub MG: DNS_PTR_DATAA,
                    pub Mg: DNS_PTR_DATAA,
                    pub MR: DNS_PTR_DATAA,
                    pub Mr: DNS_PTR_DATAA,
                    pub MINFO: DNS_MINFO_DATAA,
                    pub Minfo: DNS_MINFO_DATAA,
                    pub RP: DNS_MINFO_DATAA,
                    pub Rp: DNS_MINFO_DATAA,
                    pub MX: DNS_MX_DATAA,
                    pub Mx: DNS_MX_DATAA,
                    pub AFSDB: DNS_MX_DATAA,
                    pub Afsdb: DNS_MX_DATAA,
                    pub RT: DNS_MX_DATAA,
                    pub Rt: DNS_MX_DATAA,
                    pub HINFO: DNS_TXT_DATAA,
                    pub Hinfo: DNS_TXT_DATAA,
                    pub ISDN: DNS_TXT_DATAA,
                    pub Isdn: DNS_TXT_DATAA,
                    pub TXT: DNS_TXT_DATAA,
                    pub Txt: DNS_TXT_DATAA,
                    pub X25: DNS_TXT_DATAA,
                    pub Null: DNS_NULL_DATA,
                    pub WKS: DNS_WKS_DATA,
                    pub Wks: DNS_WKS_DATA,
                    pub AAAA: DNS_AAAA_DATA,
                    pub KEY: DNS_KEY_DATA,
                    pub Key: DNS_KEY_DATA,
                    pub SIG: DNS_SIG_DATAA,
                    pub Sig: DNS_SIG_DATAA,
                    pub ATMA: DNS_ATMA_DATA,
                    pub Atma: DNS_ATMA_DATA,
                    pub NXT: DNS_NXT_DATAA,
                    pub Nxt: DNS_NXT_DATAA,
                    pub SRV: DNS_SRV_DATAA,
                    pub Srv: DNS_SRV_DATAA,
                    pub NAPTR: DNS_NAPTR_DATAA,
                    pub Naptr: DNS_NAPTR_DATAA,
                    pub OPT: DNS_OPT_DATA,
                    pub Opt: DNS_OPT_DATA,
                    pub DS: DNS_DS_DATA,
                    pub Ds: DNS_DS_DATA,
                    pub RRSIG: DNS_SIG_DATAA,
                    pub Rrsig: DNS_SIG_DATAA,
                    pub NSEC: DNS_NSEC_DATAA,
                    pub Nsec: DNS_NSEC_DATAA,
                    pub DNSKEY: DNS_KEY_DATA,
                    pub Dnskey: DNS_KEY_DATA,
                    pub TKEY: DNS_TKEY_DATAA,
                    pub Tkey: DNS_TKEY_DATAA,
                    pub TSIG: DNS_TSIG_DATAA,
                    pub Tsig: DNS_TSIG_DATAA,
                    pub WINS: DNS_WINS_DATA,
                    pub Wins: DNS_WINS_DATA,
                    pub WINSR: DNS_WINSR_DATAA,
                    pub WinsR: DNS_WINSR_DATAA,
                    pub NBSTAT: DNS_WINSR_DATAA,
                    pub Nbstat: DNS_WINSR_DATAA,
                    pub DHCID: DNS_DHCID_DATA,
                    pub NSEC3: DNS_NSEC3_DATA,
                    pub Nsec3: DNS_NSEC3_DATA,
                    pub NSEC3PARAM: DNS_NSEC3PARAM_DATA,
                    pub Nsec3Param: DNS_NSEC3PARAM_DATA,
                    pub TLSA: DNS_TLSA_DATA,
                    pub Tlsa: DNS_TLSA_DATA,
                    pub UNKNOWN: DNS_UNKNOWN_DATA,
                    pub Unknown: DNS_UNKNOWN_DATA,
                    pub pDataPtr: *mut u8,
                }
                impl DNS_RECORDA_0 {}
                unsafe impl ::windows::Abi for DNS_RECORDA_0 {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub union DNS_RECORDA_1 {
                    pub DW: u32,
                    pub S: DNS_RECORD_FLAGS,
                }
                impl DNS_RECORDA_1 {}
                unsafe impl ::windows::Abi for DNS_RECORDA_1 {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_RECORDW {
                    pub pNext: *mut DNS_RECORDW,
                    pub pName: super::super::Foundation::PWSTR,
                    pub wType: u16,
                    pub wDataLength: u16,
                    pub Flags: DNS_RECORDW_1,
                    pub dwTtl: u32,
                    pub dwReserved: u32,
                    pub Data: DNS_RECORDW_0,
                }
                impl DNS_RECORDW {}
                unsafe impl ::windows::Abi for DNS_RECORDW {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub union DNS_RECORDW_0 {
                    pub A: DNS_A_DATA,
                    pub SOA: DNS_SOA_DATAW,
                    pub Soa: DNS_SOA_DATAW,
                    pub PTR: DNS_PTR_DATAW,
                    pub Ptr: DNS_PTR_DATAW,
                    pub NS: DNS_PTR_DATAW,
                    pub Ns: DNS_PTR_DATAW,
                    pub CNAME: DNS_PTR_DATAW,
                    pub Cname: DNS_PTR_DATAW,
                    pub DNAME: DNS_PTR_DATAW,
                    pub Dname: DNS_PTR_DATAW,
                    pub MB: DNS_PTR_DATAW,
                    pub Mb: DNS_PTR_DATAW,
                    pub MD: DNS_PTR_DATAW,
                    pub Md: DNS_PTR_DATAW,
                    pub MF: DNS_PTR_DATAW,
                    pub Mf: DNS_PTR_DATAW,
                    pub MG: DNS_PTR_DATAW,
                    pub Mg: DNS_PTR_DATAW,
                    pub MR: DNS_PTR_DATAW,
                    pub Mr: DNS_PTR_DATAW,
                    pub MINFO: DNS_MINFO_DATAW,
                    pub Minfo: DNS_MINFO_DATAW,
                    pub RP: DNS_MINFO_DATAW,
                    pub Rp: DNS_MINFO_DATAW,
                    pub MX: DNS_MX_DATAW,
                    pub Mx: DNS_MX_DATAW,
                    pub AFSDB: DNS_MX_DATAW,
                    pub Afsdb: DNS_MX_DATAW,
                    pub RT: DNS_MX_DATAW,
                    pub Rt: DNS_MX_DATAW,
                    pub HINFO: DNS_TXT_DATAW,
                    pub Hinfo: DNS_TXT_DATAW,
                    pub ISDN: DNS_TXT_DATAW,
                    pub Isdn: DNS_TXT_DATAW,
                    pub TXT: DNS_TXT_DATAW,
                    pub Txt: DNS_TXT_DATAW,
                    pub X25: DNS_TXT_DATAW,
                    pub Null: DNS_NULL_DATA,
                    pub WKS: DNS_WKS_DATA,
                    pub Wks: DNS_WKS_DATA,
                    pub AAAA: DNS_AAAA_DATA,
                    pub KEY: DNS_KEY_DATA,
                    pub Key: DNS_KEY_DATA,
                    pub SIG: DNS_SIG_DATAW,
                    pub Sig: DNS_SIG_DATAW,
                    pub ATMA: DNS_ATMA_DATA,
                    pub Atma: DNS_ATMA_DATA,
                    pub NXT: DNS_NXT_DATAW,
                    pub Nxt: DNS_NXT_DATAW,
                    pub SRV: DNS_SRV_DATAW,
                    pub Srv: DNS_SRV_DATAW,
                    pub NAPTR: DNS_NAPTR_DATAW,
                    pub Naptr: DNS_NAPTR_DATAW,
                    pub OPT: DNS_OPT_DATA,
                    pub Opt: DNS_OPT_DATA,
                    pub DS: DNS_DS_DATA,
                    pub Ds: DNS_DS_DATA,
                    pub RRSIG: DNS_SIG_DATAW,
                    pub Rrsig: DNS_SIG_DATAW,
                    pub NSEC: DNS_NSEC_DATAW,
                    pub Nsec: DNS_NSEC_DATAW,
                    pub DNSKEY: DNS_KEY_DATA,
                    pub Dnskey: DNS_KEY_DATA,
                    pub TKEY: DNS_TKEY_DATAW,
                    pub Tkey: DNS_TKEY_DATAW,
                    pub TSIG: DNS_TSIG_DATAW,
                    pub Tsig: DNS_TSIG_DATAW,
                    pub WINS: DNS_WINS_DATA,
                    pub Wins: DNS_WINS_DATA,
                    pub WINSR: DNS_WINSR_DATAW,
                    pub WinsR: DNS_WINSR_DATAW,
                    pub NBSTAT: DNS_WINSR_DATAW,
                    pub Nbstat: DNS_WINSR_DATAW,
                    pub DHCID: DNS_DHCID_DATA,
                    pub NSEC3: DNS_NSEC3_DATA,
                    pub Nsec3: DNS_NSEC3_DATA,
                    pub NSEC3PARAM: DNS_NSEC3PARAM_DATA,
                    pub Nsec3Param: DNS_NSEC3PARAM_DATA,
                    pub TLSA: DNS_TLSA_DATA,
                    pub Tlsa: DNS_TLSA_DATA,
                    pub UNKNOWN: DNS_UNKNOWN_DATA,
                    pub Unknown: DNS_UNKNOWN_DATA,
                    pub pDataPtr: *mut u8,
                }
                impl DNS_RECORDW_0 {}
                unsafe impl ::windows::Abi for DNS_RECORDW_0 {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub union DNS_RECORDW_1 {
                    pub DW: u32,
                    pub S: DNS_RECORD_FLAGS,
                }
                impl DNS_RECORDW_1 {}
                unsafe impl ::windows::Abi for DNS_RECORDW_1 {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_RECORD_FLAGS {
                    pub _bitfield: u32,
                }
                impl DNS_RECORD_FLAGS {}
                impl ::std::default::Default for DNS_RECORD_FLAGS {
                    fn default() -> Self {
                        Self { _bitfield: 0 }
                    }
                }
                impl ::std::fmt::Debug for DNS_RECORD_FLAGS {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_RECORD_FLAGS")
                            .field("_bitfield", &self._bitfield)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_RECORD_FLAGS {
                    fn eq(&self, other: &Self) -> bool {
                        self._bitfield == other._bitfield
                    }
                }
                impl ::std::cmp::Eq for DNS_RECORD_FLAGS {}
                unsafe impl ::windows::Abi for DNS_RECORD_FLAGS {
                    type Abi = Self;
                }
                pub const DNS_RFC_MAX_UDP_PACKET_LENGTH: u32 = 512u32;
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_RRSET {
                    pub pFirstRR: *mut DNS_RECORDA,
                    pub pLastRR: *mut DNS_RECORDA,
                }
                impl DNS_RRSET {}
                impl ::std::default::Default for DNS_RRSET {
                    fn default() -> Self {
                        Self {
                            pFirstRR: ::std::ptr::null_mut(),
                            pLastRR: ::std::ptr::null_mut(),
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_RRSET {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_RRSET")
                            .field("pFirstRR", &self.pFirstRR)
                            .field("pLastRR", &self.pLastRR)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_RRSET {
                    fn eq(&self, other: &Self) -> bool {
                        self.pFirstRR == other.pFirstRR
                            && self.pLastRR == other.pLastRR
                    }
                }
                impl ::std::cmp::Eq for DNS_RRSET {}
                unsafe impl ::windows::Abi for DNS_RRSET {
                    type Abi = Self;
                }
                pub const DNS_RTYPE_A: u32 = 256u32;
                pub const DNS_RTYPE_A6: u32 = 9728u32;
                pub const DNS_RTYPE_AAAA: u32 = 7168u32;
                pub const DNS_RTYPE_AFSDB: u32 = 4608u32;
                pub const DNS_RTYPE_ALL: u32 = 65280u32;
                pub const DNS_RTYPE_ANY: u32 = 65280u32;
                pub const DNS_RTYPE_ATMA: u32 = 8704u32;
                pub const DNS_RTYPE_AXFR: u32 = 64512u32;
                pub const DNS_RTYPE_CERT: u32 = 9472u32;
                pub const DNS_RTYPE_CNAME: u32 = 1280u32;
                pub const DNS_RTYPE_DHCID: u32 = 12544u32;
                pub const DNS_RTYPE_DNAME: u32 = 9984u32;
                pub const DNS_RTYPE_DNSKEY: u32 = 12288u32;
                pub const DNS_RTYPE_DS: u32 = 11008u32;
                pub const DNS_RTYPE_EID: u32 = 7936u32;
                pub const DNS_RTYPE_GID: u32 = 26112u32;
                pub const DNS_RTYPE_GPOS: u32 = 6912u32;
                pub const DNS_RTYPE_HINFO: u32 = 3328u32;
                pub const DNS_RTYPE_ISDN: u32 = 5120u32;
                pub const DNS_RTYPE_IXFR: u32 = 64256u32;
                pub const DNS_RTYPE_KEY: u32 = 6400u32;
                pub const DNS_RTYPE_KX: u32 = 9216u32;
                pub const DNS_RTYPE_LOC: u32 = 7424u32;
                pub const DNS_RTYPE_MAILA: u32 = 65024u32;
                pub const DNS_RTYPE_MAILB: u32 = 64768u32;
                pub const DNS_RTYPE_MB: u32 = 1792u32;
                pub const DNS_RTYPE_MD: u32 = 768u32;
                pub const DNS_RTYPE_MF: u32 = 1024u32;
                pub const DNS_RTYPE_MG: u32 = 2048u32;
                pub const DNS_RTYPE_MINFO: u32 = 3584u32;
                pub const DNS_RTYPE_MR: u32 = 2304u32;
                pub const DNS_RTYPE_MX: u32 = 3840u32;
                pub const DNS_RTYPE_NAPTR: u32 = 8960u32;
                pub const DNS_RTYPE_NIMLOC: u32 = 8192u32;
                pub const DNS_RTYPE_NS: u32 = 512u32;
                pub const DNS_RTYPE_NSAP: u32 = 5632u32;
                pub const DNS_RTYPE_NSAPPTR: u32 = 5888u32;
                pub const DNS_RTYPE_NSEC: u32 = 12032u32;
                pub const DNS_RTYPE_NSEC3: u32 = 12800u32;
                pub const DNS_RTYPE_NSEC3PARAM: u32 = 13056u32;
                pub const DNS_RTYPE_NULL: u32 = 2560u32;
                pub const DNS_RTYPE_NXT: u32 = 7680u32;
                pub const DNS_RTYPE_OPT: u32 = 10496u32;
                pub const DNS_RTYPE_PTR: u32 = 3072u32;
                pub const DNS_RTYPE_PX: u32 = 6656u32;
                pub const DNS_RTYPE_RP: u32 = 4352u32;
                pub const DNS_RTYPE_RRSIG: u32 = 11776u32;
                pub const DNS_RTYPE_RT: u32 = 5376u32;
                pub const DNS_RTYPE_SIG: u32 = 6144u32;
                pub const DNS_RTYPE_SINK: u32 = 10240u32;
                pub const DNS_RTYPE_SOA: u32 = 1536u32;
                pub const DNS_RTYPE_SRV: u32 = 8448u32;
                pub const DNS_RTYPE_TEXT: u32 = 4096u32;
                pub const DNS_RTYPE_TKEY: u32 = 63744u32;
                pub const DNS_RTYPE_TLSA: u32 = 13312u32;
                pub const DNS_RTYPE_TSIG: u32 = 64000u32;
                pub const DNS_RTYPE_UID: u32 = 25856u32;
                pub const DNS_RTYPE_UINFO: u32 = 25600u32;
                pub const DNS_RTYPE_UNSPEC: u32 = 26368u32;
                pub const DNS_RTYPE_WINS: u32 = 511u32;
                pub const DNS_RTYPE_WINSR: u32 = 767u32;
                pub const DNS_RTYPE_WKS: u32 = 2816u32;
                pub const DNS_RTYPE_X25: u32 = 4864u32;
                #[derive(
                    :: std :: cmp :: PartialEq,
                    :: std :: cmp :: Eq,
                    :: std :: marker :: Copy,
                    :: std :: clone :: Clone,
                    :: std :: default :: Default,
                    :: std :: fmt :: Debug,
                )]
                #[repr(transparent)]
                pub struct DNS_SECTION(pub i32);
                pub const DnsSectionQuestion: DNS_SECTION = DNS_SECTION(0i32);
                pub const DnsSectionAnswer: DNS_SECTION = DNS_SECTION(1i32);
                pub const DnsSectionAuthority: DNS_SECTION = DNS_SECTION(2i32);
                pub const DnsSectionAddtional: DNS_SECTION = DNS_SECTION(3i32);
                impl ::std::convert::From<i32> for DNS_SECTION {
                    fn from(value: i32) -> Self {
                        Self(value)
                    }
                }
                unsafe impl ::windows::Abi for DNS_SECTION {
                    type Abi = Self;
                }
                #[repr(C)]
                pub struct DNS_SERVICE_BROWSE_REQUEST {
                    pub Version: u32,
                    pub InterfaceIndex: u32,
                    pub QueryName: super::super::Foundation::PWSTR,
                    pub Anonymous: DNS_SERVICE_BROWSE_REQUEST_0,
                    pub pQueryContext: *mut ::std::ffi::c_void,
                }
                impl DNS_SERVICE_BROWSE_REQUEST {}
                #[repr(C)]
                #[doc(hidden)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_SERVICE_BROWSE_REQUEST_abi {
                    pub Version: u32,
                    pub InterfaceIndex: u32,
                    pub QueryName: super::super::Foundation::PWSTR,
                    pub Anonymous: DNS_SERVICE_BROWSE_REQUEST_0_abi,
                    pub pQueryContext: *mut ::std::ffi::c_void,
                }
                unsafe impl ::windows::Abi for DNS_SERVICE_BROWSE_REQUEST {
                    type Abi = DNS_SERVICE_BROWSE_REQUEST_abi;
                }
                #[repr(C)]
                pub union DNS_SERVICE_BROWSE_REQUEST_0 {
                    pub pBrowseCallback: ::windows::RawPtr,
                    pub pBrowseCallbackV2: ::windows::RawPtr,
                }
                impl DNS_SERVICE_BROWSE_REQUEST_0 {}
                #[repr(C)]
                #[doc(hidden)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub union DNS_SERVICE_BROWSE_REQUEST_0_abi {
                    pub pBrowseCallback: ::windows::RawPtr,
                    pub pBrowseCallbackV2: ::windows::RawPtr,
                }
                unsafe impl ::windows::Abi for DNS_SERVICE_BROWSE_REQUEST_0 {
                    type Abi = DNS_SERVICE_BROWSE_REQUEST_0_abi;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_SERVICE_CANCEL {
                    pub reserved: *mut ::std::ffi::c_void,
                }
                impl DNS_SERVICE_CANCEL {}
                impl ::std::default::Default for DNS_SERVICE_CANCEL {
                    fn default() -> Self {
                        Self {
                            reserved: ::std::ptr::null_mut(),
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_SERVICE_CANCEL {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_SERVICE_CANCEL")
                            .field("reserved", &self.reserved)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_SERVICE_CANCEL {
                    fn eq(&self, other: &Self) -> bool {
                        self.reserved == other.reserved
                    }
                }
                impl ::std::cmp::Eq for DNS_SERVICE_CANCEL {}
                unsafe impl ::windows::Abi for DNS_SERVICE_CANCEL {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_SERVICE_INSTANCE {
                    pub pszInstanceName: super::super::Foundation::PWSTR,
                    pub pszHostName: super::super::Foundation::PWSTR,
                    pub ip4Address: *mut u32,
                    pub ip6Address: *mut IP6_ADDRESS,
                    pub wPort: u16,
                    pub wPriority: u16,
                    pub wWeight: u16,
                    pub dwPropertyCount: u32,
                    pub keys: *mut super::super::Foundation::PWSTR,
                    pub values: *mut super::super::Foundation::PWSTR,
                    pub dwInterfaceIndex: u32,
                }
                impl DNS_SERVICE_INSTANCE {}
                impl ::std::default::Default for DNS_SERVICE_INSTANCE {
                    fn default() -> Self {
                        Self {
                            pszInstanceName: ::std::default::Default::default(
                            ),
                            pszHostName: ::std::default::Default::default(),
                            ip4Address: ::std::ptr::null_mut(),
                            ip6Address: ::std::ptr::null_mut(),
                            wPort: 0,
                            wPriority: 0,
                            wWeight: 0,
                            dwPropertyCount: 0,
                            keys: ::std::ptr::null_mut(),
                            values: ::std::ptr::null_mut(),
                            dwInterfaceIndex: 0,
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_SERVICE_INSTANCE {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_SERVICE_INSTANCE")
                            .field("pszInstanceName", &self.pszInstanceName)
                            .field("pszHostName", &self.pszHostName)
                            .field("ip4Address", &self.ip4Address)
                            .field("ip6Address", &self.ip6Address)
                            .field("wPort", &self.wPort)
                            .field("wPriority", &self.wPriority)
                            .field("wWeight", &self.wWeight)
                            .field("dwPropertyCount", &self.dwPropertyCount)
                            .field("keys", &self.keys)
                            .field("values", &self.values)
                            .field("dwInterfaceIndex", &self.dwInterfaceIndex)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_SERVICE_INSTANCE {
                    fn eq(&self, other: &Self) -> bool {
                        self.pszInstanceName == other.pszInstanceName
                            && self.pszHostName == other.pszHostName
                            && self.ip4Address == other.ip4Address
                            && self.ip6Address == other.ip6Address
                            && self.wPort == other.wPort
                            && self.wPriority == other.wPriority
                            && self.wWeight == other.wWeight
                            && self.dwPropertyCount == other.dwPropertyCount
                            && self.keys == other.keys
                            && self.values == other.values
                            && self.dwInterfaceIndex == other.dwInterfaceIndex
                    }
                }
                impl ::std::cmp::Eq for DNS_SERVICE_INSTANCE {}
                unsafe impl ::windows::Abi for DNS_SERVICE_INSTANCE {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(:: std :: clone :: Clone)]
                pub struct DNS_SERVICE_REGISTER_REQUEST {
                    pub Version: u32,
                    pub InterfaceIndex: u32,
                    pub pServiceInstance: *mut DNS_SERVICE_INSTANCE,
                    pub pRegisterCompletionCallback:
                        ::std::option::Option<PDNS_SERVICE_REGISTER_COMPLETE>,
                    pub pQueryContext: *mut ::std::ffi::c_void,
                    pub hCredentials: super::super::Foundation::HANDLE,
                    pub unicastEnabled: super::super::Foundation::BOOL,
                }
                impl DNS_SERVICE_REGISTER_REQUEST {}
                impl ::std::default::Default for DNS_SERVICE_REGISTER_REQUEST {
                    fn default() -> Self {
                        Self {
                            Version: 0,
                            InterfaceIndex: 0,
                            pServiceInstance: ::std::ptr::null_mut(),
                            pRegisterCompletionCallback:
                                ::std::default::Default::default(),
                            pQueryContext: ::std::ptr::null_mut(),
                            hCredentials: ::std::default::Default::default(),
                            unicastEnabled: ::std::default::Default::default(),
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_SERVICE_REGISTER_REQUEST {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_SERVICE_REGISTER_REQUEST")
                            .field("Version", &self.Version)
                            .field("InterfaceIndex", &self.InterfaceIndex)
                            .field("pServiceInstance", &self.pServiceInstance)
                            .field("pQueryContext", &self.pQueryContext)
                            .field("hCredentials", &self.hCredentials)
                            .field("unicastEnabled", &self.unicastEnabled)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_SERVICE_REGISTER_REQUEST {
                    fn eq(&self, other: &Self) -> bool {
                        self.Version == other.Version
                            && self.InterfaceIndex == other.InterfaceIndex
                            && self.pServiceInstance == other.pServiceInstance
                            && self
                                .pRegisterCompletionCallback
                                .map(|f| f as usize)
                                == other
                                    .pRegisterCompletionCallback
                                    .map(|f| f as usize)
                            && self.pQueryContext == other.pQueryContext
                            && self.hCredentials == other.hCredentials
                            && self.unicastEnabled == other.unicastEnabled
                    }
                }
                impl ::std::cmp::Eq for DNS_SERVICE_REGISTER_REQUEST {}
                #[repr(C)]
                #[doc(hidden)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_SERVICE_REGISTER_REQUEST_abi {
                    pub Version: u32,
                    pub InterfaceIndex: u32,
                    pub pServiceInstance: *mut DNS_SERVICE_INSTANCE,
                    pub pRegisterCompletionCallback: ::windows::RawPtr,
                    pub pQueryContext: *mut ::std::ffi::c_void,
                    pub hCredentials: super::super::Foundation::HANDLE,
                    pub unicastEnabled: super::super::Foundation::BOOL,
                }
                unsafe impl ::windows::Abi for DNS_SERVICE_REGISTER_REQUEST {
                    type Abi = DNS_SERVICE_REGISTER_REQUEST_abi;
                }
                #[repr(C)]
                #[derive(:: std :: clone :: Clone)]
                pub struct DNS_SERVICE_RESOLVE_REQUEST {
                    pub Version: u32,
                    pub InterfaceIndex: u32,
                    pub QueryName: super::super::Foundation::PWSTR,
                    pub pResolveCompletionCallback:
                        ::std::option::Option<PDNS_SERVICE_RESOLVE_COMPLETE>,
                    pub pQueryContext: *mut ::std::ffi::c_void,
                }
                impl DNS_SERVICE_RESOLVE_REQUEST {}
                impl ::std::default::Default for DNS_SERVICE_RESOLVE_REQUEST {
                    fn default() -> Self {
                        Self {
                            Version: 0,
                            InterfaceIndex: 0,
                            QueryName: ::std::default::Default::default(),
                            pResolveCompletionCallback:
                                ::std::default::Default::default(),
                            pQueryContext: ::std::ptr::null_mut(),
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_SERVICE_RESOLVE_REQUEST {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_SERVICE_RESOLVE_REQUEST")
                            .field("Version", &self.Version)
                            .field("InterfaceIndex", &self.InterfaceIndex)
                            .field("QueryName", &self.QueryName)
                            .field("pQueryContext", &self.pQueryContext)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_SERVICE_RESOLVE_REQUEST {
                    fn eq(&self, other: &Self) -> bool {
                        self.Version == other.Version
                            && self.InterfaceIndex == other.InterfaceIndex
                            && self.QueryName == other.QueryName
                            && self
                                .pResolveCompletionCallback
                                .map(|f| f as usize)
                                == other
                                    .pResolveCompletionCallback
                                    .map(|f| f as usize)
                            && self.pQueryContext == other.pQueryContext
                    }
                }
                impl ::std::cmp::Eq for DNS_SERVICE_RESOLVE_REQUEST {}
                #[repr(C)]
                #[doc(hidden)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_SERVICE_RESOLVE_REQUEST_abi {
                    pub Version: u32,
                    pub InterfaceIndex: u32,
                    pub QueryName: super::super::Foundation::PWSTR,
                    pub pResolveCompletionCallback: ::windows::RawPtr,
                    pub pQueryContext: *mut ::std::ffi::c_void,
                }
                unsafe impl ::windows::Abi for DNS_SERVICE_RESOLVE_REQUEST {
                    type Abi = DNS_SERVICE_RESOLVE_REQUEST_abi;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_SIG_DATAA {
                    pub wTypeCovered: u16,
                    pub chAlgorithm: u8,
                    pub chLabelCount: u8,
                    pub dwOriginalTtl: u32,
                    pub dwExpiration: u32,
                    pub dwTimeSigned: u32,
                    pub wKeyTag: u16,
                    pub wSignatureLength: u16,
                    pub pNameSigner: super::super::Foundation::PSTR,
                    pub Signature: [u8; 1],
                }
                impl DNS_SIG_DATAA {}
                impl ::std::default::Default for DNS_SIG_DATAA {
                    fn default() -> Self {
                        Self {
                            wTypeCovered: 0,
                            chAlgorithm: 0,
                            chLabelCount: 0,
                            dwOriginalTtl: 0,
                            dwExpiration: 0,
                            dwTimeSigned: 0,
                            wKeyTag: 0,
                            wSignatureLength: 0,
                            pNameSigner: ::std::default::Default::default(),
                            Signature: [0; 1],
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_SIG_DATAA {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_SIG_DATAA")
                            .field("wTypeCovered", &self.wTypeCovered)
                            .field("chAlgorithm", &self.chAlgorithm)
                            .field("chLabelCount", &self.chLabelCount)
                            .field("dwOriginalTtl", &self.dwOriginalTtl)
                            .field("dwExpiration", &self.dwExpiration)
                            .field("dwTimeSigned", &self.dwTimeSigned)
                            .field("wKeyTag", &self.wKeyTag)
                            .field("wSignatureLength", &self.wSignatureLength)
                            .field("pNameSigner", &self.pNameSigner)
                            .field("Signature", &self.Signature)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_SIG_DATAA {
                    fn eq(&self, other: &Self) -> bool {
                        self.wTypeCovered == other.wTypeCovered
                            && self.chAlgorithm == other.chAlgorithm
                            && self.chLabelCount == other.chLabelCount
                            && self.dwOriginalTtl == other.dwOriginalTtl
                            && self.dwExpiration == other.dwExpiration
                            && self.dwTimeSigned == other.dwTimeSigned
                            && self.wKeyTag == other.wKeyTag
                            && self.wSignatureLength == other.wSignatureLength
                            && self.pNameSigner == other.pNameSigner
                            && self.Signature == other.Signature
                    }
                }
                impl ::std::cmp::Eq for DNS_SIG_DATAA {}
                unsafe impl ::windows::Abi for DNS_SIG_DATAA {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_SIG_DATAW {
                    pub wTypeCovered: u16,
                    pub chAlgorithm: u8,
                    pub chLabelCount: u8,
                    pub dwOriginalTtl: u32,
                    pub dwExpiration: u32,
                    pub dwTimeSigned: u32,
                    pub wKeyTag: u16,
                    pub wSignatureLength: u16,
                    pub pNameSigner: super::super::Foundation::PWSTR,
                    pub Signature: [u8; 1],
                }
                impl DNS_SIG_DATAW {}
                impl ::std::default::Default for DNS_SIG_DATAW {
                    fn default() -> Self {
                        Self {
                            wTypeCovered: 0,
                            chAlgorithm: 0,
                            chLabelCount: 0,
                            dwOriginalTtl: 0,
                            dwExpiration: 0,
                            dwTimeSigned: 0,
                            wKeyTag: 0,
                            wSignatureLength: 0,
                            pNameSigner: ::std::default::Default::default(),
                            Signature: [0; 1],
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_SIG_DATAW {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_SIG_DATAW")
                            .field("wTypeCovered", &self.wTypeCovered)
                            .field("chAlgorithm", &self.chAlgorithm)
                            .field("chLabelCount", &self.chLabelCount)
                            .field("dwOriginalTtl", &self.dwOriginalTtl)
                            .field("dwExpiration", &self.dwExpiration)
                            .field("dwTimeSigned", &self.dwTimeSigned)
                            .field("wKeyTag", &self.wKeyTag)
                            .field("wSignatureLength", &self.wSignatureLength)
                            .field("pNameSigner", &self.pNameSigner)
                            .field("Signature", &self.Signature)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_SIG_DATAW {
                    fn eq(&self, other: &Self) -> bool {
                        self.wTypeCovered == other.wTypeCovered
                            && self.chAlgorithm == other.chAlgorithm
                            && self.chLabelCount == other.chLabelCount
                            && self.dwOriginalTtl == other.dwOriginalTtl
                            && self.dwExpiration == other.dwExpiration
                            && self.dwTimeSigned == other.dwTimeSigned
                            && self.wKeyTag == other.wKeyTag
                            && self.wSignatureLength == other.wSignatureLength
                            && self.pNameSigner == other.pNameSigner
                            && self.Signature == other.Signature
                    }
                }
                impl ::std::cmp::Eq for DNS_SIG_DATAW {}
                unsafe impl ::windows::Abi for DNS_SIG_DATAW {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_SOA_DATAA {
                    pub pNamePrimaryServer: super::super::Foundation::PSTR,
                    pub pNameAdministrator: super::super::Foundation::PSTR,
                    pub dwSerialNo: u32,
                    pub dwRefresh: u32,
                    pub dwRetry: u32,
                    pub dwExpire: u32,
                    pub dwDefaultTtl: u32,
                }
                impl DNS_SOA_DATAA {}
                impl ::std::default::Default for DNS_SOA_DATAA {
                    fn default() -> Self {
                        Self {
                            pNamePrimaryServer:
                                ::std::default::Default::default(),
                            pNameAdministrator:
                                ::std::default::Default::default(),
                            dwSerialNo: 0,
                            dwRefresh: 0,
                            dwRetry: 0,
                            dwExpire: 0,
                            dwDefaultTtl: 0,
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_SOA_DATAA {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_SOA_DATAA")
                            .field(
                                "pNamePrimaryServer",
                                &self.pNamePrimaryServer,
                            )
                            .field(
                                "pNameAdministrator",
                                &self.pNameAdministrator,
                            )
                            .field("dwSerialNo", &self.dwSerialNo)
                            .field("dwRefresh", &self.dwRefresh)
                            .field("dwRetry", &self.dwRetry)
                            .field("dwExpire", &self.dwExpire)
                            .field("dwDefaultTtl", &self.dwDefaultTtl)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_SOA_DATAA {
                    fn eq(&self, other: &Self) -> bool {
                        self.pNamePrimaryServer == other.pNamePrimaryServer
                            && self.pNameAdministrator
                                == other.pNameAdministrator
                            && self.dwSerialNo == other.dwSerialNo
                            && self.dwRefresh == other.dwRefresh
                            && self.dwRetry == other.dwRetry
                            && self.dwExpire == other.dwExpire
                            && self.dwDefaultTtl == other.dwDefaultTtl
                    }
                }
                impl ::std::cmp::Eq for DNS_SOA_DATAA {}
                unsafe impl ::windows::Abi for DNS_SOA_DATAA {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_SOA_DATAW {
                    pub pNamePrimaryServer: super::super::Foundation::PWSTR,
                    pub pNameAdministrator: super::super::Foundation::PWSTR,
                    pub dwSerialNo: u32,
                    pub dwRefresh: u32,
                    pub dwRetry: u32,
                    pub dwExpire: u32,
                    pub dwDefaultTtl: u32,
                }
                impl DNS_SOA_DATAW {}
                impl ::std::default::Default for DNS_SOA_DATAW {
                    fn default() -> Self {
                        Self {
                            pNamePrimaryServer:
                                ::std::default::Default::default(),
                            pNameAdministrator:
                                ::std::default::Default::default(),
                            dwSerialNo: 0,
                            dwRefresh: 0,
                            dwRetry: 0,
                            dwExpire: 0,
                            dwDefaultTtl: 0,
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_SOA_DATAW {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_SOA_DATAW")
                            .field(
                                "pNamePrimaryServer",
                                &self.pNamePrimaryServer,
                            )
                            .field(
                                "pNameAdministrator",
                                &self.pNameAdministrator,
                            )
                            .field("dwSerialNo", &self.dwSerialNo)
                            .field("dwRefresh", &self.dwRefresh)
                            .field("dwRetry", &self.dwRetry)
                            .field("dwExpire", &self.dwExpire)
                            .field("dwDefaultTtl", &self.dwDefaultTtl)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_SOA_DATAW {
                    fn eq(&self, other: &Self) -> bool {
                        self.pNamePrimaryServer == other.pNamePrimaryServer
                            && self.pNameAdministrator
                                == other.pNameAdministrator
                            && self.dwSerialNo == other.dwSerialNo
                            && self.dwRefresh == other.dwRefresh
                            && self.dwRetry == other.dwRetry
                            && self.dwExpire == other.dwExpire
                            && self.dwDefaultTtl == other.dwDefaultTtl
                    }
                }
                impl ::std::cmp::Eq for DNS_SOA_DATAW {}
                unsafe impl ::windows::Abi for DNS_SOA_DATAW {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_SRV_DATAA {
                    pub pNameTarget: super::super::Foundation::PSTR,
                    pub wPriority: u16,
                    pub wWeight: u16,
                    pub wPort: u16,
                    pub Pad: u16,
                }
                impl DNS_SRV_DATAA {}
                impl ::std::default::Default for DNS_SRV_DATAA {
                    fn default() -> Self {
                        Self {
                            pNameTarget: ::std::default::Default::default(),
                            wPriority: 0,
                            wWeight: 0,
                            wPort: 0,
                            Pad: 0,
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_SRV_DATAA {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_SRV_DATAA")
                            .field("pNameTarget", &self.pNameTarget)
                            .field("wPriority", &self.wPriority)
                            .field("wWeight", &self.wWeight)
                            .field("wPort", &self.wPort)
                            .field("Pad", &self.Pad)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_SRV_DATAA {
                    fn eq(&self, other: &Self) -> bool {
                        self.pNameTarget == other.pNameTarget
                            && self.wPriority == other.wPriority
                            && self.wWeight == other.wWeight
                            && self.wPort == other.wPort
                            && self.Pad == other.Pad
                    }
                }
                impl ::std::cmp::Eq for DNS_SRV_DATAA {}
                unsafe impl ::windows::Abi for DNS_SRV_DATAA {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_SRV_DATAW {
                    pub pNameTarget: super::super::Foundation::PWSTR,
                    pub wPriority: u16,
                    pub wWeight: u16,
                    pub wPort: u16,
                    pub Pad: u16,
                }
                impl DNS_SRV_DATAW {}
                impl ::std::default::Default for DNS_SRV_DATAW {
                    fn default() -> Self {
                        Self {
                            pNameTarget: ::std::default::Default::default(),
                            wPriority: 0,
                            wWeight: 0,
                            wPort: 0,
                            Pad: 0,
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_SRV_DATAW {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_SRV_DATAW")
                            .field("pNameTarget", &self.pNameTarget)
                            .field("wPriority", &self.wPriority)
                            .field("wWeight", &self.wWeight)
                            .field("wPort", &self.wPort)
                            .field("Pad", &self.Pad)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_SRV_DATAW {
                    fn eq(&self, other: &Self) -> bool {
                        self.pNameTarget == other.pNameTarget
                            && self.wPriority == other.wPriority
                            && self.wWeight == other.wWeight
                            && self.wPort == other.wPort
                            && self.Pad == other.Pad
                    }
                }
                impl ::std::cmp::Eq for DNS_SRV_DATAW {}
                unsafe impl ::windows::Abi for DNS_SRV_DATAW {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_TKEY_DATAA {
                    pub pNameAlgorithm: super::super::Foundation::PSTR,
                    pub pAlgorithmPacket: *mut u8,
                    pub pKey: *mut u8,
                    pub pOtherData: *mut u8,
                    pub dwCreateTime: u32,
                    pub dwExpireTime: u32,
                    pub wMode: u16,
                    pub wError: u16,
                    pub wKeyLength: u16,
                    pub wOtherLength: u16,
                    pub cAlgNameLength: u8,
                    pub bPacketPointers: super::super::Foundation::BOOL,
                }
                impl DNS_TKEY_DATAA {}
                impl ::std::default::Default for DNS_TKEY_DATAA {
                    fn default() -> Self {
                        Self {
                            pNameAlgorithm: ::std::default::Default::default(),
                            pAlgorithmPacket: ::std::ptr::null_mut(),
                            pKey: ::std::ptr::null_mut(),
                            pOtherData: ::std::ptr::null_mut(),
                            dwCreateTime: 0,
                            dwExpireTime: 0,
                            wMode: 0,
                            wError: 0,
                            wKeyLength: 0,
                            wOtherLength: 0,
                            cAlgNameLength: 0,
                            bPacketPointers: ::std::default::Default::default(
                            ),
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_TKEY_DATAA {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_TKEY_DATAA")
                            .field("pNameAlgorithm", &self.pNameAlgorithm)
                            .field("pAlgorithmPacket", &self.pAlgorithmPacket)
                            .field("pKey", &self.pKey)
                            .field("pOtherData", &self.pOtherData)
                            .field("dwCreateTime", &self.dwCreateTime)
                            .field("dwExpireTime", &self.dwExpireTime)
                            .field("wMode", &self.wMode)
                            .field("wError", &self.wError)
                            .field("wKeyLength", &self.wKeyLength)
                            .field("wOtherLength", &self.wOtherLength)
                            .field("cAlgNameLength", &self.cAlgNameLength)
                            .field("bPacketPointers", &self.bPacketPointers)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_TKEY_DATAA {
                    fn eq(&self, other: &Self) -> bool {
                        self.pNameAlgorithm == other.pNameAlgorithm
                            && self.pAlgorithmPacket == other.pAlgorithmPacket
                            && self.pKey == other.pKey
                            && self.pOtherData == other.pOtherData
                            && self.dwCreateTime == other.dwCreateTime
                            && self.dwExpireTime == other.dwExpireTime
                            && self.wMode == other.wMode
                            && self.wError == other.wError
                            && self.wKeyLength == other.wKeyLength
                            && self.wOtherLength == other.wOtherLength
                            && self.cAlgNameLength == other.cAlgNameLength
                            && self.bPacketPointers == other.bPacketPointers
                    }
                }
                impl ::std::cmp::Eq for DNS_TKEY_DATAA {}
                unsafe impl ::windows::Abi for DNS_TKEY_DATAA {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_TKEY_DATAW {
                    pub pNameAlgorithm: super::super::Foundation::PWSTR,
                    pub pAlgorithmPacket: *mut u8,
                    pub pKey: *mut u8,
                    pub pOtherData: *mut u8,
                    pub dwCreateTime: u32,
                    pub dwExpireTime: u32,
                    pub wMode: u16,
                    pub wError: u16,
                    pub wKeyLength: u16,
                    pub wOtherLength: u16,
                    pub cAlgNameLength: u8,
                    pub bPacketPointers: super::super::Foundation::BOOL,
                }
                impl DNS_TKEY_DATAW {}
                impl ::std::default::Default for DNS_TKEY_DATAW {
                    fn default() -> Self {
                        Self {
                            pNameAlgorithm: ::std::default::Default::default(),
                            pAlgorithmPacket: ::std::ptr::null_mut(),
                            pKey: ::std::ptr::null_mut(),
                            pOtherData: ::std::ptr::null_mut(),
                            dwCreateTime: 0,
                            dwExpireTime: 0,
                            wMode: 0,
                            wError: 0,
                            wKeyLength: 0,
                            wOtherLength: 0,
                            cAlgNameLength: 0,
                            bPacketPointers: ::std::default::Default::default(
                            ),
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_TKEY_DATAW {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_TKEY_DATAW")
                            .field("pNameAlgorithm", &self.pNameAlgorithm)
                            .field("pAlgorithmPacket", &self.pAlgorithmPacket)
                            .field("pKey", &self.pKey)
                            .field("pOtherData", &self.pOtherData)
                            .field("dwCreateTime", &self.dwCreateTime)
                            .field("dwExpireTime", &self.dwExpireTime)
                            .field("wMode", &self.wMode)
                            .field("wError", &self.wError)
                            .field("wKeyLength", &self.wKeyLength)
                            .field("wOtherLength", &self.wOtherLength)
                            .field("cAlgNameLength", &self.cAlgNameLength)
                            .field("bPacketPointers", &self.bPacketPointers)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_TKEY_DATAW {
                    fn eq(&self, other: &Self) -> bool {
                        self.pNameAlgorithm == other.pNameAlgorithm
                            && self.pAlgorithmPacket == other.pAlgorithmPacket
                            && self.pKey == other.pKey
                            && self.pOtherData == other.pOtherData
                            && self.dwCreateTime == other.dwCreateTime
                            && self.dwExpireTime == other.dwExpireTime
                            && self.wMode == other.wMode
                            && self.wError == other.wError
                            && self.wKeyLength == other.wKeyLength
                            && self.wOtherLength == other.wOtherLength
                            && self.cAlgNameLength == other.cAlgNameLength
                            && self.bPacketPointers == other.bPacketPointers
                    }
                }
                impl ::std::cmp::Eq for DNS_TKEY_DATAW {}
                unsafe impl ::windows::Abi for DNS_TKEY_DATAW {
                    type Abi = Self;
                }
                pub const DNS_TKEY_MODE_DIFFIE_HELLMAN: u32 = 2u32;
                pub const DNS_TKEY_MODE_GSS: u32 = 3u32;
                pub const DNS_TKEY_MODE_RESOLVER_ASSIGN: u32 = 4u32;
                pub const DNS_TKEY_MODE_SERVER_ASSIGN: u32 = 1u32;
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_TLSA_DATA {
                    pub bCertUsage: u8,
                    pub bSelector: u8,
                    pub bMatchingType: u8,
                    pub bCertificateAssociationDataLength: u16,
                    pub bPad: [u8; 3],
                    pub bCertificateAssociationData: [u8; 1],
                }
                impl DNS_TLSA_DATA {}
                impl ::std::default::Default for DNS_TLSA_DATA {
                    fn default() -> Self {
                        Self {
                            bCertUsage: 0,
                            bSelector: 0,
                            bMatchingType: 0,
                            bCertificateAssociationDataLength: 0,
                            bPad: [0; 3],
                            bCertificateAssociationData: [0; 1],
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_TLSA_DATA {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_TLSA_DATA")
                            .field("bCertUsage", &self.bCertUsage)
                            .field("bSelector", &self.bSelector)
                            .field("bMatchingType", &self.bMatchingType)
                            .field(
                                "bCertificateAssociationDataLength",
                                &self.bCertificateAssociationDataLength,
                            )
                            .field("bPad", &self.bPad)
                            .field(
                                "bCertificateAssociationData",
                                &self.bCertificateAssociationData,
                            )
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_TLSA_DATA {
                    fn eq(&self, other: &Self) -> bool {
                        self.bCertUsage == other.bCertUsage
                            && self.bSelector == other.bSelector
                            && self.bMatchingType == other.bMatchingType
                            && self.bCertificateAssociationDataLength
                                == other.bCertificateAssociationDataLength
                            && self.bPad == other.bPad
                            && self.bCertificateAssociationData
                                == other.bCertificateAssociationData
                    }
                }
                impl ::std::cmp::Eq for DNS_TLSA_DATA {}
                unsafe impl ::windows::Abi for DNS_TLSA_DATA {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_TSIG_DATAA {
                    pub pNameAlgorithm: super::super::Foundation::PSTR,
                    pub pAlgorithmPacket: *mut u8,
                    pub pSignature: *mut u8,
                    pub pOtherData: *mut u8,
                    pub i64CreateTime: i64,
                    pub wFudgeTime: u16,
                    pub wOriginalXid: u16,
                    pub wError: u16,
                    pub wSigLength: u16,
                    pub wOtherLength: u16,
                    pub cAlgNameLength: u8,
                    pub bPacketPointers: super::super::Foundation::BOOL,
                }
                impl DNS_TSIG_DATAA {}
                impl ::std::default::Default for DNS_TSIG_DATAA {
                    fn default() -> Self {
                        Self {
                            pNameAlgorithm: ::std::default::Default::default(),
                            pAlgorithmPacket: ::std::ptr::null_mut(),
                            pSignature: ::std::ptr::null_mut(),
                            pOtherData: ::std::ptr::null_mut(),
                            i64CreateTime: 0,
                            wFudgeTime: 0,
                            wOriginalXid: 0,
                            wError: 0,
                            wSigLength: 0,
                            wOtherLength: 0,
                            cAlgNameLength: 0,
                            bPacketPointers: ::std::default::Default::default(
                            ),
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_TSIG_DATAA {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_TSIG_DATAA")
                            .field("pNameAlgorithm", &self.pNameAlgorithm)
                            .field("pAlgorithmPacket", &self.pAlgorithmPacket)
                            .field("pSignature", &self.pSignature)
                            .field("pOtherData", &self.pOtherData)
                            .field("i64CreateTime", &self.i64CreateTime)
                            .field("wFudgeTime", &self.wFudgeTime)
                            .field("wOriginalXid", &self.wOriginalXid)
                            .field("wError", &self.wError)
                            .field("wSigLength", &self.wSigLength)
                            .field("wOtherLength", &self.wOtherLength)
                            .field("cAlgNameLength", &self.cAlgNameLength)
                            .field("bPacketPointers", &self.bPacketPointers)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_TSIG_DATAA {
                    fn eq(&self, other: &Self) -> bool {
                        self.pNameAlgorithm == other.pNameAlgorithm
                            && self.pAlgorithmPacket == other.pAlgorithmPacket
                            && self.pSignature == other.pSignature
                            && self.pOtherData == other.pOtherData
                            && self.i64CreateTime == other.i64CreateTime
                            && self.wFudgeTime == other.wFudgeTime
                            && self.wOriginalXid == other.wOriginalXid
                            && self.wError == other.wError
                            && self.wSigLength == other.wSigLength
                            && self.wOtherLength == other.wOtherLength
                            && self.cAlgNameLength == other.cAlgNameLength
                            && self.bPacketPointers == other.bPacketPointers
                    }
                }
                impl ::std::cmp::Eq for DNS_TSIG_DATAA {}
                unsafe impl ::windows::Abi for DNS_TSIG_DATAA {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_TSIG_DATAW {
                    pub pNameAlgorithm: super::super::Foundation::PWSTR,
                    pub pAlgorithmPacket: *mut u8,
                    pub pSignature: *mut u8,
                    pub pOtherData: *mut u8,
                    pub i64CreateTime: i64,
                    pub wFudgeTime: u16,
                    pub wOriginalXid: u16,
                    pub wError: u16,
                    pub wSigLength: u16,
                    pub wOtherLength: u16,
                    pub cAlgNameLength: u8,
                    pub bPacketPointers: super::super::Foundation::BOOL,
                }
                impl DNS_TSIG_DATAW {}
                impl ::std::default::Default for DNS_TSIG_DATAW {
                    fn default() -> Self {
                        Self {
                            pNameAlgorithm: ::std::default::Default::default(),
                            pAlgorithmPacket: ::std::ptr::null_mut(),
                            pSignature: ::std::ptr::null_mut(),
                            pOtherData: ::std::ptr::null_mut(),
                            i64CreateTime: 0,
                            wFudgeTime: 0,
                            wOriginalXid: 0,
                            wError: 0,
                            wSigLength: 0,
                            wOtherLength: 0,
                            cAlgNameLength: 0,
                            bPacketPointers: ::std::default::Default::default(
                            ),
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_TSIG_DATAW {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_TSIG_DATAW")
                            .field("pNameAlgorithm", &self.pNameAlgorithm)
                            .field("pAlgorithmPacket", &self.pAlgorithmPacket)
                            .field("pSignature", &self.pSignature)
                            .field("pOtherData", &self.pOtherData)
                            .field("i64CreateTime", &self.i64CreateTime)
                            .field("wFudgeTime", &self.wFudgeTime)
                            .field("wOriginalXid", &self.wOriginalXid)
                            .field("wError", &self.wError)
                            .field("wSigLength", &self.wSigLength)
                            .field("wOtherLength", &self.wOtherLength)
                            .field("cAlgNameLength", &self.cAlgNameLength)
                            .field("bPacketPointers", &self.bPacketPointers)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_TSIG_DATAW {
                    fn eq(&self, other: &Self) -> bool {
                        self.pNameAlgorithm == other.pNameAlgorithm
                            && self.pAlgorithmPacket == other.pAlgorithmPacket
                            && self.pSignature == other.pSignature
                            && self.pOtherData == other.pOtherData
                            && self.i64CreateTime == other.i64CreateTime
                            && self.wFudgeTime == other.wFudgeTime
                            && self.wOriginalXid == other.wOriginalXid
                            && self.wError == other.wError
                            && self.wSigLength == other.wSigLength
                            && self.wOtherLength == other.wOtherLength
                            && self.cAlgNameLength == other.cAlgNameLength
                            && self.bPacketPointers == other.bPacketPointers
                    }
                }
                impl ::std::cmp::Eq for DNS_TSIG_DATAW {}
                unsafe impl ::windows::Abi for DNS_TSIG_DATAW {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_TXT_DATAA {
                    pub dwStringCount: u32,
                    pub pStringArray: [super::super::Foundation::PSTR; 1],
                }
                impl DNS_TXT_DATAA {}
                impl ::std::default::Default for DNS_TXT_DATAA {
                    fn default() -> Self {
                        Self {
                            dwStringCount: 0,
                            pStringArray: [::std::default::Default::default();
                                1],
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_TXT_DATAA {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_TXT_DATAA")
                            .field("dwStringCount", &self.dwStringCount)
                            .field("pStringArray", &self.pStringArray)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_TXT_DATAA {
                    fn eq(&self, other: &Self) -> bool {
                        self.dwStringCount == other.dwStringCount
                            && self.pStringArray == other.pStringArray
                    }
                }
                impl ::std::cmp::Eq for DNS_TXT_DATAA {}
                unsafe impl ::windows::Abi for DNS_TXT_DATAA {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_TXT_DATAW {
                    pub dwStringCount: u32,
                    pub pStringArray: [super::super::Foundation::PWSTR; 1],
                }
                impl DNS_TXT_DATAW {}
                impl ::std::default::Default for DNS_TXT_DATAW {
                    fn default() -> Self {
                        Self {
                            dwStringCount: 0,
                            pStringArray: [::std::default::Default::default();
                                1],
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_TXT_DATAW {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_TXT_DATAW")
                            .field("dwStringCount", &self.dwStringCount)
                            .field("pStringArray", &self.pStringArray)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_TXT_DATAW {
                    fn eq(&self, other: &Self) -> bool {
                        self.dwStringCount == other.dwStringCount
                            && self.pStringArray == other.pStringArray
                    }
                }
                impl ::std::cmp::Eq for DNS_TXT_DATAW {}
                unsafe impl ::windows::Abi for DNS_TXT_DATAW {
                    type Abi = Self;
                }
                pub const DNS_TYPE_A: u32 = 1u32;
                pub const DNS_TYPE_A6: u32 = 38u32;
                pub const DNS_TYPE_AAAA: u32 = 28u32;
                pub const DNS_TYPE_ADDRS: u32 = 248u32;
                pub const DNS_TYPE_AFSDB: u32 = 18u32;
                pub const DNS_TYPE_ALL: u32 = 255u32;
                pub const DNS_TYPE_ANY: u32 = 255u32;
                pub const DNS_TYPE_ATMA: u32 = 34u32;
                pub const DNS_TYPE_AXFR: u32 = 252u32;
                pub const DNS_TYPE_CERT: u32 = 37u32;
                pub const DNS_TYPE_CNAME: u32 = 5u32;
                pub const DNS_TYPE_DHCID: u32 = 49u32;
                pub const DNS_TYPE_DNAME: u32 = 39u32;
                pub const DNS_TYPE_DNSKEY: u32 = 48u32;
                pub const DNS_TYPE_DS: u32 = 43u32;
                pub const DNS_TYPE_EID: u32 = 31u32;
                pub const DNS_TYPE_GID: u32 = 102u32;
                pub const DNS_TYPE_GPOS: u32 = 27u32;
                pub const DNS_TYPE_HINFO: u32 = 13u32;
                pub const DNS_TYPE_ISDN: u32 = 20u32;
                pub const DNS_TYPE_IXFR: u32 = 251u32;
                pub const DNS_TYPE_KEY: u32 = 25u32;
                pub const DNS_TYPE_KX: u32 = 36u32;
                pub const DNS_TYPE_LOC: u32 = 29u32;
                pub const DNS_TYPE_MAILA: u32 = 254u32;
                pub const DNS_TYPE_MAILB: u32 = 253u32;
                pub const DNS_TYPE_MB: u32 = 7u32;
                pub const DNS_TYPE_MD: u32 = 3u32;
                pub const DNS_TYPE_MF: u32 = 4u32;
                pub const DNS_TYPE_MG: u32 = 8u32;
                pub const DNS_TYPE_MINFO: u32 = 14u32;
                pub const DNS_TYPE_MR: u32 = 9u32;
                pub const DNS_TYPE_MX: u32 = 15u32;
                pub const DNS_TYPE_NAPTR: u32 = 35u32;
                pub const DNS_TYPE_NIMLOC: u32 = 32u32;
                pub const DNS_TYPE_NS: u32 = 2u32;
                pub const DNS_TYPE_NSAP: u32 = 22u32;
                pub const DNS_TYPE_NSAPPTR: u32 = 23u32;
                pub const DNS_TYPE_NSEC: u32 = 47u32;
                pub const DNS_TYPE_NSEC3: u32 = 50u32;
                pub const DNS_TYPE_NSEC3PARAM: u32 = 51u32;
                pub const DNS_TYPE_NULL: u32 = 10u32;
                pub const DNS_TYPE_NXT: u32 = 30u32;
                pub const DNS_TYPE_OPT: u32 = 41u32;
                pub const DNS_TYPE_PTR: u32 = 12u32;
                pub const DNS_TYPE_PX: u32 = 26u32;
                pub const DNS_TYPE_RP: u32 = 17u32;
                pub const DNS_TYPE_RRSIG: u32 = 46u32;
                pub const DNS_TYPE_RT: u32 = 21u32;
                pub const DNS_TYPE_SIG: u32 = 24u32;
                pub const DNS_TYPE_SINK: u32 = 40u32;
                pub const DNS_TYPE_SOA: u32 = 6u32;
                pub const DNS_TYPE_SRV: u32 = 33u32;
                pub const DNS_TYPE_TEXT: u32 = 16u32;
                pub const DNS_TYPE_TKEY: u32 = 249u32;
                pub const DNS_TYPE_TLSA: u32 = 52u32;
                pub const DNS_TYPE_TSIG: u32 = 250u32;
                pub const DNS_TYPE_UID: u32 = 101u32;
                pub const DNS_TYPE_UINFO: u32 = 100u32;
                pub const DNS_TYPE_UNSPEC: u32 = 103u32;
                pub const DNS_TYPE_WINS: u32 = 65281u32;
                pub const DNS_TYPE_WINSR: u32 = 65282u32;
                pub const DNS_TYPE_WKS: u32 = 11u32;
                pub const DNS_TYPE_X25: u32 = 19u32;
                pub const DNS_TYPE_ZERO: u32 = 0u32;
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_UNKNOWN_DATA {
                    pub dwByteCount: u32,
                    pub bData: [u8; 1],
                }
                impl DNS_UNKNOWN_DATA {}
                impl ::std::default::Default for DNS_UNKNOWN_DATA {
                    fn default() -> Self {
                        Self {
                            dwByteCount: 0,
                            bData: [0; 1],
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_UNKNOWN_DATA {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_UNKNOWN_DATA")
                            .field("dwByteCount", &self.dwByteCount)
                            .field("bData", &self.bData)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_UNKNOWN_DATA {
                    fn eq(&self, other: &Self) -> bool {
                        self.dwByteCount == other.dwByteCount
                            && self.bData == other.bData
                    }
                }
                impl ::std::cmp::Eq for DNS_UNKNOWN_DATA {}
                unsafe impl ::windows::Abi for DNS_UNKNOWN_DATA {
                    type Abi = Self;
                }
                pub const DNS_UPDATE_CACHE_SECURITY_CONTEXT: u32 = 512u32;
                pub const DNS_UPDATE_FORCE_SECURITY_NEGO: u32 = 2048u32;
                pub const DNS_UPDATE_REMOTE_SERVER: u32 = 16384u32;
                pub const DNS_UPDATE_RESERVED: u32 = 4294901760u32;
                pub const DNS_UPDATE_SECURITY_OFF: u32 = 16u32;
                pub const DNS_UPDATE_SECURITY_ON: u32 = 32u32;
                pub const DNS_UPDATE_SECURITY_ONLY: u32 = 256u32;
                pub const DNS_UPDATE_SECURITY_USE_DEFAULT: u32 = 0u32;
                pub const DNS_UPDATE_SKIP_NO_UPDATE_ADAPTERS: u32 = 8192u32;
                pub const DNS_UPDATE_TEST_USE_LOCAL_SYS_ACCT: u32 = 1024u32;
                pub const DNS_UPDATE_TRY_ALL_MASTER_SERVERS: u32 = 4096u32;
                pub const DNS_VALSVR_ERROR_INVALID_ADDR: u32 = 1u32;
                pub const DNS_VALSVR_ERROR_INVALID_NAME: u32 = 2u32;
                pub const DNS_VALSVR_ERROR_NO_AUTH: u32 = 5u32;
                pub const DNS_VALSVR_ERROR_NO_RESPONSE: u32 = 4u32;
                pub const DNS_VALSVR_ERROR_NO_TCP: u32 = 16u32;
                pub const DNS_VALSVR_ERROR_REFUSED: u32 = 6u32;
                pub const DNS_VALSVR_ERROR_UNKNOWN: u32 = 255u32;
                pub const DNS_VALSVR_ERROR_UNREACHABLE: u32 = 3u32;
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_WINSR_DATAA {
                    pub dwMappingFlag: u32,
                    pub dwLookupTimeout: u32,
                    pub dwCacheTimeout: u32,
                    pub pNameResultDomain: super::super::Foundation::PSTR,
                }
                impl DNS_WINSR_DATAA {}
                impl ::std::default::Default for DNS_WINSR_DATAA {
                    fn default() -> Self {
                        Self {
                            dwMappingFlag: 0,
                            dwLookupTimeout: 0,
                            dwCacheTimeout: 0,
                            pNameResultDomain:
                                ::std::default::Default::default(),
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_WINSR_DATAA {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_WINSR_DATAA")
                            .field("dwMappingFlag", &self.dwMappingFlag)
                            .field("dwLookupTimeout", &self.dwLookupTimeout)
                            .field("dwCacheTimeout", &self.dwCacheTimeout)
                            .field(
                                "pNameResultDomain",
                                &self.pNameResultDomain,
                            )
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_WINSR_DATAA {
                    fn eq(&self, other: &Self) -> bool {
                        self.dwMappingFlag == other.dwMappingFlag
                            && self.dwLookupTimeout == other.dwLookupTimeout
                            && self.dwCacheTimeout == other.dwCacheTimeout
                            && self.pNameResultDomain
                                == other.pNameResultDomain
                    }
                }
                impl ::std::cmp::Eq for DNS_WINSR_DATAA {}
                unsafe impl ::windows::Abi for DNS_WINSR_DATAA {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_WINSR_DATAW {
                    pub dwMappingFlag: u32,
                    pub dwLookupTimeout: u32,
                    pub dwCacheTimeout: u32,
                    pub pNameResultDomain: super::super::Foundation::PWSTR,
                }
                impl DNS_WINSR_DATAW {}
                impl ::std::default::Default for DNS_WINSR_DATAW {
                    fn default() -> Self {
                        Self {
                            dwMappingFlag: 0,
                            dwLookupTimeout: 0,
                            dwCacheTimeout: 0,
                            pNameResultDomain:
                                ::std::default::Default::default(),
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_WINSR_DATAW {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_WINSR_DATAW")
                            .field("dwMappingFlag", &self.dwMappingFlag)
                            .field("dwLookupTimeout", &self.dwLookupTimeout)
                            .field("dwCacheTimeout", &self.dwCacheTimeout)
                            .field(
                                "pNameResultDomain",
                                &self.pNameResultDomain,
                            )
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_WINSR_DATAW {
                    fn eq(&self, other: &Self) -> bool {
                        self.dwMappingFlag == other.dwMappingFlag
                            && self.dwLookupTimeout == other.dwLookupTimeout
                            && self.dwCacheTimeout == other.dwCacheTimeout
                            && self.pNameResultDomain
                                == other.pNameResultDomain
                    }
                }
                impl ::std::cmp::Eq for DNS_WINSR_DATAW {}
                unsafe impl ::windows::Abi for DNS_WINSR_DATAW {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_WINS_DATA {
                    pub dwMappingFlag: u32,
                    pub dwLookupTimeout: u32,
                    pub dwCacheTimeout: u32,
                    pub cWinsServerCount: u32,
                    pub WinsServers: [u32; 1],
                }
                impl DNS_WINS_DATA {}
                impl ::std::default::Default for DNS_WINS_DATA {
                    fn default() -> Self {
                        Self {
                            dwMappingFlag: 0,
                            dwLookupTimeout: 0,
                            dwCacheTimeout: 0,
                            cWinsServerCount: 0,
                            WinsServers: [0; 1],
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_WINS_DATA {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_WINS_DATA")
                            .field("dwMappingFlag", &self.dwMappingFlag)
                            .field("dwLookupTimeout", &self.dwLookupTimeout)
                            .field("dwCacheTimeout", &self.dwCacheTimeout)
                            .field("cWinsServerCount", &self.cWinsServerCount)
                            .field("WinsServers", &self.WinsServers)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_WINS_DATA {
                    fn eq(&self, other: &Self) -> bool {
                        self.dwMappingFlag == other.dwMappingFlag
                            && self.dwLookupTimeout == other.dwLookupTimeout
                            && self.dwCacheTimeout == other.dwCacheTimeout
                            && self.cWinsServerCount == other.cWinsServerCount
                            && self.WinsServers == other.WinsServers
                    }
                }
                impl ::std::cmp::Eq for DNS_WINS_DATA {}
                unsafe impl ::windows::Abi for DNS_WINS_DATA {
                    type Abi = Self;
                }
                pub const DNS_WINS_FLAG_LOCAL: u32 = 65536u32;
                pub const DNS_WINS_FLAG_SCOPE: u32 = 2147483648u32;
                #[repr(C, packed(1))]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_WIRE_QUESTION {
                    pub QuestionType: u16,
                    pub QuestionClass: u16,
                }
                impl DNS_WIRE_QUESTION {}
                unsafe impl ::windows::Abi for DNS_WIRE_QUESTION {
                    type Abi = Self;
                }
                #[repr(C, packed(1))]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_WIRE_RECORD {
                    pub RecordType: u16,
                    pub RecordClass: u16,
                    pub TimeToLive: u32,
                    pub DataLength: u16,
                }
                impl DNS_WIRE_RECORD {}
                unsafe impl ::windows::Abi for DNS_WIRE_RECORD {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DNS_WKS_DATA {
                    pub IpAddress: u32,
                    pub chProtocol: u8,
                    pub BitMask: [u8; 1],
                }
                impl DNS_WKS_DATA {}
                impl ::std::default::Default for DNS_WKS_DATA {
                    fn default() -> Self {
                        Self {
                            IpAddress: 0,
                            chProtocol: 0,
                            BitMask: [0; 1],
                        }
                    }
                }
                impl ::std::fmt::Debug for DNS_WKS_DATA {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DNS_WKS_DATA")
                            .field("IpAddress", &self.IpAddress)
                            .field("chProtocol", &self.chProtocol)
                            .field("BitMask", &self.BitMask)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DNS_WKS_DATA {
                    fn eq(&self, other: &Self) -> bool {
                        self.IpAddress == other.IpAddress
                            && self.chProtocol == other.chProtocol
                            && self.BitMask == other.BitMask
                    }
                }
                impl ::std::cmp::Eq for DNS_WKS_DATA {}
                unsafe impl ::windows::Abi for DNS_WKS_DATA {
                    type Abi = Self;
                }
                pub unsafe fn DnsAcquireContextHandle_A(
                    credentialflags: u32,
                    credentials: *mut ::std::ffi::c_void,
                    pcontext: *mut DnsContextHandle,
                ) -> i32 {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsAcquireContextHandle_A(
                                credentialflags: u32,
                                credentials: *mut ::std::ffi::c_void,
                                pcontext: *mut DnsContextHandle,
                            ) -> i32;
                        }
                        DnsAcquireContextHandle_A(
                            ::std::mem::transmute(credentialflags),
                            ::std::mem::transmute(credentials),
                            ::std::mem::transmute(pcontext),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsAcquireContextHandle_W(
                    credentialflags: u32,
                    credentials: *mut ::std::ffi::c_void,
                    pcontext: *mut DnsContextHandle,
                ) -> i32 {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsAcquireContextHandle_W(
                                credentialflags: u32,
                                credentials: *mut ::std::ffi::c_void,
                                pcontext: *mut DnsContextHandle,
                            ) -> i32;
                        }
                        DnsAcquireContextHandle_W(
                            ::std::mem::transmute(credentialflags),
                            ::std::mem::transmute(credentials),
                            ::std::mem::transmute(pcontext),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsCancelQuery(
                    pcancelhandle: *mut DNS_QUERY_CANCEL,
                ) -> i32 {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsCancelQuery(
                                pcancelhandle: *mut DNS_QUERY_CANCEL,
                            ) -> i32;
                        }
                        DnsCancelQuery(::std::mem::transmute(pcancelhandle))
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsConnectionDeletePolicyEntries(
                    policyentrytag: DNS_CONNECTION_POLICY_TAG,
                ) -> u32 {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsConnectionDeletePolicyEntries(
                                policyentrytag: DNS_CONNECTION_POLICY_TAG,
                            ) -> u32;
                        }
                        DnsConnectionDeletePolicyEntries(
                            ::std::mem::transmute(policyentrytag),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsConnectionDeleteProxyInfo<'a>(
                    pwszconnectionname: impl ::windows::IntoParam<
                        'a,
                        super::super::Foundation::PWSTR,
                    >,
                    r#type: DNS_CONNECTION_PROXY_TYPE,
                ) -> u32 {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsConnectionDeleteProxyInfo(
                                pwszconnectionname : super::super::Foundation:: PWSTR,
                                r#type: DNS_CONNECTION_PROXY_TYPE,
                            ) -> u32;
                        }
                        DnsConnectionDeleteProxyInfo(
                            pwszconnectionname.into_param().abi(),
                            ::std::mem::transmute(r#type),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsConnectionFreeNameList(
                    pnamelist: *mut DNS_CONNECTION_NAME_LIST,
                ) {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsConnectionFreeNameList(
                                pnamelist: *mut DNS_CONNECTION_NAME_LIST,
                            );
                        }
                        DnsConnectionFreeNameList(::std::mem::transmute(
                            pnamelist,
                        ))
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsConnectionFreeProxyInfo(
                    pproxyinfo: *mut DNS_CONNECTION_PROXY_INFO,
                ) {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsConnectionFreeProxyInfo(
                                pproxyinfo: *mut DNS_CONNECTION_PROXY_INFO,
                            );
                        }
                        DnsConnectionFreeProxyInfo(::std::mem::transmute(
                            pproxyinfo,
                        ))
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsConnectionFreeProxyInfoEx(
                    pproxyinfoex: *mut DNS_CONNECTION_PROXY_INFO_EX,
                ) {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsConnectionFreeProxyInfoEx(
                                pproxyinfoex : * mut DNS_CONNECTION_PROXY_INFO_EX,
                            );
                        }
                        DnsConnectionFreeProxyInfoEx(::std::mem::transmute(
                            pproxyinfoex,
                        ))
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsConnectionFreeProxyList(
                    pproxylist: *mut DNS_CONNECTION_PROXY_LIST,
                ) {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsConnectionFreeProxyList(
                                pproxylist: *mut DNS_CONNECTION_PROXY_LIST,
                            );
                        }
                        DnsConnectionFreeProxyList(::std::mem::transmute(
                            pproxylist,
                        ))
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsConnectionGetNameList(
                    pnamelist: *mut DNS_CONNECTION_NAME_LIST,
                ) -> u32 {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsConnectionGetNameList(
                                pnamelist: *mut DNS_CONNECTION_NAME_LIST,
                            ) -> u32;
                        }
                        DnsConnectionGetNameList(::std::mem::transmute(
                            pnamelist,
                        ))
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsConnectionGetProxyInfo<'a>(
                    pwszconnectionname: impl ::windows::IntoParam<
                        'a,
                        super::super::Foundation::PWSTR,
                    >,
                    r#type: DNS_CONNECTION_PROXY_TYPE,
                    pproxyinfo: *mut DNS_CONNECTION_PROXY_INFO,
                ) -> u32 {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsConnectionGetProxyInfo(
                                pwszconnectionname : super::super::Foundation:: PWSTR,
                                r#type: DNS_CONNECTION_PROXY_TYPE,
                                pproxyinfo: *mut DNS_CONNECTION_PROXY_INFO,
                            ) -> u32;
                        }
                        DnsConnectionGetProxyInfo(
                            pwszconnectionname.into_param().abi(),
                            ::std::mem::transmute(r#type),
                            ::std::mem::transmute(pproxyinfo),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsConnectionGetProxyInfoForHostUrl<'a>(
                    pwszhosturl: impl ::windows::IntoParam<
                        'a,
                        super::super::Foundation::PWSTR,
                    >,
                    pselectioncontext: *mut u8,
                    dwselectioncontextlength: u32,
                    dwexplicitinterfaceindex: u32,
                    pproxyinfoex: *mut DNS_CONNECTION_PROXY_INFO_EX,
                ) -> u32 {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsConnectionGetProxyInfoForHostUrl(
                                pwszhosturl: super::super::Foundation::PWSTR,
                                pselectioncontext: *mut u8,
                                dwselectioncontextlength: u32,
                                dwexplicitinterfaceindex: u32,
                                pproxyinfoex : * mut DNS_CONNECTION_PROXY_INFO_EX,
                            ) -> u32;
                        }
                        DnsConnectionGetProxyInfoForHostUrl(
                            pwszhosturl.into_param().abi(),
                            ::std::mem::transmute(pselectioncontext),
                            ::std::mem::transmute(dwselectioncontextlength),
                            ::std::mem::transmute(dwexplicitinterfaceindex),
                            ::std::mem::transmute(pproxyinfoex),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsConnectionGetProxyList<'a>(
                    pwszconnectionname: impl ::windows::IntoParam<
                        'a,
                        super::super::Foundation::PWSTR,
                    >,
                    pproxylist: *mut DNS_CONNECTION_PROXY_LIST,
                ) -> u32 {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsConnectionGetProxyList(
                                pwszconnectionname : super::super::Foundation:: PWSTR,
                                pproxylist: *mut DNS_CONNECTION_PROXY_LIST,
                            ) -> u32;
                        }
                        DnsConnectionGetProxyList(
                            pwszconnectionname.into_param().abi(),
                            ::std::mem::transmute(pproxylist),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsConnectionSetPolicyEntries(
                    policyentrytag: DNS_CONNECTION_POLICY_TAG,
                    ppolicyentrylist: *mut DNS_CONNECTION_POLICY_ENTRY_LIST,
                ) -> u32 {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsConnectionSetPolicyEntries(
                                policyentrytag: DNS_CONNECTION_POLICY_TAG,
                                ppolicyentrylist : * mut DNS_CONNECTION_POLICY_ENTRY_LIST,
                            ) -> u32;
                        }
                        DnsConnectionSetPolicyEntries(
                            ::std::mem::transmute(policyentrytag),
                            ::std::mem::transmute(ppolicyentrylist),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsConnectionSetProxyInfo<'a>(
                    pwszconnectionname: impl ::windows::IntoParam<
                        'a,
                        super::super::Foundation::PWSTR,
                    >,
                    r#type: DNS_CONNECTION_PROXY_TYPE,
                    pproxyinfo: *const DNS_CONNECTION_PROXY_INFO,
                ) -> u32 {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsConnectionSetProxyInfo(
                                pwszconnectionname : super::super::Foundation:: PWSTR,
                                r#type: DNS_CONNECTION_PROXY_TYPE,
                                pproxyinfo: *const DNS_CONNECTION_PROXY_INFO,
                            ) -> u32;
                        }
                        DnsConnectionSetProxyInfo(
                            pwszconnectionname.into_param().abi(),
                            ::std::mem::transmute(r#type),
                            ::std::mem::transmute(pproxyinfo),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsConnectionUpdateIfIndexTable(
                    pconnectionifindexentries : * mut DNS_CONNECTION_IFINDEX_LIST,
                ) -> u32 {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsConnectionUpdateIfIndexTable(
                                pconnectionifindexentries : * mut DNS_CONNECTION_IFINDEX_LIST,
                            ) -> u32;
                        }
                        DnsConnectionUpdateIfIndexTable(::std::mem::transmute(
                            pconnectionifindexentries,
                        ))
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                #[repr(transparent)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct DnsContextHandle(pub isize);
                impl DnsContextHandle {}
                impl ::std::default::Default for DnsContextHandle {
                    fn default() -> Self {
                        Self(0)
                    }
                }
                impl DnsContextHandle {
                    pub const NULL: Self = Self(0);
                    pub fn is_null(&self) -> bool {
                        self.0 == 0
                    }
                }
                impl ::std::fmt::Debug for DnsContextHandle {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("DnsContextHandle")
                            .field("Value", &self.0)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for DnsContextHandle {
                    fn eq(&self, other: &Self) -> bool {
                        self.0 == other.0
                    }
                }
                impl ::std::cmp::Eq for DnsContextHandle {}
                unsafe impl ::windows::Abi for DnsContextHandle {
                    type Abi = Self;
                }
                pub unsafe fn DnsExtractRecordsFromMessage_UTF8(
                    pdnsbuffer: *mut DNS_MESSAGE_BUFFER,
                    wmessagelength: u16,
                    pprecord: *mut *mut DNS_RECORDA,
                ) -> i32 {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsExtractRecordsFromMessage_UTF8(
                                pdnsbuffer: *mut DNS_MESSAGE_BUFFER,
                                wmessagelength: u16,
                                pprecord: *mut *mut DNS_RECORDA,
                            ) -> i32;
                        }
                        DnsExtractRecordsFromMessage_UTF8(
                            ::std::mem::transmute(pdnsbuffer),
                            ::std::mem::transmute(wmessagelength),
                            ::std::mem::transmute(pprecord),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsExtractRecordsFromMessage_W(
                    pdnsbuffer: *mut DNS_MESSAGE_BUFFER,
                    wmessagelength: u16,
                    pprecord: *mut *mut DNS_RECORDA,
                ) -> i32 {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsExtractRecordsFromMessage_W(
                                pdnsbuffer: *mut DNS_MESSAGE_BUFFER,
                                wmessagelength: u16,
                                pprecord: *mut *mut DNS_RECORDA,
                            ) -> i32;
                        }
                        DnsExtractRecordsFromMessage_W(
                            ::std::mem::transmute(pdnsbuffer),
                            ::std::mem::transmute(wmessagelength),
                            ::std::mem::transmute(pprecord),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsFree(
                    pdata: *mut ::std::ffi::c_void,
                    freetype: DNS_FREE_TYPE,
                ) {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsFree(
                                pdata: *mut ::std::ffi::c_void,
                                freetype: DNS_FREE_TYPE,
                            );
                        }
                        DnsFree(
                            ::std::mem::transmute(pdata),
                            ::std::mem::transmute(freetype),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsFreeProxyName(
                    proxyname: super::super::Foundation::PWSTR,
                ) {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsFreeProxyName(
                                proxyname: super::super::Foundation::PWSTR,
                            );
                        }
                        DnsFreeProxyName(::std::mem::transmute(proxyname))
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsGetProxyInformation<'a>(
                    hostname: impl ::windows::IntoParam<
                        'a,
                        super::super::Foundation::PWSTR,
                    >,
                    proxyinformation: *mut DNS_PROXY_INFORMATION,
                    defaultproxyinformation: *mut DNS_PROXY_INFORMATION,
                    completionroutine: ::std::option::Option<
                        DNS_PROXY_COMPLETION_ROUTINE,
                    >,
                    completioncontext: *mut ::std::ffi::c_void,
                ) -> u32 {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsGetProxyInformation(
                                hostname: super::super::Foundation::PWSTR,
                                proxyinformation: *mut DNS_PROXY_INFORMATION,
                                defaultproxyinformation : * mut DNS_PROXY_INFORMATION,
                                completionroutine: ::windows::RawPtr,
                                completioncontext: *mut ::std::ffi::c_void,
                            ) -> u32;
                        }
                        DnsGetProxyInformation(
                            hostname.into_param().abi(),
                            ::std::mem::transmute(proxyinformation),
                            ::std::mem::transmute(defaultproxyinformation),
                            ::std::mem::transmute(completionroutine),
                            ::std::mem::transmute(completioncontext),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsModifyRecordsInSet_A<'a>(
                    paddrecords: *mut DNS_RECORDA,
                    pdeleterecords: *mut DNS_RECORDA,
                    options: u32,
                    hcredentials: impl ::windows::IntoParam<
                        'a,
                        super::super::Foundation::HANDLE,
                    >,
                    pextralist: *mut ::std::ffi::c_void,
                    preserved: *mut ::std::ffi::c_void,
                ) -> i32 {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsModifyRecordsInSet_A(
                                paddrecords: *mut DNS_RECORDA,
                                pdeleterecords: *mut DNS_RECORDA,
                                options: u32,
                                hcredentials: super::super::Foundation::HANDLE,
                                pextralist: *mut ::std::ffi::c_void,
                                preserved: *mut ::std::ffi::c_void,
                            ) -> i32;
                        }
                        DnsModifyRecordsInSet_A(
                            ::std::mem::transmute(paddrecords),
                            ::std::mem::transmute(pdeleterecords),
                            ::std::mem::transmute(options),
                            hcredentials.into_param().abi(),
                            ::std::mem::transmute(pextralist),
                            ::std::mem::transmute(preserved),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsModifyRecordsInSet_UTF8<'a>(
                    paddrecords: *mut DNS_RECORDA,
                    pdeleterecords: *mut DNS_RECORDA,
                    options: u32,
                    hcredentials: impl ::windows::IntoParam<
                        'a,
                        super::super::Foundation::HANDLE,
                    >,
                    pextralist: *mut ::std::ffi::c_void,
                    preserved: *mut ::std::ffi::c_void,
                ) -> i32 {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsModifyRecordsInSet_UTF8(
                                paddrecords: *mut DNS_RECORDA,
                                pdeleterecords: *mut DNS_RECORDA,
                                options: u32,
                                hcredentials: super::super::Foundation::HANDLE,
                                pextralist: *mut ::std::ffi::c_void,
                                preserved: *mut ::std::ffi::c_void,
                            ) -> i32;
                        }
                        DnsModifyRecordsInSet_UTF8(
                            ::std::mem::transmute(paddrecords),
                            ::std::mem::transmute(pdeleterecords),
                            ::std::mem::transmute(options),
                            hcredentials.into_param().abi(),
                            ::std::mem::transmute(pextralist),
                            ::std::mem::transmute(preserved),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsModifyRecordsInSet_W<'a>(
                    paddrecords: *mut DNS_RECORDA,
                    pdeleterecords: *mut DNS_RECORDA,
                    options: u32,
                    hcredentials: impl ::windows::IntoParam<
                        'a,
                        super::super::Foundation::HANDLE,
                    >,
                    pextralist: *mut ::std::ffi::c_void,
                    preserved: *mut ::std::ffi::c_void,
                ) -> i32 {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsModifyRecordsInSet_W(
                                paddrecords: *mut DNS_RECORDA,
                                pdeleterecords: *mut DNS_RECORDA,
                                options: u32,
                                hcredentials: super::super::Foundation::HANDLE,
                                pextralist: *mut ::std::ffi::c_void,
                                preserved: *mut ::std::ffi::c_void,
                            ) -> i32;
                        }
                        DnsModifyRecordsInSet_W(
                            ::std::mem::transmute(paddrecords),
                            ::std::mem::transmute(pdeleterecords),
                            ::std::mem::transmute(options),
                            hcredentials.into_param().abi(),
                            ::std::mem::transmute(pextralist),
                            ::std::mem::transmute(preserved),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsNameCompare_A<'a>(
                    pname1: impl ::windows::IntoParam<
                        'a,
                        super::super::Foundation::PSTR,
                    >,
                    pname2: impl ::windows::IntoParam<
                        'a,
                        super::super::Foundation::PSTR,
                    >,
                ) -> super::super::Foundation::BOOL {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsNameCompare_A(
                                pname1: super::super::Foundation::PSTR,
                                pname2: super::super::Foundation::PSTR,
                            ) -> super::super::Foundation::BOOL;
                        }
                        DnsNameCompare_A(
                            pname1.into_param().abi(),
                            pname2.into_param().abi(),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsNameCompare_W<'a>(
                    pname1: impl ::windows::IntoParam<
                        'a,
                        super::super::Foundation::PWSTR,
                    >,
                    pname2: impl ::windows::IntoParam<
                        'a,
                        super::super::Foundation::PWSTR,
                    >,
                ) -> super::super::Foundation::BOOL {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsNameCompare_W(
                                pname1: super::super::Foundation::PWSTR,
                                pname2: super::super::Foundation::PWSTR,
                            ) -> super::super::Foundation::BOOL;
                        }
                        DnsNameCompare_W(
                            pname1.into_param().abi(),
                            pname2.into_param().abi(),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsQueryConfig<'a>(
                    config: DNS_CONFIG_TYPE,
                    flag: u32,
                    pwsadaptername: impl ::windows::IntoParam<
                        'a,
                        super::super::Foundation::PWSTR,
                    >,
                    preserved: *mut ::std::ffi::c_void,
                    pbuffer: *mut ::std::ffi::c_void,
                    pbuflen: *mut u32,
                ) -> i32 {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsQueryConfig(
                                config: DNS_CONFIG_TYPE,
                                flag: u32,
                                pwsadaptername : super::super::Foundation:: PWSTR,
                                preserved: *mut ::std::ffi::c_void,
                                pbuffer: *mut ::std::ffi::c_void,
                                pbuflen: *mut u32,
                            ) -> i32;
                        }
                        DnsQueryConfig(
                            ::std::mem::transmute(config),
                            ::std::mem::transmute(flag),
                            pwsadaptername.into_param().abi(),
                            ::std::mem::transmute(preserved),
                            ::std::mem::transmute(pbuffer),
                            ::std::mem::transmute(pbuflen),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsQueryEx(
                    pqueryrequest: *mut DNS_QUERY_REQUEST,
                    pqueryresults: *mut DNS_QUERY_RESULT,
                    pcancelhandle: *mut DNS_QUERY_CANCEL,
                ) -> i32 {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsQueryEx(
                                pqueryrequest: *mut DNS_QUERY_REQUEST_abi,
                                pqueryresults: *mut DNS_QUERY_RESULT,
                                pcancelhandle: *mut DNS_QUERY_CANCEL,
                            ) -> i32;
                        }
                        DnsQueryEx(
                            ::std::mem::transmute(pqueryrequest),
                            ::std::mem::transmute(pqueryresults),
                            ::std::mem::transmute(pcancelhandle),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsQuery_A<'a>(
                    pszname: impl ::windows::IntoParam<
                        'a,
                        super::super::Foundation::PSTR,
                    >,
                    wtype: u16,
                    options: u32,
                    pextra: *mut ::std::ffi::c_void,
                    ppqueryresults: *mut *mut DNS_RECORDA,
                    preserved: *mut *mut ::std::ffi::c_void,
                ) -> i32 {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsQuery_A(
                                pszname: super::super::Foundation::PSTR,
                                wtype: u16,
                                options: u32,
                                pextra: *mut ::std::ffi::c_void,
                                ppqueryresults: *mut *mut DNS_RECORDA,
                                preserved: *mut *mut ::std::ffi::c_void,
                            ) -> i32;
                        }
                        DnsQuery_A(
                            pszname.into_param().abi(),
                            ::std::mem::transmute(wtype),
                            ::std::mem::transmute(options),
                            ::std::mem::transmute(pextra),
                            ::std::mem::transmute(ppqueryresults),
                            ::std::mem::transmute(preserved),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsQuery_UTF8<'a>(
                    pszname: impl ::windows::IntoParam<
                        'a,
                        super::super::Foundation::PSTR,
                    >,
                    wtype: u16,
                    options: u32,
                    pextra: *mut ::std::ffi::c_void,
                    ppqueryresults: *mut *mut DNS_RECORDA,
                    preserved: *mut *mut ::std::ffi::c_void,
                ) -> i32 {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsQuery_UTF8(
                                pszname: super::super::Foundation::PSTR,
                                wtype: u16,
                                options: u32,
                                pextra: *mut ::std::ffi::c_void,
                                ppqueryresults: *mut *mut DNS_RECORDA,
                                preserved: *mut *mut ::std::ffi::c_void,
                            ) -> i32;
                        }
                        DnsQuery_UTF8(
                            pszname.into_param().abi(),
                            ::std::mem::transmute(wtype),
                            ::std::mem::transmute(options),
                            ::std::mem::transmute(pextra),
                            ::std::mem::transmute(ppqueryresults),
                            ::std::mem::transmute(preserved),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsQuery_W<'a>(
                    pszname: impl ::windows::IntoParam<
                        'a,
                        super::super::Foundation::PWSTR,
                    >,
                    wtype: u16,
                    options: u32,
                    pextra: *mut ::std::ffi::c_void,
                    ppqueryresults: *mut *mut DNS_RECORDA,
                    preserved: *mut *mut ::std::ffi::c_void,
                ) -> i32 {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsQuery_W(
                                pszname: super::super::Foundation::PWSTR,
                                wtype: u16,
                                options: u32,
                                pextra: *mut ::std::ffi::c_void,
                                ppqueryresults: *mut *mut DNS_RECORDA,
                                preserved: *mut *mut ::std::ffi::c_void,
                            ) -> i32;
                        }
                        DnsQuery_W(
                            pszname.into_param().abi(),
                            ::std::mem::transmute(wtype),
                            ::std::mem::transmute(options),
                            ::std::mem::transmute(pextra),
                            ::std::mem::transmute(ppqueryresults),
                            ::std::mem::transmute(preserved),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsRecordCompare(
                    precord1: *mut DNS_RECORDA,
                    precord2: *mut DNS_RECORDA,
                ) -> super::super::Foundation::BOOL {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsRecordCompare(
                                precord1: *mut DNS_RECORDA,
                                precord2: *mut DNS_RECORDA,
                            ) -> super::super::Foundation::BOOL;
                        }
                        DnsRecordCompare(
                            ::std::mem::transmute(precord1),
                            ::std::mem::transmute(precord2),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsRecordCopyEx(
                    precord: *mut DNS_RECORDA,
                    charsetin: DNS_CHARSET,
                    charsetout: DNS_CHARSET,
                ) -> *mut DNS_RECORDA {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsRecordCopyEx(
                                precord: *mut DNS_RECORDA,
                                charsetin: DNS_CHARSET,
                                charsetout: DNS_CHARSET,
                            ) -> *mut DNS_RECORDA;
                        }
                        DnsRecordCopyEx(
                            ::std::mem::transmute(precord),
                            ::std::mem::transmute(charsetin),
                            ::std::mem::transmute(charsetout),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsRecordSetCompare(
                    prr1: *mut DNS_RECORDA,
                    prr2: *mut DNS_RECORDA,
                    ppdiff1: *mut *mut DNS_RECORDA,
                    ppdiff2: *mut *mut DNS_RECORDA,
                ) -> super::super::Foundation::BOOL {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsRecordSetCompare(
                                prr1: *mut DNS_RECORDA,
                                prr2: *mut DNS_RECORDA,
                                ppdiff1: *mut *mut DNS_RECORDA,
                                ppdiff2: *mut *mut DNS_RECORDA,
                            ) -> super::super::Foundation::BOOL;
                        }
                        DnsRecordSetCompare(
                            ::std::mem::transmute(prr1),
                            ::std::mem::transmute(prr2),
                            ::std::mem::transmute(ppdiff1),
                            ::std::mem::transmute(ppdiff2),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsRecordSetCopyEx(
                    precordset: *mut DNS_RECORDA,
                    charsetin: DNS_CHARSET,
                    charsetout: DNS_CHARSET,
                ) -> *mut DNS_RECORDA {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsRecordSetCopyEx(
                                precordset: *mut DNS_RECORDA,
                                charsetin: DNS_CHARSET,
                                charsetout: DNS_CHARSET,
                            ) -> *mut DNS_RECORDA;
                        }
                        DnsRecordSetCopyEx(
                            ::std::mem::transmute(precordset),
                            ::std::mem::transmute(charsetin),
                            ::std::mem::transmute(charsetout),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsRecordSetDetach(
                    precordlist: *mut DNS_RECORDA,
                ) -> *mut DNS_RECORDA {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsRecordSetDetach(
                                precordlist: *mut DNS_RECORDA,
                            ) -> *mut DNS_RECORDA;
                        }
                        DnsRecordSetDetach(::std::mem::transmute(precordlist))
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsReleaseContextHandle<'a>(
                    hcontext: impl ::windows::IntoParam<
                        'a,
                        super::super::Foundation::HANDLE,
                    >,
                ) {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsReleaseContextHandle(
                                hcontext: super::super::Foundation::HANDLE,
                            );
                        }
                        DnsReleaseContextHandle(hcontext.into_param().abi())
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsReplaceRecordSetA<'a>(
                    preplaceset: *mut DNS_RECORDA,
                    options: u32,
                    hcontext: impl ::windows::IntoParam<
                        'a,
                        super::super::Foundation::HANDLE,
                    >,
                    pextrainfo: *mut ::std::ffi::c_void,
                    preserved: *mut ::std::ffi::c_void,
                ) -> i32 {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsReplaceRecordSetA(
                                preplaceset: *mut DNS_RECORDA,
                                options: u32,
                                hcontext: super::super::Foundation::HANDLE,
                                pextrainfo: *mut ::std::ffi::c_void,
                                preserved: *mut ::std::ffi::c_void,
                            ) -> i32;
                        }
                        DnsReplaceRecordSetA(
                            ::std::mem::transmute(preplaceset),
                            ::std::mem::transmute(options),
                            hcontext.into_param().abi(),
                            ::std::mem::transmute(pextrainfo),
                            ::std::mem::transmute(preserved),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsReplaceRecordSetUTF8<'a>(
                    preplaceset: *mut DNS_RECORDA,
                    options: u32,
                    hcontext: impl ::windows::IntoParam<
                        'a,
                        super::super::Foundation::HANDLE,
                    >,
                    pextrainfo: *mut ::std::ffi::c_void,
                    preserved: *mut ::std::ffi::c_void,
                ) -> i32 {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsReplaceRecordSetUTF8(
                                preplaceset: *mut DNS_RECORDA,
                                options: u32,
                                hcontext: super::super::Foundation::HANDLE,
                                pextrainfo: *mut ::std::ffi::c_void,
                                preserved: *mut ::std::ffi::c_void,
                            ) -> i32;
                        }
                        DnsReplaceRecordSetUTF8(
                            ::std::mem::transmute(preplaceset),
                            ::std::mem::transmute(options),
                            hcontext.into_param().abi(),
                            ::std::mem::transmute(pextrainfo),
                            ::std::mem::transmute(preserved),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsReplaceRecordSetW<'a>(
                    preplaceset: *mut DNS_RECORDA,
                    options: u32,
                    hcontext: impl ::windows::IntoParam<
                        'a,
                        super::super::Foundation::HANDLE,
                    >,
                    pextrainfo: *mut ::std::ffi::c_void,
                    preserved: *mut ::std::ffi::c_void,
                ) -> i32 {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsReplaceRecordSetW(
                                preplaceset: *mut DNS_RECORDA,
                                options: u32,
                                hcontext: super::super::Foundation::HANDLE,
                                pextrainfo: *mut ::std::ffi::c_void,
                                preserved: *mut ::std::ffi::c_void,
                            ) -> i32;
                        }
                        DnsReplaceRecordSetW(
                            ::std::mem::transmute(preplaceset),
                            ::std::mem::transmute(options),
                            hcontext.into_param().abi(),
                            ::std::mem::transmute(pextrainfo),
                            ::std::mem::transmute(preserved),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsServiceBrowse(
                    prequest: *mut DNS_SERVICE_BROWSE_REQUEST,
                    pcancel: *mut DNS_SERVICE_CANCEL,
                ) -> i32 {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsServiceBrowse(
                                prequest: *mut DNS_SERVICE_BROWSE_REQUEST_abi,
                                pcancel: *mut DNS_SERVICE_CANCEL,
                            ) -> i32;
                        }
                        DnsServiceBrowse(
                            ::std::mem::transmute(prequest),
                            ::std::mem::transmute(pcancel),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsServiceBrowseCancel(
                    pcancelhandle: *mut DNS_SERVICE_CANCEL,
                ) -> i32 {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsServiceBrowseCancel(
                                pcancelhandle: *mut DNS_SERVICE_CANCEL,
                            ) -> i32;
                        }
                        DnsServiceBrowseCancel(::std::mem::transmute(
                            pcancelhandle,
                        ))
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsServiceConstructInstance<'a>(
                    pservicename: impl ::windows::IntoParam<
                        'a,
                        super::super::Foundation::PWSTR,
                    >,
                    phostname: impl ::windows::IntoParam<
                        'a,
                        super::super::Foundation::PWSTR,
                    >,
                    pip4: *mut u32,
                    pip6: *mut IP6_ADDRESS,
                    wport: u16,
                    wpriority: u16,
                    wweight: u16,
                    dwpropertiescount: u32,
                    keys: *mut super::super::Foundation::PWSTR,
                    values: *mut super::super::Foundation::PWSTR,
                ) -> *mut DNS_SERVICE_INSTANCE {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsServiceConstructInstance(
                                pservicename: super::super::Foundation::PWSTR,
                                phostname: super::super::Foundation::PWSTR,
                                pip4: *mut u32,
                                pip6: *mut IP6_ADDRESS,
                                wport: u16,
                                wpriority: u16,
                                wweight: u16,
                                dwpropertiescount: u32,
                                keys: *mut super::super::Foundation::PWSTR,
                                values: *mut super::super::Foundation::PWSTR,
                            ) -> *mut DNS_SERVICE_INSTANCE;
                        }
                        DnsServiceConstructInstance(
                            pservicename.into_param().abi(),
                            phostname.into_param().abi(),
                            ::std::mem::transmute(pip4),
                            ::std::mem::transmute(pip6),
                            ::std::mem::transmute(wport),
                            ::std::mem::transmute(wpriority),
                            ::std::mem::transmute(wweight),
                            ::std::mem::transmute(dwpropertiescount),
                            ::std::mem::transmute(keys),
                            ::std::mem::transmute(values),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsServiceCopyInstance(
                    porig: *mut DNS_SERVICE_INSTANCE,
                ) -> *mut DNS_SERVICE_INSTANCE {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsServiceCopyInstance(
                                porig: *mut DNS_SERVICE_INSTANCE,
                            ) -> *mut DNS_SERVICE_INSTANCE;
                        }
                        DnsServiceCopyInstance(::std::mem::transmute(porig))
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsServiceDeRegister(
                    prequest: *mut DNS_SERVICE_REGISTER_REQUEST,
                    pcancel: *mut DNS_SERVICE_CANCEL,
                ) -> u32 {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsServiceDeRegister(
                                prequest : * mut DNS_SERVICE_REGISTER_REQUEST_abi,
                                pcancel: *mut DNS_SERVICE_CANCEL,
                            ) -> u32;
                        }
                        DnsServiceDeRegister(
                            ::std::mem::transmute(prequest),
                            ::std::mem::transmute(pcancel),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsServiceFreeInstance(
                    pinstance: *mut DNS_SERVICE_INSTANCE,
                ) {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsServiceFreeInstance(
                                pinstance: *mut DNS_SERVICE_INSTANCE,
                            );
                        }
                        DnsServiceFreeInstance(::std::mem::transmute(
                            pinstance,
                        ))
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsServiceRegister(
                    prequest: *mut DNS_SERVICE_REGISTER_REQUEST,
                    pcancel: *mut DNS_SERVICE_CANCEL,
                ) -> u32 {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsServiceRegister(
                                prequest : * mut DNS_SERVICE_REGISTER_REQUEST_abi,
                                pcancel: *mut DNS_SERVICE_CANCEL,
                            ) -> u32;
                        }
                        DnsServiceRegister(
                            ::std::mem::transmute(prequest),
                            ::std::mem::transmute(pcancel),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsServiceRegisterCancel(
                    pcancelhandle: *mut DNS_SERVICE_CANCEL,
                ) -> u32 {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsServiceRegisterCancel(
                                pcancelhandle: *mut DNS_SERVICE_CANCEL,
                            ) -> u32;
                        }
                        DnsServiceRegisterCancel(::std::mem::transmute(
                            pcancelhandle,
                        ))
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsServiceResolve(
                    prequest: *mut DNS_SERVICE_RESOLVE_REQUEST,
                    pcancel: *mut DNS_SERVICE_CANCEL,
                ) -> i32 {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsServiceResolve(
                                prequest: *mut DNS_SERVICE_RESOLVE_REQUEST_abi,
                                pcancel: *mut DNS_SERVICE_CANCEL,
                            ) -> i32;
                        }
                        DnsServiceResolve(
                            ::std::mem::transmute(prequest),
                            ::std::mem::transmute(pcancel),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsServiceResolveCancel(
                    pcancelhandle: *mut DNS_SERVICE_CANCEL,
                ) -> i32 {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsServiceResolveCancel(
                                pcancelhandle: *mut DNS_SERVICE_CANCEL,
                            ) -> i32;
                        }
                        DnsServiceResolveCancel(::std::mem::transmute(
                            pcancelhandle,
                        ))
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsStartMulticastQuery(
                    pqueryrequest: *mut MDNS_QUERY_REQUEST,
                    phandle: *mut MDNS_QUERY_HANDLE,
                ) -> i32 {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsStartMulticastQuery(
                                pqueryrequest: *mut MDNS_QUERY_REQUEST_abi,
                                phandle: *mut MDNS_QUERY_HANDLE,
                            ) -> i32;
                        }
                        DnsStartMulticastQuery(
                            ::std::mem::transmute(pqueryrequest),
                            ::std::mem::transmute(phandle),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsStopMulticastQuery(
                    phandle: *mut MDNS_QUERY_HANDLE,
                ) -> i32 {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsStopMulticastQuery(
                                phandle: *mut MDNS_QUERY_HANDLE,
                            ) -> i32;
                        }
                        DnsStopMulticastQuery(::std::mem::transmute(phandle))
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsValidateName_A<'a>(
                    pszname: impl ::windows::IntoParam<
                        'a,
                        super::super::Foundation::PSTR,
                    >,
                    format: DNS_NAME_FORMAT,
                ) -> i32 {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsValidateName_A(
                                pszname: super::super::Foundation::PSTR,
                                format: DNS_NAME_FORMAT,
                            ) -> i32;
                        }
                        DnsValidateName_A(
                            pszname.into_param().abi(),
                            ::std::mem::transmute(format),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsValidateName_UTF8<'a>(
                    pszname: impl ::windows::IntoParam<
                        'a,
                        super::super::Foundation::PSTR,
                    >,
                    format: DNS_NAME_FORMAT,
                ) -> i32 {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsValidateName_UTF8(
                                pszname: super::super::Foundation::PSTR,
                                format: DNS_NAME_FORMAT,
                            ) -> i32;
                        }
                        DnsValidateName_UTF8(
                            pszname.into_param().abi(),
                            ::std::mem::transmute(format),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsValidateName_W<'a>(
                    pszname: impl ::windows::IntoParam<
                        'a,
                        super::super::Foundation::PWSTR,
                    >,
                    format: DNS_NAME_FORMAT,
                ) -> i32 {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsValidateName_W(
                                pszname: super::super::Foundation::PWSTR,
                                format: DNS_NAME_FORMAT,
                            ) -> i32;
                        }
                        DnsValidateName_W(
                            pszname.into_param().abi(),
                            ::std::mem::transmute(format),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsWriteQuestionToBuffer_UTF8<'a>(
                    pdnsbuffer: *mut DNS_MESSAGE_BUFFER,
                    pdwbuffersize: *mut u32,
                    pszname: impl ::windows::IntoParam<
                        'a,
                        super::super::Foundation::PSTR,
                    >,
                    wtype: u16,
                    xid: u16,
                    frecursiondesired: impl ::windows::IntoParam<
                        'a,
                        super::super::Foundation::BOOL,
                    >,
                ) -> super::super::Foundation::BOOL {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsWriteQuestionToBuffer_UTF8(
                                pdnsbuffer: *mut DNS_MESSAGE_BUFFER,
                                pdwbuffersize: *mut u32,
                                pszname: super::super::Foundation::PSTR,
                                wtype: u16,
                                xid: u16,
                                frecursiondesired : super::super::Foundation:: BOOL,
                            ) -> super::super::Foundation::BOOL;
                        }
                        DnsWriteQuestionToBuffer_UTF8(
                            ::std::mem::transmute(pdnsbuffer),
                            ::std::mem::transmute(pdwbuffersize),
                            pszname.into_param().abi(),
                            ::std::mem::transmute(wtype),
                            ::std::mem::transmute(xid),
                            frecursiondesired.into_param().abi(),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub unsafe fn DnsWriteQuestionToBuffer_W<'a>(
                    pdnsbuffer: *mut DNS_MESSAGE_BUFFER,
                    pdwbuffersize: *mut u32,
                    pszname: impl ::windows::IntoParam<
                        'a,
                        super::super::Foundation::PWSTR,
                    >,
                    wtype: u16,
                    xid: u16,
                    frecursiondesired: impl ::windows::IntoParam<
                        'a,
                        super::super::Foundation::BOOL,
                    >,
                ) -> super::super::Foundation::BOOL {
                    #[cfg(windows)]
                    {
                        #[link(name = "DNSAPI")]
                        extern "system" {
                            fn DnsWriteQuestionToBuffer_W(
                                pdnsbuffer: *mut DNS_MESSAGE_BUFFER,
                                pdwbuffersize: *mut u32,
                                pszname: super::super::Foundation::PWSTR,
                                wtype: u16,
                                xid: u16,
                                frecursiondesired : super::super::Foundation:: BOOL,
                            ) -> super::super::Foundation::BOOL;
                        }
                        DnsWriteQuestionToBuffer_W(
                            ::std::mem::transmute(pdnsbuffer),
                            ::std::mem::transmute(pdwbuffersize),
                            pszname.into_param().abi(),
                            ::std::mem::transmute(wtype),
                            ::std::mem::transmute(xid),
                            frecursiondesired.into_param().abi(),
                        )
                    }
                    #[cfg(not(windows))]
                    unimplemented!("Unsupported target OS");
                }
                pub const IP4_ADDRESS_STRING_BUFFER_LENGTH: u32 = 16u32;
                pub const IP4_ADDRESS_STRING_LENGTH: u32 = 16u32;
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct IP4_ARRAY {
                    pub AddrCount: u32,
                    pub AddrArray: [u32; 1],
                }
                impl IP4_ARRAY {}
                impl ::std::default::Default for IP4_ARRAY {
                    fn default() -> Self {
                        Self {
                            AddrCount: 0,
                            AddrArray: [0; 1],
                        }
                    }
                }
                impl ::std::fmt::Debug for IP4_ARRAY {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("IP4_ARRAY")
                            .field("AddrCount", &self.AddrCount)
                            .field("AddrArray", &self.AddrArray)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for IP4_ARRAY {
                    fn eq(&self, other: &Self) -> bool {
                        self.AddrCount == other.AddrCount
                            && self.AddrArray == other.AddrArray
                    }
                }
                impl ::std::cmp::Eq for IP4_ARRAY {}
                unsafe impl ::windows::Abi for IP4_ARRAY {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub union IP6_ADDRESS {
                    pub IP6Qword: [u64; 2],
                    pub IP6Dword: [u32; 4],
                    pub IP6Word: [u16; 8],
                    pub IP6Byte: [u8; 16],
                }
                impl IP6_ADDRESS {}
                unsafe impl ::windows::Abi for IP6_ADDRESS {
                    type Abi = Self;
                }
                pub const IP6_ADDRESS_STRING_BUFFER_LENGTH: u32 = 65u32;
                pub const IP6_ADDRESS_STRING_LENGTH: u32 = 65u32;
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct MDNS_QUERY_HANDLE {
                    pub nameBuf: [u16; 256],
                    pub wType: u16,
                    pub pSubscription: *mut ::std::ffi::c_void,
                    pub pWnfCallbackParams: *mut ::std::ffi::c_void,
                    pub stateNameData: [u32; 2],
                }
                impl MDNS_QUERY_HANDLE {}
                impl ::std::default::Default for MDNS_QUERY_HANDLE {
                    fn default() -> Self {
                        Self {
                            nameBuf: [0; 256],
                            wType: 0,
                            pSubscription: ::std::ptr::null_mut(),
                            pWnfCallbackParams: ::std::ptr::null_mut(),
                            stateNameData: [0; 2],
                        }
                    }
                }
                impl ::std::fmt::Debug for MDNS_QUERY_HANDLE {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("MDNS_QUERY_HANDLE")
                            .field("nameBuf", &self.nameBuf)
                            .field("wType", &self.wType)
                            .field("pSubscription", &self.pSubscription)
                            .field(
                                "pWnfCallbackParams",
                                &self.pWnfCallbackParams,
                            )
                            .field("stateNameData", &self.stateNameData)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for MDNS_QUERY_HANDLE {
                    fn eq(&self, other: &Self) -> bool {
                        self.nameBuf == other.nameBuf
                            && self.wType == other.wType
                            && self.pSubscription == other.pSubscription
                            && self.pWnfCallbackParams
                                == other.pWnfCallbackParams
                            && self.stateNameData == other.stateNameData
                    }
                }
                impl ::std::cmp::Eq for MDNS_QUERY_HANDLE {}
                unsafe impl ::windows::Abi for MDNS_QUERY_HANDLE {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(:: std :: clone :: Clone)]
                pub struct MDNS_QUERY_REQUEST {
                    pub Version: u32,
                    pub ulRefCount: u32,
                    pub Query: super::super::Foundation::PWSTR,
                    pub QueryType: u16,
                    pub QueryOptions: u64,
                    pub InterfaceIndex: u32,
                    pub pQueryCallback:
                        ::std::option::Option<PMDNS_QUERY_CALLBACK>,
                    pub pQueryContext: *mut ::std::ffi::c_void,
                    pub fAnswerReceived: super::super::Foundation::BOOL,
                    pub ulResendCount: u32,
                }
                impl MDNS_QUERY_REQUEST {}
                impl ::std::default::Default for MDNS_QUERY_REQUEST {
                    fn default() -> Self {
                        Self {
                            Version: 0,
                            ulRefCount: 0,
                            Query: ::std::default::Default::default(),
                            QueryType: 0,
                            QueryOptions: 0,
                            InterfaceIndex: 0,
                            pQueryCallback: ::std::default::Default::default(),
                            pQueryContext: ::std::ptr::null_mut(),
                            fAnswerReceived: ::std::default::Default::default(
                            ),
                            ulResendCount: 0,
                        }
                    }
                }
                impl ::std::fmt::Debug for MDNS_QUERY_REQUEST {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("MDNS_QUERY_REQUEST")
                            .field("Version", &self.Version)
                            .field("ulRefCount", &self.ulRefCount)
                            .field("Query", &self.Query)
                            .field("QueryType", &self.QueryType)
                            .field("QueryOptions", &self.QueryOptions)
                            .field("InterfaceIndex", &self.InterfaceIndex)
                            .field("pQueryContext", &self.pQueryContext)
                            .field("fAnswerReceived", &self.fAnswerReceived)
                            .field("ulResendCount", &self.ulResendCount)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for MDNS_QUERY_REQUEST {
                    fn eq(&self, other: &Self) -> bool {
                        self.Version == other.Version
                            && self.ulRefCount == other.ulRefCount
                            && self.Query == other.Query
                            && self.QueryType == other.QueryType
                            && self.QueryOptions == other.QueryOptions
                            && self.InterfaceIndex == other.InterfaceIndex
                            && self.pQueryCallback.map(|f| f as usize)
                                == other.pQueryCallback.map(|f| f as usize)
                            && self.pQueryContext == other.pQueryContext
                            && self.fAnswerReceived == other.fAnswerReceived
                            && self.ulResendCount == other.ulResendCount
                    }
                }
                impl ::std::cmp::Eq for MDNS_QUERY_REQUEST {}
                #[repr(C)]
                #[doc(hidden)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct MDNS_QUERY_REQUEST_abi {
                    pub Version: u32,
                    pub ulRefCount: u32,
                    pub Query: super::super::Foundation::PWSTR,
                    pub QueryType: u16,
                    pub QueryOptions: u64,
                    pub InterfaceIndex: u32,
                    pub pQueryCallback: ::windows::RawPtr,
                    pub pQueryContext: *mut ::std::ffi::c_void,
                    pub fAnswerReceived: super::super::Foundation::BOOL,
                    pub ulResendCount: u32,
                }
                unsafe impl ::windows::Abi for MDNS_QUERY_REQUEST {
                    type Abi = MDNS_QUERY_REQUEST_abi;
                }
                pub type PDNS_QUERY_COMPLETION_ROUTINE =
                    unsafe extern "system" fn(
                        pquerycontext: *mut ::std::ffi::c_void,
                        pqueryresults: *mut DNS_QUERY_RESULT,
                    );
                pub type PDNS_SERVICE_BROWSE_CALLBACK =
                    unsafe extern "system" fn(
                        status: u32,
                        pquerycontext: *mut ::std::ffi::c_void,
                        pdnsrecord: *mut DNS_RECORDA,
                    );
                pub type PDNS_SERVICE_REGISTER_COMPLETE =
                    unsafe extern "system" fn(
                        status: u32,
                        pquerycontext: *mut ::std::ffi::c_void,
                        pinstance: *mut DNS_SERVICE_INSTANCE,
                    );
                pub type PDNS_SERVICE_RESOLVE_COMPLETE =
                    unsafe extern "system" fn(
                        status: u32,
                        pquerycontext: *mut ::std::ffi::c_void,
                        pinstance: *mut DNS_SERVICE_INSTANCE,
                    );
                pub type PMDNS_QUERY_CALLBACK = unsafe extern "system" fn(
                    pquerycontext: *mut ::std::ffi::c_void,
                    pqueryhandle: *mut MDNS_QUERY_HANDLE,
                    pqueryresults: *mut DNS_QUERY_RESULT,
                );
                pub const SIZEOF_IP4_ADDRESS: u32 = 4u32;
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct _DnsRecordOptA {
                    pub pNext: *mut DNS_RECORDA,
                    pub pName: super::super::Foundation::PSTR,
                    pub wType: u16,
                    pub wDataLength: u16,
                    pub Flags: _DnsRecordOptA_1,
                    pub ExtHeader: DNS_HEADER_EXT,
                    pub wPayloadSize: u16,
                    pub wReserved: u16,
                    pub Data: _DnsRecordOptA_0,
                }
                impl _DnsRecordOptA {}
                unsafe impl ::windows::Abi for _DnsRecordOptA {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub union _DnsRecordOptA_0 {
                    pub OPT: DNS_OPT_DATA,
                    pub Opt: DNS_OPT_DATA,
                }
                impl _DnsRecordOptA_0 {}
                unsafe impl ::windows::Abi for _DnsRecordOptA_0 {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub union _DnsRecordOptA_1 {
                    pub DW: u32,
                    pub S: DNS_RECORD_FLAGS,
                }
                impl _DnsRecordOptA_1 {}
                unsafe impl ::windows::Abi for _DnsRecordOptA_1 {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct _DnsRecordOptW {
                    pub pNext: *mut DNS_RECORDW,
                    pub pName: super::super::Foundation::PWSTR,
                    pub wType: u16,
                    pub wDataLength: u16,
                    pub Flags: _DnsRecordOptW_1,
                    pub ExtHeader: DNS_HEADER_EXT,
                    pub wPayloadSize: u16,
                    pub wReserved: u16,
                    pub Data: _DnsRecordOptW_0,
                }
                impl _DnsRecordOptW {}
                unsafe impl ::windows::Abi for _DnsRecordOptW {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub union _DnsRecordOptW_0 {
                    pub OPT: DNS_OPT_DATA,
                    pub Opt: DNS_OPT_DATA,
                }
                impl _DnsRecordOptW_0 {}
                unsafe impl ::windows::Abi for _DnsRecordOptW_0 {
                    type Abi = Self;
                }
                #[repr(C)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub union _DnsRecordOptW_1 {
                    pub DW: u32,
                    pub S: DNS_RECORD_FLAGS,
                }
                impl _DnsRecordOptW_1 {}
                unsafe impl ::windows::Abi for _DnsRecordOptW_1 {
                    type Abi = Self;
                }
            }
        }
        #[allow(
            unused_variables,
            non_upper_case_globals,
            non_snake_case,
            unused_unsafe,
            non_camel_case_types,
            dead_code,
            clippy::all
        )]
        pub mod System {
            #[allow(
                unused_variables,
                non_upper_case_globals,
                non_snake_case,
                unused_unsafe,
                non_camel_case_types,
                dead_code,
                clippy::all
            )]
            pub mod SystemServices {
                #[repr(transparent)]
                #[derive(
                    :: std :: clone :: Clone, :: std :: marker :: Copy,
                )]
                pub struct CHAR(pub u8);
                impl CHAR {}
                impl ::std::default::Default for CHAR {
                    fn default() -> Self {
                        Self(0)
                    }
                }
                impl CHAR {
                    pub const NULL: Self = Self(0);
                    pub fn is_null(&self) -> bool {
                        self.0 == 0
                    }
                }
                impl ::std::fmt::Debug for CHAR {
                    fn fmt(
                        &self,
                        fmt: &mut ::std::fmt::Formatter<'_>,
                    ) -> ::std::fmt::Result {
                        fmt.debug_struct("CHAR")
                            .field("Value", &self.0)
                            .finish()
                    }
                }
                impl ::std::cmp::PartialEq for CHAR {
                    fn eq(&self, other: &Self) -> bool {
                        self.0 == other.0
                    }
                }
                impl ::std::cmp::Eq for CHAR {}
                unsafe impl ::windows::Abi for CHAR {
                    type Abi = Self;
                }
            }
        }
    }
}