📄 jwanb30.pas
字号:
{******************************************************************************}
{ }
{ Portable Netbios 3.0 API interface Unit for Object Pascal }
{ }
{ Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
{ Corporation. All Rights Reserved. }
{ }
{ The original file is: Nb30.h, released June 2000. The original Pascal }
{ code is: JwaN30.pas, released December 2000. The initial developer of the }
{ Pascal code is Marcel van Brakel (brakelm@chello.nl). }
{ }
{ Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
{ Marcel van Brakel. All Rights Reserved. }
{ }
{ Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
{ }
{ You may retrieve the latest version of this file at the Project JEDI home }
{ page, located at http://delphi-jedi.org or my personal homepage located at }
{ http://members.chello.nl/m.vanbrakel2 }
{ }
{ The contents of this file are used with permission, subject to the Mozilla }
{ Public License Version 1.1 (the "License"); you may not use this file except }
{ in compliance with the License. You may obtain a copy of the License at }
{ http://www.mozilla.org/MPL/MPL-1.1.html }
{ }
{ Software distributed under the License is distributed on an "AS IS" basis, }
{ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
{ the specific language governing rights and limitations under the License. }
{ }
{ Alternatively, the contents of this file may be used under the terms of the }
{ GNU Lesser General Public License (the "LGPL License"), in which case the }
{ provisions of the LGPL License are applicable instead of those above. }
{ If you wish to allow use of your version of this file only under the terms }
{ of the LGPL License and not to allow others to use your version of this file }
{ under the MPL, indicate your decision by deleting the provisions above and }
{ replace them with the notice and other provisions required by the LGPL }
{ License. If you do not delete the provisions above, a recipient may use }
{ your version of this file under either the MPL or the LGPL License. }
{ }
{ For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
{ }
{******************************************************************************}
unit JwaNb30;
{$WEAKPACKAGEUNIT}
{$HPPEMIT ''}
{$HPPEMIT '#include "Nb30.h"'}
{$HPPEMIT ''}
{$I WINDEFINES.INC}
interface
uses
JwaWinType;
(****************************************************************
* *
* Data structure templates *
* *
****************************************************************)
const
NCBNAMSZ = 16; // absolute length of a net name
{$EXTERNALSYM NCBNAMSZ}
MAX_LANA = 254; // lana's in range 0 to MAX_LANA inclusive
{$EXTERNALSYM MAX_LANA}
//
// Network Control Block
//
type
PNCB = ^NCB;
TNcbPost = procedure (P: PNCB); stdcall;
_NCB = record
ncb_command: UCHAR; // command code
ncb_retcode: UCHAR; // return code
ncb_lsn: UCHAR; // local session number
ncb_num: UCHAR; // number of our network name
ncb_buffer: PChar; // address of message buffer
ncb_length: Word; // size of message buffer
ncb_callname: array [0..NCBNAMSZ - 1] of Char; // blank-padded name of remote
ncb_name: array [0..NCBNAMSZ - 1] of Char; // our blank-padded netname
ncb_rto: UCHAR; // rcv timeout/retry count
ncb_sto: UCHAR; // send timeout/sys timeout
ncb_post: TNcbPost; // POST routine address
ncb_lana_num: UCHAR; // lana (adapter) number
ncb_cmd_cplt: UCHAR; // 0xff => commmand pending
{$IFDEF _WIN64}
ncb_reserve: array [0..17] of Char; // reserved, used by BIOS
{$ELSE}
ncb_reserve: array [0..9] of Char; // reserved, used by BIOS
{$ENDIF}
ncb_event: HANDLE; // HANDLE to Win32 event which
// will be set to the signalled
// state when an ASYNCH command
// completes
end;
{$EXTERNALSYM _NCB}
NCB = _NCB;
{$EXTERNALSYM NCB}
TNcb = NCB;
//
// Structure returned to the NCB command NCBASTAT is ADAPTER_STATUS followed
// by an array of NAME_BUFFER structures.
//
_ADAPTER_STATUS = record
adapter_address: array [0..5] of UCHAR;
rev_major: UCHAR;
reserved0: UCHAR;
adapter_type: UCHAR;
rev_minor: UCHAR;
duration: WORD;
frmr_recv: WORD;
frmr_xmit: WORD;
iframe_recv_err: WORD;
xmit_aborts: WORD;
xmit_success: DWORD;
recv_success: DWORD;
iframe_xmit_err: WORD;
recv_buff_unavail: WORD;
t1_timeouts: WORD;
ti_timeouts: WORD;
reserved1: DWORD;
free_ncbs: WORD;
max_cfg_ncbs: WORD;
max_ncbs: WORD;
xmit_buf_unavail: WORD;
max_dgram_size: WORD;
pending_sess: WORD;
max_cfg_sess: WORD;
max_sess: WORD;
max_sess_pkt_size: WORD;
name_count: WORD;
end;
{$EXTERNALSYM _ADAPTER_STATUS}
ADAPTER_STATUS = _ADAPTER_STATUS;
{$EXTERNALSYM ADAPTER_STATUS}
PADAPTER_STATUS = ^ADAPTER_STATUS;
{$EXTERNALSYM PADAPTER_STATUS}
TAdapterStatus = ADAPTER_STATUS;
PAdapterStatus = PADAPTER_STATUS;
_NAME_BUFFER = record
name: array [0..NCBNAMSZ - 1] of Char;
name_num: UCHAR;
name_flags: UCHAR;
end;
{$EXTERNALSYM _NAME_BUFFER}
NAME_BUFFER = _NAME_BUFFER;
{$EXTERNALSYM NAME_BUFFER}
PNAME_BUFFER = ^NAME_BUFFER;
{$EXTERNALSYM PNAME_BUFFER}
TNameBuffer = NAME_BUFFER;
PNameBuffer = PNAME_BUFFER;
// values for name_flags bits.
const
NAME_FLAGS_MASK = $87;
{$EXTERNALSYM NAME_FLAGS_MASK}
GROUP_NAME = $80;
{$EXTERNALSYM GROUP_NAME}
UNIQUE_NAME = $00;
{$EXTERNALSYM UNIQUE_NAME}
REGISTERING = $00;
{$EXTERNALSYM REGISTERING}
REGISTERED = $04;
{$EXTERNALSYM REGISTERED}
DEREGISTERED = $05;
{$EXTERNALSYM DEREGISTERED}
DUPLICATE = $06;
{$EXTERNALSYM DUPLICATE}
DUPLICATE_DEREG = $07;
{$EXTERNALSYM DUPLICATE_DEREG}
//
// Structure returned to the NCB command NCBSSTAT is SESSION_HEADER followed
// by an array of SESSION_BUFFER structures. If the NCB_NAME starts with an
// asterisk then an array of these structures is returned containing the
// status for all names.
//
type
_SESSION_HEADER = record
sess_name: UCHAR;
num_sess: UCHAR;
rcv_dg_outstanding: UCHAR;
rcv_any_outstanding: UCHAR;
end;
{$EXTERNALSYM _SESSION_HEADER}
SESSION_HEADER = _SESSION_HEADER;
{$EXTERNALSYM SESSION_HEADER}
PSESSION_HEADER = ^SESSION_HEADER;
{$EXTERNALSYM PSESSION_HEADER}
TSessionHeader = SESSION_HEADER;
PSessionHeader = PSESSION_HEADER;
_SESSION_BUFFER = record
lsn: UCHAR;
state: UCHAR;
local_name: array [0..NCBNAMSZ - 1] of UCHAR;
remote_name: array [0..NCBNAMSZ - 1] of UCHAR;
rcvs_outstanding: UCHAR;
sends_outstanding: UCHAR;
end;
{$EXTERNALSYM _SESSION_BUFFER}
SESSION_BUFFER = _SESSION_BUFFER;
{$EXTERNALSYM SESSION_BUFFER}
PSESSION_BUFFER = ^SESSION_BUFFER;
{$EXTERNALSYM PSESSION_BUFFER}
TSessionBuffer = SESSION_BUFFER;
PSessionBuffer = PSESSION_BUFFER;
// Values for state
const
LISTEN_OUTSTANDING = $01;
{$EXTERNALSYM LISTEN_OUTSTANDING}
CALL_PENDING = $02;
{$EXTERNALSYM CALL_PENDING}
SESSION_ESTABLISHED = $03;
{$EXTERNALSYM SESSION_ESTABLISHED}
HANGUP_PENDING = $04;
{$EXTERNALSYM HANGUP_PENDING}
HANGUP_COMPLETE = $05;
{$EXTERNALSYM HANGUP_COMPLETE}
SESSION_ABORTED = $06;
{$EXTERNALSYM SESSION_ABORTED}
//
// Structure returned to the NCB command NCBENUM.
//
// On a system containing lana's 0, 2 and 3, a structure with
// length =3, lana[0]=0, lana[1]=2 and lana[2]=3 will be returned.
//
type
_LANA_ENUM = record
length: UCHAR; // Number of valid entries in lana[]
lana: array [0..MAX_LANA] of UCHAR;
end;
{$EXTERNALSYM _LANA_ENUM}
LANA_ENUM = _LANA_ENUM;
{$EXTERNALSYM LANA_ENUM}
PLANA_ENUM = ^LANA_ENUM;
{$EXTERNALSYM PLANA_ENUM}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -