FC2ブログ

C#で HULFT

ファイルの集配信ソリューションである、HULFT

ファイル転送 - HULFT - TCP/IP 企業内・企業間通信ミドルウェア

セゾン情報システムズの製品で、ファイルによるインタフェースで、システム間の差異を吸収してしまおう、というものである。
1990年代初めあたりから存在している古株で、他社でも同様のソリューションを出しているが、結構メジャーなものである。
(NECではちょっとしょぼいがNISMAILってのがある。)

んでこいつの配信要求APIに、utlsend / utlsendexってぇのがあって、中でもutlsendexではファイル以外に幾つか(50Byteが6個)のメッセージを渡せるようになっている。

マニュアルではこのAPIについて、
ダブルポインタを使用しているのでVBでは使用できない
とある。
が、C#ではなんとかならないこともないので、コード載せておく。(続き:READ MORE)

たぶん、自分では一生使わないような気がするし、他の人の需要も限りなく無さそうだが、HULFT自体の情報も少ないんでとりあえず。
(6とか51とかのマジックナンバは、HULFTのマニュアル参照の事)




using System.Runtime.InteropServices;
...
[DllImport("hulapi.dll", SetLastError = true)]
private static extern int utlsendex(string lpszFileID, string lpszHostName
, bool bRsend, short nPriority, bool bSync, int nWait
, string lpszFileName, IntPtr group, bool bNp
, IntPtr lpMsg, int nTransMode);

public static int UTLSendEx(string FileID, string HostName
, string FileName, string[] Msgs)
{
IntPtr tagptr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(int)) + Marshal.SizeOf(typeof(uint)));
uint infoptr = (uint)Marshal.AllocHGlobal(Marshal.SizeOf(typeof(IntPtr)) * 6);
uint [] msgarr = new uint [6];
for (int i = 0; i < 6; i++)
{
msgarr[i] = (uint)Marshal.AllocHGlobal(51);
for (int k = 0; k < 51; k++)
{
Marshal.WriteByte((IntPtr)(msgarr[i] + k), (byte)0);
}
if (i < Msgs.Length)
{
int offset = 0;
foreach (char c in Msgs[i].ToCharArray())
{
Marshal.WriteByte((IntPtr)(msgarr[i] + offset), (byte)c);
offset++;
}
}
Marshal.WriteInt32((IntPtr)(infoptr + i * Marshal.SizeOf(typeof(IntPtr))), (int)msgarr[i]);
}
Marshal.WriteInt32((IntPtr)((uint)tagptr + Marshal.SizeOf(typeof(IntPtr))), (int)infoptr);
Marshal.WriteInt32(tagptr, 6);
try
{
return utlsendex(FileID, HostName, false, 0, false, 0, FileName, (IntPtr)0, false, tagptr, 0);
}
catch (DllNotFoundException e)
{
return -1;
}
finally
{
Marshal.FreeHGlobal(tagptr);
Marshal.FreeHGlobal((IntPtr)infoptr);
for (int i = 0; i < 6; i++)
{
Marshal.FreeHGlobal((IntPtr)msgarr[i]);
}
}
}


スポンサーサイト

トラックバック


この記事にトラックバックする(FC2ブログユーザー)

VB

セール SALE %OFFシンプル引出しモダン アウトレットTVラック テレビラック TVボード テレビボードTV台 テレビ台 AVラックAVボード引き出し収納【sale☆0214】コーナー3点セット【TOPAV収納】9300 円 セール SALE 30%OFF確実 人気 シンプル 1人暮らしTVラック テレビ...

コメントの投稿

非公開コメント

プロフィール

f_yamaki

Author:f_yamaki

アクセスカウンタ
最近の記事
最近のコメント
最近のトラックバック
月別アーカイブ
カテゴリー
ブロとも申請フォーム

この人とブロともになる

ブログ内検索
RSSフィード
リンク