75 lines
1.6 KiB
C
75 lines
1.6 KiB
C
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
|
|
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
|
|
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
|
|
// PARTICULAR PURPOSE.
|
|
//
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//
|
|
// Abstract:
|
|
//
|
|
// This module declares message structures for a
|
|
// simple discovery protocol.
|
|
|
|
#pragma once
|
|
|
|
enum TMessageType
|
|
{
|
|
Hello,
|
|
Bye,
|
|
Query,
|
|
Reply
|
|
};
|
|
|
|
struct TDeviceInfo
|
|
{
|
|
WCHAR szDeviceCategory[129];
|
|
WCHAR szFriendlyName[81];
|
|
WCHAR szManufacturer[81];
|
|
WCHAR szManufacturerUrl[129];
|
|
WCHAR szModelName[81];
|
|
WCHAR szModelNumber[31];
|
|
WCHAR szModelUrl[129];
|
|
WCHAR szUpc[13];
|
|
WCHAR szFirmwareVersion[13];
|
|
WCHAR szSerialNumber[13];
|
|
WCHAR szPresentationUrl[81];
|
|
WCHAR szPnPHardwareId[200];
|
|
};
|
|
|
|
struct TMessage
|
|
{
|
|
TMessageType MessageType;
|
|
};
|
|
|
|
struct THelloMessage
|
|
{
|
|
TMessageType MessageType;
|
|
GUID DeviceId;
|
|
TDeviceInfo DeviceInfo;
|
|
};
|
|
|
|
struct TByeMessage
|
|
{
|
|
TMessageType MessageType;
|
|
GUID DeviceId;
|
|
};
|
|
|
|
struct TQueryMessage
|
|
{
|
|
TMessageType MessageType;
|
|
WCHAR szDeviceCategory[31];
|
|
};
|
|
|
|
struct TReplyMessage
|
|
{
|
|
TMessageType MessageType;
|
|
GUID DeviceId;
|
|
TDeviceInfo DeviceInfo;
|
|
};
|
|
|
|
// Declare the multicast socket for the discovery protocol.
|
|
// These values are chosen arbitarily for this sample.
|
|
const WCHAR szMulticastAddress[] = L"FF02::73F7";
|
|
const WCHAR szMulticastPort[] = L"45394";
|
|
const LONGLONG QueryTimeout= 10000; // 10 seconds
|
|
const ULONG MaxMessageSize = sizeof(THelloMessage); |