Q&A

  • cchannel.h 파일안의 내용을 델파이로 어떻게??


안녕하세요...



C++ Builder의 cchannel.h 안에 정의되어 있는 함수나 내용들을..



델파이로 어떻게 변환해야 하는지 좀 가르켜 주시기 바랍니다...



코드가 무슨 내용인지는 몰라도 변환할 수 있는 분은 있으리라 생각됩니다..



부탁 드립니다..



----------------------------------------------------------------------------

/****************************************************************************/

/* Header: cchannel.h */

/* Purpose: Virtual Channel Client API */

/* Copyright(C) Microsoft Corporation 1999 */

/****************************************************************************/



#ifndef H_CCHANNEL

#pragma option push -b -a8 -pc -A- /*P_O_Push*/

#define H_CCHANNEL



/****************************************************************************/

/* Include Virtual Channel Protocol header */

/****************************************************************************/

#include



#ifdef _WIN32

#define VCAPITYPE _stdcall

#define VCEXPORT

#else // _WIN32

#define VCAPITYPE CALLBACK

#define VCEXPORT __export

#endif // _WIN32



/****************************************************************************/

/* Name: CHANNEL_INIT_EVENT_FN */

/* */

/* Purpose: */

/* This function is passed to MSTSC on VirtualChannelInit. It is called by */

/* MSTSC to tell the application about interesting events. */

/* */

/* Returns: */

/* none */

/* */

/* Params: */

/* - pInitHandle - a handle uniquely identifying this connection */

/* - event - the event that has occurred - see CHANNEL_EVENT_XXX below */

/* - pData - data associated with the event - see CHANNEL_EVENT_XXX below */

/* - dataLength - length of the data. */

/* */

/****************************************************************************/

typedef VOID VCAPITYPE CHANNEL_INIT_EVENT_FN(LPVOID pInitHandle,

UINT event,

LPVOID pData,

UINT dataLength);



typedef CHANNEL_INIT_EVENT_FN FAR * PCHANNEL_INIT_EVENT_FN;



/****************************************************************************/

/* Events passed to VirtualChannelInitEvent */

/****************************************************************************/

/* Client initialized (no data) */

#define CHANNEL_EVENT_INITIALIZED 0



/* Connection established (data = name of Server) */

#define CHANNEL_EVENT_CONNECTED 1



/* Connection established with old Server, so no channel support */

#define CHANNEL_EVENT_V1_CONNECTED 2



/* Connection ended (no data) */

#define CHANNEL_EVENT_DISCONNECTED 3



/* Client terminated (no data) */

#define CHANNEL_EVENT_TERMINATED 4



/****************************************************************************/

/* Name: CHANNEL_OPEN_EVENT_FN */

/* */

/* Purpose: */

/* */

/* This function is passed to MSTSC on VirtualChannelOpen. It is called by */

/* MSTSC when data is available on the channel. */

/* */

/* Returns: */

/* */

/* none */

/* */

/* Params: */

/* */

/* - openHandle - a handle uniquely identifying this channel */

/* - event - event that has occurred - see CHANNEL_EVENT_XXX below */

/* - pData - data received */

/* - dataLength - length of the data */

/* - totalLength - total length of data written by the Server */

/* - dataFlags - flags, zero, one or more of: */

/* - 0x01 - beginning of data from a single write operation at the Server */

/* - 0x02 - end of data from a single write operation at the Server. */

/* */

/****************************************************************************/

typedef VOID VCAPITYPE CHANNEL_OPEN_EVENT_FN(DWORD openHandle,

UINT event,

LPVOID pData,

UINT32 dataLength,

UINT32 totalLength,

UINT32 dataFlags);



typedef CHANNEL_OPEN_EVENT_FN FAR * PCHANNEL_OPEN_EVENT_FN;





/****************************************************************************/

/* Events passed to VirtualChannelOpenEvent */

/****************************************************************************/

/* Data received from Server (data = incoming data) */

#define CHANNEL_EVENT_DATA_RECEIVED 10



/* VirtualChannelWrite completed (pData - pUserData passed on

VirtualChannelWrite) */

#define CHANNEL_EVENT_WRITE_COMPLETE 11



/* VirtualChannelWrite cancelled (pData - pUserData passed on

VirtualChannelWrite) */

#define CHANNEL_EVENT_WRITE_CANCELLED 12





/****************************************************************************/

/* Return codes from VirtualChannelXxx functions */

/****************************************************************************/

#define CHANNEL_RC_OK 0

#define CHANNEL_RC_ALREADY_INITIALIZED 1

#define CHANNEL_RC_NOT_INITIALIZED 2

#define CHANNEL_RC_ALREADY_CONNECTED 3

#define CHANNEL_RC_NOT_CONNECTED 4

#define CHANNEL_RC_TOO_MANY_CHANNELS 5

#define CHANNEL_RC_BAD_CHANNEL 6

#define CHANNEL_RC_BAD_CHANNEL_HANDLE 7

#define CHANNEL_RC_NO_BUFFER 8

#define CHANNEL_RC_BAD_INIT_HANDLE 9

#define CHANNEL_RC_NOT_OPEN 10

#define CHANNEL_RC_BAD_PROC 11

#define CHANNEL_RC_NO_MEMORY 12

#define CHANNEL_RC_UNKNOWN_CHANNEL_NAME 13

#define CHANNEL_RC_ALREADY_OPEN 14

#define CHANNEL_RC_NOT_IN_VIRTUALCHANNELENTRY 15

#define CHANNEL_RC_NULL_DATA 16

#define CHANNEL_RC_ZERO_LENGTH 17



/****************************************************************************/

/* Levels of Virtual Channel Support */

/****************************************************************************/

#define VIRTUAL_CHANNEL_VERSION_WIN2000 1



#ifdef __cplusplus

extern "C" {

#endif /* __cplusplus */

/****************************************************************************/

/* Name: VirtualChannelInit */

/* */

/* Purpose: */

/* */

/* This function is called by the application to register the virtual */

/* channels it wants to have access to. Note that this does not open the */

/* channels, merely reserves the names for use by this application. This */

/* function must be called before the Client connects to the Server, hence */

/* it is recommended that it is called from the DLL's initialization */

/* procedure. */

/* */

/* */

/* On_return, the channels requested have been registered. However, other */

/* MSTSC initialization may not yet have completed. The application */

/* receives a VirtualChannelInitEvent callback with the "Client */

/* initialized" event when all MSTSC initialization is complete. */

/* */

/* Returns: */

/* */

/* CHANNEL_RC_OK */

/* CHANNEL_RC_ALREADY_INITIALIZED */

/* CHANNEL_RC_ALREADY_CONNECTED */

/* CHANNEL_RC_TOO_MANY_CHANNELS */

/* CHANNEL_RC_NOT_IN_VIRTUALCHANNELENTRY */

/* */

/* Parameters */

/* */

/* - ppInitHandle (returned) - handle to pass to subsequent */

/* VirtualChannelXxx calls */

/* - pChannel - list of names registered by this application */

/* - channelCount - number of channels registered. */

/* - versionRequested - level of virtual channel support requested (one of */

/* the VIRTUAL_CHANNEL_LEVEL_XXX parameters) */

/* - pChannelInitEventProc - address of VirtualChannelInitEvent procedure */

/* */

/****************************************************************************/

typedef UINT VCAPITYPE VIRTUALCHANNELINIT(

LPVOID FAR * ppInitHandle,

PCHANNEL_DEF pChannel,

INT channelCount,

ULONG versionRequested,

PCHANNEL_INIT_EVENT_FN pChannelInitEventProc);



typedef VIRTUALCHANNELINIT FAR * PVIRTUALCHANNELINIT;





/****************************************************************************/

/* Name: VirtualChannelOpen */

/* */

/* Purpose: */

/* */

/* This function is called by the application to open a channel. It cannot */

/* be called until a connection is established with a Server. */

/* */

/* Returns: */

/* */

/* CHANNEL_RC_OK */

/* CHANNEL_RC_NOT_INITIALIZED */

/* CHANNEL_RC_NOT_CONNECTED */

/* CHANNEL_RC_BAD_CHANNEL_NAME */

/* CHANNEL_RC_BAD_INIT_HANDLE */

/* */

/* Params: */

/* */

/* - pInitHandle - handle from VirtualChannelInit */

/* */

/* - pOpenHandle (returned) - handle to pass to subsequent */

/* VirtualChannelXxx calls */

/* - pChannelName - name of channel to open */

/* - pChannelOpenEventProc - address of VirtualChannelOpenEvent procedure */

/* */

/****************************************************************************/

typedef UINT VCAPITYPE VIRTUALCHANNELOPEN(

LPVOID pInitHandle,

LPDWORD pOpenHandle,

PCHAR pChannelName,

PCHANNEL_OPEN_EVENT_FN pChannelOpenEventProc);



typedef VIRTUALCHANNELOPEN FAR * PVIRTUALCHANNELOPEN;





/****************************************************************************/

/* Name: VirtualChannelClose */

/* */

/* Purpose: */

/* */

/* This function is called to close a previously opened channel. */

/* */

/* Returns: */

/* */

/* CHANNEL_RC_OK */

/* CHANNEL_RC_BAD_CHANNEL_HANDLE */

/* */

/* Params: */

/* */

/* - openHandle - handle returned on VirtualChannelOpen */

/* */

/****************************************************************************/

typedef UINT VCAPITYPE VIRTUALCHANNELCLOSE(DWORD openHandle);



typedef VIRTUALCHANNELCLOSE FAR * PVIRTUALCHANNELCLOSE;





/****************************************************************************/

/* Name: VirtualChannelWrite */

/* */

/* Purpose: */

/* */

/* This function is used to send data to the partner app on the Server. */

/* */

/* VirtualChannelWrite copies the data to one or more network buffers as */

/* necessary. VirtualChannelWrite ensures that data is sent to the Server */

/* on the right context. It sends all data on MS TC's Sender thread. */

/* */

/* VirtualChannelWrite is asynchronous - the VirtualChannelOpenEvent */

/* procedure is called when the write completes. Until that callback is */

/* made, the caller must not free or reuse the buffer passed on */

/* VirtualChannelWrite. The caller passes a piece of data (pUserData) to */

/* VirtualChannelWrite, which is returned on the VirtualChannelOpenEvent */

/* callback. The caller can use this data to identify the write which has */

/* completed. */

/* */

/* */

/* Returns: */

/* */

/* CHANNEL_RC_OK */

/* CHANNEL_RC_NOT_INITIALIZED */

/* CHANNEL_RC_NOT_CONNECTED */

/* CHANNEL_RC_BAD_CHANNEL_HANDLE */

/* */

/* Params: */

/* - openHandle - handle from VirtualChannelOpen */

/* - pData - data to write */

/* - datalength - length of data to write */

/* - pUserData - user supplied data, returned on VirtualChannelOpenEvent */

/* when the write completes */

/* */

/****************************************************************************/

typedef UINT VCAPITYPE VIRTUALCHANNELWRITE(DWORD openHandle,

LPVOID pData,

ULONG dataLength,

LPVOID pUserData);



typedef VIRTUALCHANNELWRITE FAR * PVIRTUALCHANNELWRITE;





/****************************************************************************/

/* Structure: CHANNEL_ENTRY_POINTS */

/* */

/* Description: Virtual Channel entry points passed to VirtualChannelEntry */

/****************************************************************************/

typedef struct tagCHANNEL_ENTRY_POINTS

{

DWORD cbSize;

DWORD protocolVersion;

PVIRTUALCHANNELINIT pVirtualChannelInit;

PVIRTUALCHANNELOPEN pVirtualChannelOpen;

PVIRTUALCHANNELCLOSE pVirtualChannelClose;

PVIRTUALCHANNELWRITE pVirtualChannelWrite;

} CHANNEL_ENTRY_POINTS, FAR * PCHANNEL_ENTRY_POINTS;





/****************************************************************************/

/* Name: VirtualChannelEntry */

/* */

/* Purpose: */

/* */

/* This function is provided by addin DLLS. It is called by MSTSC at */

/* initialization to tell the addin DLL the addresses of the */

/* VirtualChannelXxx functions. */

/* */

/* Returns: */

/* */

/* TRUE - everything OK */

/* FALSE - error, unload the DLL */

/* */

/* Parameters: */

/* */

/* - pVirtualChannelInit - pointers to VirtualChannelXxx functions */

/* - pVirtualChannelOpen */

/* - pVirtualChannelClose */

/* - pVirtualChannelWrite */

/* */

/****************************************************************************/

typedef BOOL VCAPITYPE VIRTUALCHANNELENTRY(

PCHANNEL_ENTRY_POINTS pEntryPoints);



typedef VIRTUALCHANNELENTRY FAR * PVIRTUALCHANNELENTRY;





#ifdef __cplusplus

}

#endif /* __cplusplus */



#pragma option pop /*P_O_Pop*/

#endif /* H_CCHANNEL */





2  COMMENTS
  • Profile
    조준래 2001.01.03 20:15
    Links from "Chuck's Delphi Knowledgebase - ANYTHING NOT OTHERWISE CLASSIFIED"



    Convert C Header to Pascal

    http://atlas.csd.net/~cgadd/knowbase/MISC0186.HTM



    --------------------------

    3k Delphi Tips

    http://3kdt.delphi.co.kr

  • Profile
    이수정 2001.01.16 23:36
    안녕하세요...



    이걸 쓸려면 먼저, H2Pas.exe 를 만들어야 할거 같은데..



    어떻게 해야 하나요???



    ㅡㅡ;



    프로젝트 생성시 콘솔(?)인가 거기서 테스트 하면 되는건지 모르겠네요....