高度な検索
Developer Connection
Member Login ログイン | ご入会 ADC連絡先


テクニカルQ&A

NW 55 - PLookupName のバグに対する回避方法
(1998 年 7 月 20 日更新)


Q: Open Transport が NBP の PLookupName 呼び出しを処理する方法にバグがあることに気づきました。この問題を回避するにはどうすればいいですか。

A: 詳しく説明すると、OpenTransport (v 1.3 まで) が NBP の PLookupName 呼び出しを処理する方法にはバグがあり、Open Transport はルックアップバッファの末尾を超えて最大 2 バイトまでデータを書き込むことがあります。この問題は PLookupName 呼び出しにだけ関係し、Open Transport の対応する呼び出し (OTLookupName) では発生しません。

このバグの望ましい解決方法は、時代遅れになった PLookupName 呼び出しではなく、Open Transport の OTLookupName 呼び出しを使用するようにネットワーキングコードを更新することです。OTLookupName は Mac OS X でもサポートされる予定です。一方、PLookupName だけでなく、その他の AppleTalk Manager 呼び出しは Mac OS X ではサポートされなくなります。

もう 1 つの解決方法は、次のコードに示すように、NBPretBuffPtr によってポイントされるバッファの実際のサイズよりも 2 バイト少ない値を NBPretBuffSize パラメータに設定することです。この解決方法は Open Transport のすべてのリリースで正常に動作し、Open Transport の側でこの問題が解決された場合にも、特に影響を受けないはずです。

char buffer[1024];

...

gPBLkUP->myMPP.NBPretBuffSize = sizeof(buffer) - 2;

gPBLkUP->myMPP.NBPretBuffPtr = &buffer;

result = PLookupName((MPPParamBlock *) &myMPP, ...);


-- Rich Kubota
-- Revised by Rich Kubota
Worldwide Developer Technical Support