次の方法で共有


NCB 構造体 (nb30.h)

[Netbios は、Windows Vista、Windows Server 2008、およびそれ以降のバージョンのオペレーティング システムではサポートされていません]

NCB 構造体は、ネットワーク制御ブロックを表します。 実行するコマンド、オプションのポスト ルーチン、オプションのイベント ハンドル、およびメッセージやその他のデータに使用されるバッファーへのポインターに関する情報が含まれています。 この構造体へのポインターが Netbios 関数に渡されます。

構文

typedef struct _NCB {
  UCHAR  ncb_command;
  UCHAR  ncb_retcode;
  UCHAR  ncb_lsn;
  UCHAR  ncb_num;
  PUCHAR ncb_buffer;
  WORD   ncb_length;
  UCHAR  ncb_callname[NCBNAMSZ];
  UCHAR  ncb_name[NCBNAMSZ];
  UCHAR  ncb_rto;
  UCHAR  ncb_sto;
  void()(_NCB *)  * ncb_post;
  UCHAR  ncb_lana_num;
  UCHAR  ncb_cmd_cplt;
#if ...
  UCHAR  ncb_reserve[18];
#else
  UCHAR  ncb_reserve[10];
#endif
  HANDLE ncb_event;
} NCB, *PNCB;

メンバー

ncb_command

NCB 構造体が非同期的に処理されるかどうかを示すコマンド コードとフラグを指定します。 最上位ビットには フラグが含まれています。 ASYNCH 定数が (OR 演算子を使用して) コマンド コードと組み合わされている場合、 NCB 構造体は非同期的に処理されます。 次のコマンド コードがサポートされています。

コード 説明
NCBACTION

Windows Server 2003、Windows XP、Windows 2000、Windows NT: トランスポート インターフェイスの拡張機能を有効にします。 NCBACTION は TdiAction にマップされます。 このコードを指定すると、 ncb_buffer メンバーは、必要に応じてデータが続く ACTION_HEADER 構造体を格納するバッファーを指します。 NCBACTION コマンドは、NCBCANCEL を使用して取り消すことはできません。 NCBACTION は、標準の NetBIOS 3.0 コマンドではありません。

NCBADDGRNAME ローカル名テーブルにグループ名を追加します。 この名前は、ネットワーク上の別のプロセスで一意の名前として使用することはできませんが、グループ名として誰でも追加できます。
NCBADDNAME ローカル名テーブルに一意の名前を追加します。 TDI ドライバーは、名前がネットワーク全体で一意であることを確認します。
NCBASTAT ローカル アダプターまたはリモート アダプターの状態を取得します。 このコードを指定すると、 ncb_buffer メンバーは、 ADAPTER_STATUS 構造体に格納されるバッファーを指し、その後に NAME_BUFFER 構造体の配列を指定します。
NCBCALL 別の名前のセッションを開きます。
NCBCANCEL 前の保留中のコマンドを取り消します。
NCBCHAINSEND 指定したセッション パートナーに 2 つのデータ バッファーの内容を送信します。
NCBCHAINSENDNA 指定したセッション パートナーに 2 つのデータ バッファーの内容を送信し、受信確認を待機しません。
NCBDELNAME ローカル名テーブルから名前を削除します。
NCBDGRECV 任意の名前からデータグラムを受信します。
NCBDGRECVBC 任意の名前からブロードキャスト データグラムを受信します。
NCBDGSEND 指定した名前にデータグラムを送信します。
NCBDGSENDBC ローカル エリア ネットワーク (LAN) 上のすべてのホストにブロードキャスト データグラムを送信します。
NCBENUM

Windows Server 2003、Windows XP、Windows 2000、Windows NT: LAN アダプター (LANA) 番号を列挙します。 このコードを指定すると、ncb_buffer メンバーは、LANA_ENUM構造体を格納するバッファーを指します。 NCBENUM は、標準の NetBIOS 3.0 コマンドではありません。

NCBFINDNAME ネットワーク上の名前の場所を決定します。 このコードを指定すると、 ncb_buffer メンバーはバッファーを指し、その後に 1 つ以上 のFIND_NAME_BUFFER 構造体が続く FIND_NAME_HEADER 構造体で埋められます。
NCBHANGUP 指定したセッションを閉じます。
NCBLANSTALERT

Windows Server 2003、Windows XP、Windows 2000、Windows NT: 1 分以上続く LAN エラーをユーザーに通知します。

NCBLISTEN セッションを別の名前 (ローカルまたはリモート) で開くことができます。
NCBRECV 指定したセッション パートナーからデータを受信します。
NCBRECVANY 指定した名前に対応する任意のセッションからデータを受信します。
NCBRESET LAN アダプターをリセットします。 アダプターは、 ncb_lana_num メンバー内の同じ番号を指定する他の NCB コマンドを受け入れる前にリセットする必要があります。

リソースを解放する方法を指定するには、次の値を使用します。

  • ncb_lsnが0x00されていない場合は、ncb_lana_numに関連付けられているすべてのリソースが解放されます。
  • ncb_lsnが0x00されている場合は、ncb_lana_numに関連付けられているすべてのリソースが解放され、新しいリソースが割り当てられます。 ncb_callname[0] バイトはセッションの最大数を指定し、ncb_callname[2] バイトは名前の最大数を指定します。 アプリケーションがNAME_NUMBER_1を使用するncb_callname[3] バイト要求の 0 以外の値。
NCBSEND 指定したセッション パートナーにデータを送信します。
NCBSENDNA 指定したセッション パートナーにデータを送信し、受信確認を待機しません。
NCBSSTAT セッションの状態を取得します。 この値を指定すると、 ncb_buffer メンバーは、 SESSION_HEADER 構造体を格納するバッファーを指し、その後に 1 つ以上の SESSION_BUFFER 構造体が続きます。
NCBTRACE NCB トレースをアクティブ化または非アクティブ化します。

このコマンドはサポートされていません。

NCBUNLINK アダプターのリンクを解除します。

このコマンドは、以前のバージョンの NetBIOS との互換性のために提供されています。 Windows には影響しません。

ncb_retcode

リターン コードを指定します。 この値は、非同期操作の進行中にNRC_PENDINGに設定されます。 システムは、次のいずれかの値を返します。

意味
NRC_GOODRET 操作が成功しました。
NRC_BUFLEN 無効なバッファー長が指定されました。
NRC_ILLCMD 無効なコマンドが指定されました。
NRC_CMDTMO コマンドがタイムアウトしました。
NRC_INCOMP メッセージが不完全でした。 アプリケーションは、別のコマンドを発行することです。
NRC_BADDR バッファー アドレスが正しくありません。
NRC_SNUMOUT セッション番号が範囲外でした。
NRC_NORES 使用可能なリソースがありませんでした。
NRC_SCLOSED セッションが閉じられました。
NRC_CMDCAN コマンドが取り消されました。
NRC_DUPNAME ローカル名テーブルに重複する名前が存在しました。
NRC_NAMTFUL 名前テーブルがいっぱいでした。
NRC_ACTSES コマンドは終了しました。名前にアクティブなセッションがあり、登録されなくなりました。
NRC_LOCTFUL ローカル セッション テーブルがいっぱいでした。
NRC_REMTFUL リモート セッション テーブルがいっぱいでした。 セッションを開く要求が拒否されました。
NRC_ILLNN 無効な名前番号が指定されました。
NRC_NOCALL 呼び出された名前がシステムで見つかりませんでした。
NRC_NOWILD ncb_name メンバーではワイルドカードを使用できません。
NRC_INUSE 名前はリモート アダプターで既に使用されています。
NRC_NAMERR 名前が削除されました。
NRC_SABORT セッションが異常終了しました。
NRC_NAMCONF 名前の競合が検出されました。
NRC_IFBUSY インターフェイスがビジー状態でした。
NRC_TOOMANY 未処理のコマンドが多すぎます。アプリケーションは後でコマンドを再試行できます。
NRC_BRIDGE ncb_lana_num メンバーは、有効なネットワーク番号を指定しませんでした。
NRC_CANOCCR 取り消し操作の実行中にコマンドが完了しました。
NRC_CANCEL NCBCANCEL コマンドが無効です。コマンドは取り消されませんでした。
NRC_DUPENV 名前は別のローカル プロセスによって定義されました。
NRC_ENVNOTDEF 環境が定義されていません。 reset コマンドを発行する必要があります。
NRC_OSRESNOTAV オペレーティング システムのリソースが使い果たされました。 アプリケーションは、後でコマンドを再試行できます。
NRC_MAXAPPS アプリケーションの最大数を超えました。
NRC_NOSAPS NetBIOS で使用できるサービス アクセス ポイント (SAP) がありませんでした。
NRC_NORESOURCES 要求されたリソースが使用できませんでした。
NRC_INVADDRESS NCB アドレスが無効です。
NRC_INVDDID NCB DDID が無効です。

この戻りコードは IBM NetBIOS 3.0 仕様の一部ではなく、 NCB 構造体では返されません。 代わりに、 Netbios 関数によって返されます。

NRC_LOCKFAIL ユーザー領域をロックできませんでした。
NRC_OPENERR デバイス ドライバーによって実行されている開いている操作中にエラーが発生しました。 このエラー コードは、NetBIOS 3.0 仕様の一部ではありません。
NRC_SYSTEM システム エラーが発生しました。
NRC_PENDING 非同期操作はまだ完了していません。

ncb_lsn

ローカル セッション番号を識別します。 この番号は、環境内のセッションを一意に識別します。 この数値は、NCBCALL コマンドが正常に実行された後に Netbios 関数によって返されます。

ncb_num

ローカル ネットワーク名の番号を指定します。 この数値は、NCBADDNAME または NCBADDGRNAME コマンドが正常に実行された後に Netbios によって返されます。 名前ではなく、この番号は、すべてのデータグラム・コマンドおよび NCBRECVANY コマンドで使用する必要があります。

NAME_NUMBER_1の数値は常に0x01。 Netbios 関数は、残りの名前の0xFEに0x02範囲内の値を割り当てます。

ncb_buffer

メッセージ バッファーへのポインター。 バッファーには書き込みアクセス権が必要です。 その用途は次のとおりです。

コマンド 目的
NCBSEND 送信するメッセージが含まれます。
NCBRECV メッセージを受信します。
NCBSSTAT 要求された状態情報を受信します。

ncb_length

メッセージ バッファーのサイズをバイト単位で指定します。 受信コマンドの場合、このメンバーは、受信したバイト数を示すために Netbios 関数によって設定されます。

バッファーの長さが正しくない場合、 Netbios 関数は NRC_BUFLEN エラー コードを返します。

ncb_callname[NCBNAMSZ]

リモート アプリケーションの名前を指定します。 文字列の長さを NCBNAMSZ に等しくするには、末尾のスペース文字を指定する必要があります。

ncb_name[NCBNAMSZ]

アプリケーションの既知の名前を指定します。 文字列の長さを NCBNAMSZ に等しくするには、末尾のスペース文字を指定する必要があります。

ncb_rto

セッションの受信操作のタイムアウト期間を 500 ミリ秒単位で指定します。 0 の値は、タイムアウトがないことを意味します。 NCBCALL または NCBLISTEN コマンドを使用して を指定します。 後続の NCBRECV コマンドに 影響します。

ncb_sto

セッションの送信操作のタイムアウト期間を 500 ミリ秒単位で指定します。 0 の値は、タイムアウトがないことを意味します。 NCBCALL または NCBLISTEN コマンドを使用して を指定します。 後続の NCBSEND コマンドと NCBCHAINSEND コマンドに 影響します。

ncb_post

非同期コマンドが完了したときに呼び出すポスト ルーチンのアドレスを指定します。 ポスト ルーチンは、次のように定義されます。

NCB_POST PostRoutine( PNCB pncb );

ここで、 pncb パラメーターは、完成した NCB 構造体へのポインターです。

ncb_lana_num

LAN アダプター番号を指定します。 この 0 から始まる番号は、特定の LAN アダプター ボードを使用する特定のトランスポート プロバイダーに対応します。

ncb_cmd_cplt

コマンド完了フラグを指定します。 この値は、 ncb_retcode メンバーと同じです。

ncb_reserve[18]

予約;は 0 である必要があります。

ncb_reserve配列の長さ X は、システム アーキテクチャによって異なります。 64 ビット システムの場合、配列には 18 個の要素が含まれます。 それ以外の場合、配列には 10 個の要素が含まれます。

ncb_reserve[10]

予約;は 0 である必要があります。

ncb_reserve配列の長さ X は、システム アーキテクチャによって異なります。 64 ビット システムの場合、配列には 18 個の要素が含まれます。 それ以外の場合、配列には 10 個の要素が含まれます。

ncb_event

非同期コマンドが受け入れられるときに非割り当て状態に設定され、非同期コマンドが完了したときにシグナル状態に設定されるイベント オブジェクトへのハンドルを指定します。 Netbios 関数が 0 以外の値を返すと、イベントが通知されます。 同期には手動リセット イベントのみを使用する必要があります。 指定したイベントは、複数のアクティブな非同期コマンドに関連付けないようにしてください。

ncb_command メンバーに ASYNCH フラグが設定されていない場合、または ncb_post が 0 以外の場合は、ncb_event メンバーは 0 である必要があります。 それ以外の場合、 NetbiosNRC_ILLCMD エラー コードを返します。

注釈

ncb_eventを使用して非同期要求を発行すると、ncb_postを使用する場合よりもシステム リソースが少なくて済みます。 さらに、 ncb_event が 0 以外の場合、要求が処理される前にスレッドが終了すると、保留中の要求は取り消されます。 これは、 ncb_postを使用して送信された非同期要求には当てはまりません。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
Header nb30.h

こちらもご覧ください

ACTION_HEADER

ADAPTER_STATUS

FIND_NAME_BUFFER

FIND_NAME_HEADER

LANA_ENUM

NAME_BUFFER

NetBIOS 構造体

Netbios

SESSION_BUFFER

SESSION_HEADER

NetBIOS インターフェイスの概要