UCHAR Netbios(PNCB pNCB)NCB 結構體 ncb_command 欄位決定Nb30.h;連結庫:Netapi32.libtypedef struct _NCB {
UCHAR ncb_command; // 命令碼
UCHAR ncb_retcode; // 返回碼
UCHAR ncb_lsn; // 本地會話號
UCHAR ncb_num; // 命令編號/適配器編號
PUCHAR ncb_buffer; // 資料緩衝區指標
WORD ncb_length; // 緩衝區長度
UCHAR ncb_callname[NCBNAMSZ]; // 呼叫端名稱 (16 bytes)
UCHAR ncb_name[NCBNAMSZ]; // 本地名稱 (16 bytes)
UCHAR ncb_rto; // 接收逾時
UCHAR ncb_sto; // 發送逾時
void (*ncb_post)(struct _NCB *); // 非同步完成回調
UCHAR ncb_lana_num; // LANA 編號
UCHAR ncb_cmd_cplt; // 命令完成碼
UCHAR ncb_reserve[10]; // 保留
HANDLE ncb_event; // 事件物件 (非同步用)
} NCB, *PNCB;
NCB ncb = {0}; // 或 memset(&ncb, 0, sizeof(NCB));
// 再填寫必要欄位...
ncb.ncb_command = NCBCALL; // 範例:發起連接
ncb.ncb_lana_num = 0;
strcpy((char*)ncb.ncb_callname, "SERVER_NAME ");
strcpy((char*)ncb.ncb_name, "MY_CLIENT ");
Netbios(&ncb);
未清零會導致保留欄位殘留垃圾值,引發不可預期的錯誤碼。
| 命令 | 值 | 用途 |
|---|---|---|
NCBADDNAME | 0x00 | 註冊本地名稱 |
NCBDELNAME | 0x01 | 刪除本地名稱 |
NCBCALL | 0x10 | 發起會話連接 |
NCBLISTEN | 0x11 | 監聽連接請求 |
NCBSEND | 0x14 | 會話發送資料 |
NCBRECV | 0x15 | 會話接收資料 |
NCBHANGUP | 0x12 | 掛斷會話 |
NCBSENDDG | 0x20 | 發送資料報 |
NCBRECVDG | 0x21 | 接收資料報 |
NCBASTAT | 0x33 | 適配器狀態查詢 |
NCBSSTAT | 0x34 | 會話狀態查詢 |
ncb_post = NULL,Netbios() 阻塞至完成ncb_post 回調函數指標,Netbios() 立即返回,完成時呼叫回調;或設定 ncb_event 事件等待0x20)0x00 工作站、0x20 伺服器、0x1B 域控制器)NetBIOS 雖屬經典技術,但在舊系統維護、嵌入式裝置、特定工控網絡中仍有應用。掌握 NCB 結構、雙模式特性與同步/非同步模式,是進行 NetBIOS 程式設計的基石。現代開發建議優先考慮 TCP/IP Socket、Named Pipe 或 WCF 等更通用、跨平台的通訊方案。