return isEthernetMACAddress;
}

/**
 @helper_function="HlprEthernetMACAddressStringToValue"
 
   Purpose:  Convert a string representing an Ethernet MAC Address to it's 6 BYTE value.        <br>
                                                                                                <br>
   Notes:                                                                                       <br>
                                                                                                <br>
   MSDN_Ref:                                                                                    <br>
*/
_Success_(return == NO_ERROR)
UINT32 HlprEthernetMACAddressStringToValue(_In_ PCWSTR pEthernetMACAddressString,
                                           _Inout_updates_all_(IEEE_802_ADDRESS_LENGTH) BYTE* pEthernetMACAddress)
{
   UINT32 status = NO_ERROR;

   if(pEthernetMACAddressString &&
      HlprEthernetMACAddressStringIsValidFormat(pEthernetMACAddressString))
   {
      UINT32 offset       = 0;
      UINT32 bytePosition = 0x10;

      ZeroMemory(pEthernetMACAddress,
                 IEEE_802_ADDRESS_LENGTH);

#pragma warning(push)
#pragma warning(disable: 26018) /// length validation occurs in HlprEthernetMACAddressStringIsValidFormat
    return isIPv6Address;
}

/**
 @helper_function="HlprIPAddressV4StringToValue"

   Purpose:  Convert a string representing an IPv6 Address to it's 16 BYTE value.               <br>
                                                                                                <br>
   Notes:                                                                                       <br>
                                                                                                <br>
   MSDN_Ref: HTTP://MSDN.Microsoft.com/En-US/Library/Windows/Desktop/AA814463.aspx              <br>
*/
_Success_(return == NO_ERROR)
UINT32 HlprIPAddressV6StringToValue(_In_ PCWSTR pIPv6AddressString,
                                    _Inout_updates_all_(IPV6_ADDRESS_LENGTH) BYTE* pIPv6Address)
{
    ASSERT(pIPv6AddressString);
    ASSERT(pIPv6Address);

    UINT32 status = NO_ERROR;

    if(HlprIPAddressV6StringIsValidFormat(pIPv6AddressString))
    {
        UINT32   scopeId = 0;
        UINT16   port    = 0;
        IN6_ADDR v6Addr  = {0};

        status = RtlIpv6StringToAddressEx(pIPv6AddressString,
                                          &v6Addr,
                                          (PULONG)&scopeId,
    IN USHORT   Function
    );

HMODULE
LoadWdfCoInstaller(
    VOID
    );

VOID
UnloadWdfCoInstaller(
    HMODULE Library
    );

BOOLEAN
SetupDriverName(
    _Inout_updates_all_(BufferLength) PCHAR DriverLocation,
    _In_ ULONG BufferLength
    );

BOOLEAN
DoFileReadWrite(
    HANDLE HDevice
    );

VOID
DoIoctls(
    HANDLE hDevice
    );

// for example, WDF 1.9 is "01009". the size 6 includes the ending NULL marker
//