제가 요즘 1:1통신프로그램을 짜고있는데 화일전송 부분에서 막혀
고민하고있던중 하이텔에서 윈도용 프로토콜 zmodem32.dll을
그했거든요. 그런데 c++로 싸여 있더라구요. 델에서는 사용을 할수있는지
없는지 조차모르겠어요.
제가 zmodem32.dll 소스를 올려놓겠습니다.
좀 봐주세요. 델에서 사용할수있는지..
// ZModem32.cpp : Defines the initialization routines for the DLL.
//
#include "stdafx.h"
#include <afxdllx.h>
#include "z32dlg.h"
#include "zmodem32.h"
#include "zmodem.h"
#ifdef _DEBUG
#undef THIS_FILE
static char BASED_CODE THIS_FILE[] = __FILE__;
#endif
static AFX_EXTENSION_MODULE ZModem32DLL = { NULL, NULL };
extern "C" int APIENTRY
DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
if (dwReason == DLL_PROCESS_ATTACH)
{
TRACE0("ZMODEM32.DLL Initializing!\n");
// Extension DLL one-time initialization
AfxInitExtensionModule(ZModem32DLL, hInstance);
// Insert this DLL into the resource chain
new CDynLinkLibrary(ZModem32DLL);
}
else if (dwReason == DLL_PROCESS_DETACH)
{
TRACE0("ZMODEM32.DLL Terminating!\n");
}
return 1; // ok
}
extern ZMODEM *_Zmodem;
int WinZmodem32Receive (HANDLE idComDev, char *szPathname, WORD wOption, ZRESULT* pZResult)
{
CZ32Dlg MyZmodem;
//
// Set Parameters
//
MyZmodem.m_idComDev = idComDev;
MyZmodem.m_nSession = SESSION_ZMODEM_RECEIVE;
MyZmodem.m_wOption = wOption;
strcpy (MyZmodem.m_szReceiveDirectory, szPathname);
MyZmodem.DoModal ();
strcpy (pZResult->szReceiveFilenames, MyZmodem.m_Zmodem.m_szReceiveFilenames);
pZResult->tStartTrans = MyZmodem.m_Zmodem.m_tStartTrans;
pZResult->tEndTrans = MyZmodem.m_Zmodem.m_tEndTrans;
pZResult->lTotalBytes = _Zmodem->lPacket;
pZResult->nAverageCPS = MyZmodem.m_Zmodem.m_nCPS;
pZResult->nErrorOccured = _Zmodem->nTotalRetries;
pZResult->nErrorCode = MyZmodem.m_Zmodem.m_nErrorCode;
return (MyZmodem.m_Zmodem.m_nErrorCode);
}
int WinZmodem32Send (HANDLE idComDev, char *szFilenames, WORD wOption, ZRESULT* pZResult)
{
CZ32Dlg MyZmodem;
//
// Set Parameters
//
MyZmodem.m_idComDev = idComDev;
MyZmodem.m_nSession = SESSION_ZMODEM_SEND;
MyZmodem.m_wOption = wOption;
strcpy (MyZmodem.m_szSendFilenames, szFilenames);
MyZmodem.DoModal ();
pZResult->tStartTrans = MyZmodem.m_Zmodem.m_tStartTrans;
pZResult->tEndTrans = MyZmodem.m_Zmodem.m_tEndTrans;
pZResult->lTotalBytes = _Zmodem->lPacket;
pZResult->nAverageCPS = MyZmodem.m_Zmodem.m_nCPS;
pZResult->nErrorOccured = _Zmodem->nTotalRetries;
pZResult->nErrorCode = MyZmodem.m_Zmodem.m_nErrorCode;
return (MyZmodem.m_Zmodem.m_nErrorCode);
}
int GetDllVersion (void)
{
return 999;
}
무척 귀찬으신줄 압니다..
그래도 이렇게 보아주신것에 대해 감사드립니다.
제발 힌트라도 좀 주시면 고맙겠습니다.
|