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:
|
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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk