windows-nt/Source/XPSP1/NT/windows/winstate/cobra/modules/guitrans/homenetp.h
2020-09-26 16:20:57 +08:00

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