Bagikan melalui


Struktur NCB (nb30.h)

[Netbios tidak didukung pada Windows Vista, Windows Server 2008, dan versi sistem operasi berikutnya]

Struktur NCB mewakili blok kontrol jaringan. Ini berisi informasi tentang perintah yang harus dilakukan, rutinitas posting opsional, handel peristiwa opsional, dan penunjuk ke buffer yang digunakan untuk pesan atau data lainnya. Penunjuk ke struktur ini diteruskan ke fungsi Netbios .

Sintaks

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;

Anggota

ncb_command

Menentukan kode perintah dan bendera yang menunjukkan apakah struktur NCB diproses secara asinkron. Bit yang paling signifikan berisi bendera . Jika konstanta ASYNCH dikombinasikan dengan kode perintah (dengan menggunakan operator OR), struktur NCB diproses secara asinkron. Kode perintah berikut didukung.

Kode Makna
NCBACTION

Windows Server 2003, Windows XP, Windows 2000, dan Windows NT: Mengaktifkan ekstensi ke antarmuka transportasi. NCBACTION dipetakan ke TdiAction. Ketika kode ini ditentukan, anggota ncb_buffer menunjuk ke buffer untuk diisi dengan struktur ACTION_HEADER , yang secara opsional diikuti oleh data. Perintah NCBACTION tidak dapat dibatalkan dengan menggunakan NCBCANCEL. NCBACTION bukan perintah NetBIOS 3.0 standar.

NCBADDGRNAME Menambahkan nama grup ke tabel nama lokal. Nama ini tidak dapat digunakan oleh proses lain pada jaringan sebagai nama unik, tetapi dapat ditambahkan oleh siapa pun sebagai nama grup.
NCBADDNAME Menambahkan nama unik ke tabel nama lokal. Driver TDI memastikan bahwa namanya unik di seluruh jaringan.
NCBASTAT Mengambil status adaptor lokal atau jarak jauh. Ketika kode ini ditentukan, anggota ncb_buffer menunjuk ke buffer yang akan diisi dengan struktur ADAPTER_STATUS , diikuti oleh array struktur NAME_BUFFER .
NCBCALL Membuka sesi dengan nama lain.
NCBCANCEL Membatalkan perintah tertunda sebelumnya.
NCBCHAINSEND Mengirim konten dua buffer data ke mitra sesi yang ditentukan.
NCBCHAINSENDNA Mengirim konten dua buffer data ke mitra sesi yang ditentukan dan tidak menunggu pengakuan.
NCBDELNAME Menghapus nama dari tabel nama lokal.
NCBDGRECV Menerima datagram dari nama apa pun.
NCBDGRECVBC Menerima datagram siaran dari nama apa pun.
NCBDGSEND Mengirim datagram ke nama tertentu.
NCBDGSENDBC Mengirim datagram siaran ke setiap host di jaringan area lokal (LAN).
NCBENUM

Windows Server 2003, Windows XP, Windows 2000, dan Windows NT: Menghitung nomor adaptor LAN (LANA). Ketika kode ini ditentukan, anggota ncb_buffer menunjuk ke buffer untuk diisi dengan struktur LANA_ENUM. NCBENUM bukan perintah NetBIOS 3.0 standar.

NCBFINDNAME Menentukan lokasi nama pada jaringan. Ketika kode ini ditentukan, anggota ncb_buffer menunjuk ke buffer yang akan diisi dengan struktur FIND_NAME_HEADER diikuti oleh satu atau beberapa struktur FIND_NAME_BUFFER .
NCBHANGUP Menutup sesi tertentu.
NCBLANSTALERT

Windows Server 2003, Windows XP, Windows 2000, dan Windows NT: Memberi tahu pengguna tentang kegagalan LAN yang berlangsung selama lebih dari satu menit.

NCBLISTEN Memungkinkan sesi dibuka dengan nama lain (lokal atau jarak jauh).
NCBRECV Menerima data dari mitra sesi yang ditentukan.
NCBRECVANY Menerima data dari sesi apa pun yang sesuai dengan nama tertentu.
NCBRESET Mereset adaptor LAN. Adaptor harus diatur ulang sebelum dapat menerima perintah NCB lainnya yang menentukan angka yang sama dalam anggota ncb_lana_num .

Gunakan nilai berikut untuk menentukan bagaimana sumber daya akan dikosongkan:

  • Jika ncb_lsn tidak 0x00, semua sumber daya yang terkait dengan ncb_lana_num akan dibebaskan.
  • Jika ncb_lsn 0x00, semua sumber daya yang terkait dengan ncb_lana_num akan dibebaskan, dan sumber daya baru akan dialokasikan. Byte ncb_callname[0] menentukan jumlah maksimum sesi, dan byte ncb_callname[2] menentukan jumlah maksimum nama. Nilai bukan nol untuk permintaan byte ncb_callname[3] yang digunakan aplikasi NAME_NUMBER_1.
NCBSEND Mengirim data ke mitra sesi yang ditentukan.
NCBSENDNA Mengirim data ke mitra sesi tertentu dan tidak menunggu pengakuan.
NCBSSTAT Mengambil status sesi. Ketika nilai ini ditentukan, anggota ncb_buffer menunjuk ke buffer untuk diisi dengan struktur SESSION_HEADER , diikuti oleh satu atau beberapa struktur SESSION_BUFFER .
NCBTRACE Mengaktifkan atau menonaktifkan pelacakan NCB.

Perintah ini tidak didukung.

NCBUNLINK Batalkan tautan adaptor.

Perintah ini disediakan untuk kompatibilitas dengan versi NetBIOS yang lebih lama. Ini tidak berpengaruh pada Windows.

ncb_retcode

Menentukan kode pengembalian. Nilai ini diatur ke NRC_PENDING saat operasi asinkron sedang berlangsung. Sistem mengembalikan salah satu nilai berikut:

Nilai Makna
NRC_GOODRET Operasi berhasil.
NRC_BUFLEN Panjang buffer ilegal disediakan.
NRC_ILLCMD Perintah ilegal disediakan.
NRC_CMDTMO Perintahnya kehabisan waktu.
NRC_INCOMP Pesan tidak lengkap. Aplikasi ini untuk mengeluarkan perintah lain.
NRC_BADDR Alamat buffer ilegal.
NRC_SNUMOUT Nomor sesi di luar rentang.
NRC_NORES Tidak ada sumber daya yang tersedia.
NRC_SCLOSED Sesi ditutup.
NRC_CMDCAN Perintah dibatalkan.
NRC_DUPNAME Nama duplikat ada di tabel nama lokal.
NRC_NAMTFUL Tabel nama penuh.
NRC_ACTSES Perintah selesai; namanya memiliki sesi aktif dan tidak lagi terdaftar.
NRC_LOCTFUL Tabel sesi lokal penuh.
NRC_REMTFUL Tabel sesi jarak jauh penuh. Permintaan untuk membuka sesi ditolak.
NRC_ILLNN Nomor nama ilegal ditentukan.
NRC_NOCALL Sistem tidak menemukan nama yang dipanggil.
NRC_NOWILD Kartubebas tidak diizinkan di anggota ncb_name .
NRC_INUSE Nama sudah digunakan pada adaptor jarak jauh.
NRC_NAMERR Nama telah dihapus.
NRC_SABORT Sesi berakhir secara tidak normal.
NRC_NAMCONF Konflik nama terdeteksi.
NRC_IFBUSY Antarmuka sibuk.
NRC_TOOMANY Terlalu banyak perintah yang luar biasa; aplikasi dapat mencoba kembali perintah nanti.
NRC_BRIDGE Anggota ncb_lana_num tidak menentukan nomor jaringan yang valid.
NRC_CANOCCR Perintah selesai saat operasi pembatalan terjadi.
NRC_CANCEL Perintah NCBCANCEL tidak valid; perintah tidak dibatalkan.
NRC_DUPENV Nama ditentukan oleh proses lokal lain.
NRC_ENVNOTDEF Lingkungan tidak ditentukan. Perintah reset harus dikeluarkan.
NRC_OSRESNOTAV Sumber daya sistem operasi habis. Aplikasi dapat mencoba kembali perintah nanti.
NRC_MAXAPPS Jumlah maksimum aplikasi terlampaui.
NRC_NOSAPS Tidak ada titik akses layanan (SAP) yang tersedia untuk NetBIOS.
NRC_NORESOURCES Sumber daya yang diminta tidak tersedia.
NRC_INVADDRESS Alamat NCB tidak valid.
NRC_INVDDID DDID NCB tidak valid.

Kode pengembalian ini bukan bagian dari spesifikasi IBM NetBIOS 3.0 dan tidak dikembalikan dalam struktur NCB . Sebaliknya, dikembalikan oleh fungsi Netbios .

NRC_LOCKFAIL Upaya untuk mengunci area pengguna gagal.
NRC_OPENERR Terjadi kesalahan selama operasi terbuka sedang dilakukan oleh pengandar perangkat. Kode kesalahan ini bukan bagian dari spesifikasi NetBIOS 3.0.
NRC_SYSTEM Terjadi kesalahan sistem.
NRC_PENDING Operasi asinkron belum selesai.

ncb_lsn

Mengidentifikasi nomor sesi lokal. Angka ini secara unik mengidentifikasi sesi dalam lingkungan. Angka ini dikembalikan oleh fungsi Netbios setelah perintah NCBCALL berhasil.

ncb_num

Menentukan angka untuk nama jaringan lokal. Angka ini dikembalikan oleh Netbios setelah perintah NCBADDNAME atau NCBADDGRNAME berhasil. Angka ini, bukan nama, harus digunakan dengan semua perintah datagram dan untuk perintah NCBRECVANY .

Angka untuk NAME_NUMBER_1 selalu 0x01. Fungsi Netbios menetapkan nilai dalam rentang 0x02 ke 0xFE untuk nama yang tersisa.

ncb_buffer

Arahkan ke buffer pesan. Buffer harus memiliki akses tulis. Penggunaannya adalah sebagai berikut:

Perintah Tujuan
NCBSEND Berisi pesan yang akan dikirim.
NCBRECV Menerima pesan.
NCBSSTAT Menerima informasi status yang diminta.

ncb_length

Menentukan ukuran, dalam byte, dari buffer pesan. Untuk perintah terima, anggota ini diatur oleh fungsi Netbios untuk menunjukkan jumlah byte yang diterima.

Jika panjang buffer salah, fungsi Netbios mengembalikan kode kesalahan NRC_BUFLEN .

ncb_callname[NCBNAMSZ]

Menentukan nama aplikasi jarak jauh. Karakter spasi berikutnya harus disediakan untuk membuat panjang string sama dengan NCBNAMSZ.

ncb_name[NCBNAMSZ]

Menentukan nama tempat aplikasi diketahui. Karakter spasi berikutnya harus disediakan untuk membuat panjang string sama dengan NCBNAMSZ.

ncb_rto

Menentukan periode waktu habis untuk menerima operasi, dalam unit 500 milidetik, untuk sesi tersebut. Nilai nol tidak menyiratkan waktu habis. Tentukan dengan perintah NCBCALL atau NCBLISTEN . Mempengaruhi perintah NCBRECV berikutnya.

ncb_sto

Menentukan periode waktu habis untuk operasi pengiriman, dalam unit 500 milidetik, untuk sesi tersebut. Nilai nol tidak menyiratkan waktu habis. Tentukan dengan perintah NCBCALL atau NCBLISTEN . Mempengaruhi perintah NCBSEND dan NCBCHAINSEND berikutnya.

ncb_post

Menentukan alamat rutinitas postingan untuk dipanggil ketika perintah asinkron selesai. Rutinitas postingan didefinisikan sebagai:

NCB_POST PostRoutine( PNCB pncb );

di mana parameter pncb adalah penunjuk ke struktur NCB yang telah selesai.

ncb_lana_num

Menentukan nomor adaptor LAN. Angka berbasis nol ini sesuai dengan penyedia transportasi tertentu menggunakan papan adaptor LAN tertentu.

ncb_cmd_cplt

Menentukan bendera lengkap perintah. Nilai ini sama dengan anggota ncb_retcode .

ncb_reserve[18]

Dipesan; harus nol.

Panjang, X, dari array ncb_reserve tergantung pada arsitektur sistem. Untuk sistem 64-bit, array berisi 18 elemen. Jika tidak, array berisi 10 elemen.

ncb_reserve[10]

Dipesan; harus nol.

Panjang, X, dari array ncb_reserve tergantung pada arsitektur sistem. Untuk sistem 64-bit, array berisi 18 elemen. Jika tidak, array berisi 10 elemen.

ncb_event

Menentukan handel ke objek peristiwa yang diatur ke status tidak bertanda ketika perintah asinkron diterima, dan diatur ke status sinyal ketika perintah asinkron selesai. Peristiwa disinyalkan jika fungsi Netbios mengembalikan nilai bukan nol. Hanya peristiwa reset manual yang harus digunakan untuk sinkronisasi. Peristiwa tertentu tidak boleh dikaitkan dengan lebih dari satu perintah asinkron aktif.

Anggota ncb_event harus nol jika anggota ncb_command tidak memiliki bendera ASYNCH yang ditetapkan atau jika ncb_post bukan nol. Jika tidak, Netbios mengembalikan kode kesalahan NRC_ILLCMD .

Keterangan

Menggunakan ncb_event untuk mengeluarkan permintaan asinkron memerlukan lebih sedikit sumber daya sistem daripada menggunakan ncb_post. Selain itu, ketika ncb_event bukan nol, permintaan yang tertunda dibatalkan jika utas berakhir sebelum permintaan diproses. Ini tidak berlaku untuk permintaan asinkron yang dikirim menggunakan ncb_post.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Header nb30.h

Lihat juga

ACTION_HEADER

ADAPTER_STATUS

FIND_NAME_BUFFER

FIND_NAME_HEADER

LANA_ENUM

NAME_BUFFER

Struktur NetBIOS

Netbios

SESSION_BUFFER

SESSION_HEADER

Gambaran Umum Antarmuka NetBIOS