280 lines
4.9 KiB
C
280 lines
4.9 KiB
C
|
/*++
|
||
|
|
||
|
Copyright (c) 2000 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
homenetp.h
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
Header file for functions shared in home network transport.
|
||
|
|
||
|
Author:
|
||
|
|
||
|
Jim Schmidt (jimschm) 03-Jul-2000
|
||
|
|
||
|
Revision History:
|
||
|
|
||
|
<alias> <date> <comments>
|
||
|
|
||
|
--*/
|
||
|
|
||
|
//
|
||
|
// Includes
|
||
|
//
|
||
|
|
||
|
#include "logmsg.h"
|
||
|
|
||
|
//
|
||
|
// Strings
|
||
|
//
|
||
|
|
||
|
#define S_TRANSPORT_DAT_FILE TEXT("TRANSDB.DAT")
|
||
|
#define S_TRANSPORT_IMG_FILE TEXT("IMG%05X.DAT")
|
||
|
|
||
|
|
||
|
//
|
||
|
// Constants
|
||
|
//
|
||
|
|
||
|
#define GLOBALKEY_SIZE 8
|
||
|
|
||
|
#define HOMENETTR_SIG 0x55534D32 //USM2
|
||
|
|
||
|
#define TRSTATUS_DIRTY 0x00000001
|
||
|
#define TRSTATUS_READY 0x00000002
|
||
|
#define TRSTATUS_LOCKED 0x00000003
|
||
|
|
||
|
#define TRFLAG_FILE 0x01
|
||
|
#define TRFLAG_MEMORY 0x02
|
||
|
|
||
|
#define MESSAGE_ERROR 0x0000
|
||
|
#define MESSAGE_FILE 0x0001
|
||
|
#define MESSAGE_DONE 0x0002
|
||
|
#define MESSAGE_KEEP_ALIVE 0x0003
|
||
|
#define MESSAGE_DATA 0x0004
|
||
|
#define MESSAGE_PASSWORDWRONG 0x0005
|
||
|
#define MESSAGE_PASSWORDOK 0x0006
|
||
|
#define MESSAGE_CANCEL 0x0007
|
||
|
|
||
|
#define MAX_SOCKADDR (max(sizeof(SOCKADDR_IN),max(sizeof(SOCKADDR_IPX),sizeof(SOCKADDR_NB))))
|
||
|
|
||
|
|
||
|
//
|
||
|
// Macros
|
||
|
//
|
||
|
|
||
|
// None
|
||
|
|
||
|
//
|
||
|
// Types
|
||
|
//
|
||
|
|
||
|
#pragma pack(push,1)
|
||
|
|
||
|
typedef struct {
|
||
|
WORD PacketNumber;
|
||
|
WORD DataLength;
|
||
|
} DATAGRAM_PACKET, *PDATAGRAM_PACKET;
|
||
|
|
||
|
#pragma pack(pop)
|
||
|
|
||
|
typedef struct TAG_DATAGRAM_POOL_ITEM {
|
||
|
struct TAG_DATAGRAM_POOL_ITEM *Next, *Prev;
|
||
|
DATAGRAM_PACKET Header;
|
||
|
PCBYTE PacketData;
|
||
|
// PacketData follows
|
||
|
} DATAGRAM_POOL_ITEM, *PDATAGRAM_POOL_ITEM;
|
||
|
|
||
|
typedef struct {
|
||
|
PMHANDLE Pool;
|
||
|
PDATAGRAM_POOL_ITEM FirstItem;
|
||
|
WORD SendSequenceNumber;
|
||
|
WORD RecvSequenceNumber;
|
||
|
UINT LastPacketNumber;
|
||
|
} DATAGRAM_POOL, *PDATAGRAM_POOL;
|
||
|
|
||
|
typedef struct {
|
||
|
SOCKET Socket;
|
||
|
BYTE LocalAddress[MAX_SOCKADDR];
|
||
|
INT LocalAddressLen;
|
||
|
BYTE RemoteAddress[MAX_SOCKADDR];
|
||
|
INT RemoteAddressLen;
|
||
|
INT Family;
|
||
|
INT Protocol;
|
||
|
DATAGRAM_POOL DatagramPool;
|
||
|
BOOL Datagram;
|
||
|
UINT LastSend;
|
||
|
UINT KeepAliveSpacing;
|
||
|
} CONNECTIONSOCKET, *PCONNECTIONSOCKET;
|
||
|
|
||
|
typedef struct {
|
||
|
BYTE LocalAddress[MAX_SOCKADDR];
|
||
|
INT LocalAddressLen;
|
||
|
BYTE RemoteAddress[MAX_SOCKADDR];
|
||
|
INT RemoteAddressLen;
|
||
|
INT Family;
|
||
|
INT Protocol;
|
||
|
BOOL Datagram;
|
||
|
TCHAR DestinationName[MAX_COMPUTER_NAME];
|
||
|
} CONNECTADDRESS, *PCONNECTADDRESS;
|
||
|
|
||
|
typedef struct {
|
||
|
UINT StructSize;
|
||
|
DWORD Signature;
|
||
|
UINT FileCount;
|
||
|
LONGLONG TotalSize;
|
||
|
TCHAR SourceName[MAX_COMPUTER_NAME];
|
||
|
} TRANSFERMETRICS, *PTRANSFERMETRICS;
|
||
|
|
||
|
//
|
||
|
// Globals
|
||
|
//
|
||
|
|
||
|
extern PCTSTR g_TransportTempDir;
|
||
|
extern PCTSTR g_StatusFile;
|
||
|
extern HANDLE g_StatusFileHandle;
|
||
|
extern UINT g_Platform;
|
||
|
extern TRANSFERMETRICS g_Metrics;
|
||
|
extern CONNECTIONSOCKET g_Connection;
|
||
|
extern BOOL g_CompressData;
|
||
|
extern HANDLE g_BackgroundThread;
|
||
|
extern HANDLE g_BackgroundThreadTerminate;
|
||
|
extern MIG_PROGRESSSLICEID g_DownloadSlice;
|
||
|
extern UINT g_DownloadTicks;
|
||
|
extern UINT g_DownloadSliceSize;
|
||
|
extern CHAR g_GlobalKey [GLOBALKEY_SIZE + 1];
|
||
|
|
||
|
//
|
||
|
// Macro expansion list
|
||
|
//
|
||
|
|
||
|
// None
|
||
|
|
||
|
//
|
||
|
// Public function prototypes
|
||
|
//
|
||
|
|
||
|
BOOL
|
||
|
FindDestination (
|
||
|
OUT PCONNECTADDRESS Address,
|
||
|
IN UINT Timeout, OPTIONAL
|
||
|
IN BOOL IgnoreMultipleDests
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
TestConnection (
|
||
|
IN PCONNECTADDRESS Address
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
ConnectToDestination (
|
||
|
IN PCONNECTADDRESS Address,
|
||
|
IN PTRANSFERMETRICS Metrics,
|
||
|
OUT PCONNECTIONSOCKET Connection
|
||
|
);
|
||
|
|
||
|
DWORD
|
||
|
SendMessageToDestination (
|
||
|
IN PCONNECTIONSOCKET Connection,
|
||
|
IN DWORD Message
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
SendFileToDestination (
|
||
|
IN PCONNECTIONSOCKET Connection,
|
||
|
IN PCTSTR LocalPath, OPTIONAL
|
||
|
IN PCTSTR DestSubPath OPTIONAL
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
SendDataToDestination (
|
||
|
IN PCONNECTIONSOCKET Connection,
|
||
|
IN PCBYTE Data,
|
||
|
IN UINT DataSize
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
ConnectToSource (
|
||
|
OUT PCONNECTIONSOCKET Connection,
|
||
|
OUT PTRANSFERMETRICS Metrics
|
||
|
);
|
||
|
|
||
|
DWORD
|
||
|
ReceiveFromSource (
|
||
|
IN PCONNECTIONSOCKET Connection,
|
||
|
IN PCTSTR LocalFileRoot,
|
||
|
OUT PBYTE *Buffer,
|
||
|
IN UINT Timeout OPTIONAL
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
CloseConnection (
|
||
|
IN PCONNECTIONSOCKET Connection
|
||
|
);
|
||
|
|
||
|
|
||
|
DWORD
|
||
|
GetTransportStatus (
|
||
|
IN PCTSTR TrJournal,
|
||
|
OUT PBOOL Compressed OPTIONAL
|
||
|
);
|
||
|
|
||
|
PCTSTR
|
||
|
BuildImageFileName (
|
||
|
IN UINT ImageIdx
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
FreeImageFileName (
|
||
|
IN PCTSTR ImageFileName
|
||
|
);
|
||
|
|
||
|
PCTSTR
|
||
|
CreateStorageDir (
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
PCTSTR
|
||
|
BuildDecoratedObject (
|
||
|
IN MIG_OBJECTTYPEID ObjectTypeId,
|
||
|
IN ENCODEDSTRHANDLE ObjectName
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
DestroyDecoratedObject (
|
||
|
IN PCTSTR String
|
||
|
);
|
||
|
|
||
|
PCTSTR
|
||
|
AllocStorageFileName (
|
||
|
IN PCTSTR FileName OPTIONAL
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
FreeStorageFileName (
|
||
|
IN PCTSTR NameToFree
|
||
|
);
|
||
|
|
||
|
DWORD
|
||
|
WINAPI
|
||
|
DestinationBackgroundThread (
|
||
|
PVOID DontCare
|
||
|
);
|
||
|
|
||
|
//
|
||
|
// Macro expansion definition
|
||
|
//
|
||
|
|
||
|
// None
|
||
|
|
||
|
//
|
||
|
// ANSI/UNICODE macros
|
||
|
//
|
||
|
|
||
|
// None
|
||
|
|
||
|
|
||
|
|