どなたかCでMSMQを作成した方はいませんか?

解決


yuusuke  2002-11-15 12:39:51  No: 50626  IP: [192.*.*.*]

Windows2000Server環境下でCでプログラムを開発しているのですが、MSMQのMQをCreateする"MQCreateQueue"関数がエラーで帰ってきます。
COM用(Mqoa.lib)のMSMQQueueInfo.Create関数を使用したVBのプログラムではMQ(専用キュー)を作成できるのに、C用(Mqrt.lib)のMQCreateQueue関数を使用したCのプログラムでは
”MQ_ERROR_ILLEGAL_QUEUE_PATHNAME (0xC00E0014) 
→PROPID_Q_PATHNAME に指定されたメッセージ キュー パス名文字列が無効です。”
のエラーになってしまします。

同じキュー名をセットしているのに何かが不足しているのでしょうか?
以下がソースの一部です。

MQQUEUEPROPS QueueProps;
MQPROPVARIANT aVariant[10];
QUEUEPROPID aPropId[10];
HRESULT aStatus[10];
HRESULT hr;
DWORD PropIdCount = 0L;
WCHAR wszLabel[MQ_MAX_Q_LABEL_LEN] = L"TestQueue";
DWORD dwFormatNameBufferLength;
WCHAR wszFormatNameBuffe[256];

// Set queue properties.
aPropId[PropIdCount] = PROPID_Q_PATHNAME;
aVariant[PropIdCount].vt = VT_LPWSTR;
aVariant[PropIdCount].pwszVal = ".\\Private\\MQNAME";
PropIdCount++;

aPropId[PropIdCount] = PROPID_Q_LABEL;
aVariant[PropIdCount].vt = VT_LPWSTR;
aVariant[PropIdCount].pwszVal = wszLabel;
PropIdCount++;

QueueProps.cProp = PropIdCount;
QueueProps.aPropID = aPropId;
QueueProps.aPropVar = aVariant;
QueueProps.aStatus = Status;
dwFormatNameBufferLength = 
sizeof(wszFormatNameBuffer)
/sizeof(wszFormatNameBuffer[0]);

hr = MQCreateQueue( NULL,
&QueueProps,
wszFormatNameBuffer,
&dwFormatNameBufferLength);

if( hr != MQ_OK){  →ここでエラーになる
エラー処理
}

どなたか判る方がおられましたら教えてください
よろしくお願いします。

編集 削除
yuusuke  2002-11-15 14:58:57  No: 50627  IP: [192.*.*.*]

解決しました。
UNICODEに変換していない為でした。

編集 削除