mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
594 lines
12 KiB
594 lines
12 KiB
|
|
/*++
|
|
|
|
Copyright (c) 1989 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
atalktdi.h
|
|
|
|
Abstract:
|
|
|
|
This file defines the interface that will be offered to the layers of the
|
|
stack
|
|
|
|
Author:
|
|
|
|
Nikhil Kamkolkar (NikhilK) 8-Jun-1992
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
#ifndef _ATALKTDI_H
|
|
#define _ATALKTDI_H
|
|
|
|
//
|
|
// The provider names supported by the Appletalk stack
|
|
//
|
|
|
|
#define ATALKDDP_DEVICENAME L"\\Device\\AtalkDdp"
|
|
#define ATALKADSP_DEVICENAME L"\\Device\\AtalkAdsp"
|
|
#define ATALKASPS_DEVICENAME L"\\Device\\AtalkAspServer"
|
|
#define ATALKASPC_DEVICENAME L"\\Device\\AtalkAspClient"
|
|
#define ATALKPAP_DEVICENAME L"\\Device\\AtalkPap"
|
|
#define ATALKARAP_DEVICENAME L"\\Device\\AtalkArap"
|
|
|
|
//
|
|
// The following is passed in the TdiAction calls to reaffirm that
|
|
// the request is meant for the Appletalk transport.
|
|
//
|
|
|
|
#define MATK (*(ULONG *)"MATK")
|
|
|
|
//
|
|
// Options buffer for all the calls
|
|
//
|
|
|
|
typedef struct _OPTIONS_CONNINF
|
|
{
|
|
union
|
|
{
|
|
int ProtocolType;
|
|
TRANSPORT_ADDRESS Address;
|
|
|
|
struct
|
|
{
|
|
TRANSPORT_ADDRESS RemoteAddress;
|
|
USHORT WorkstationQuantum;
|
|
USHORT ServerQuantum;
|
|
} PapInfo;
|
|
};
|
|
} OPTIONS_CONNINF, *POPTIONS_CONNINF;
|
|
#define OPTIONS_LENGTH sizeof(OPTIONS_CONNINF)
|
|
|
|
typedef union
|
|
{
|
|
struct
|
|
{
|
|
USHORT Network;
|
|
UCHAR Node;
|
|
UCHAR Socket;
|
|
};
|
|
ULONG Address;
|
|
} ATALK_ADDRESS, *PATALK_ADDRESS;
|
|
|
|
//
|
|
// ACTION CODES:
|
|
// The NBP/ZIP primitives are available to all the providers. The action
|
|
// codes for those are defined first. Following this are the action
|
|
// codes specific to each provider. To insert a new action code, just
|
|
// tag it at the end of the action codes for a particular block (common/
|
|
// provider specific), and increment the max for that block.
|
|
//
|
|
// *IMPORTANT*
|
|
// These are tightly integrated with the dispatch table for the action
|
|
// routines in ATKINIT.C
|
|
//
|
|
|
|
|
|
#define COMMON_ACTIONBASE 0
|
|
#define MIN_COMMON_ACTIONCODE (COMMON_ACTIONBASE)
|
|
|
|
#define COMMON_ACTION_NBPLOOKUP (COMMON_ACTIONBASE)
|
|
#define COMMON_ACTION_NBPCONFIRM (COMMON_ACTIONBASE+0x01)
|
|
#define COMMON_ACTION_NBPREGISTER (COMMON_ACTIONBASE+0x02)
|
|
#define COMMON_ACTION_NBPREMOVE (COMMON_ACTIONBASE+0x03)
|
|
|
|
#define COMMON_ACTION_ZIPGETMYZONE (COMMON_ACTIONBASE+0x04)
|
|
#define COMMON_ACTION_ZIPGETZONELIST (COMMON_ACTIONBASE+0x05)
|
|
#define COMMON_ACTION_ZIPGETLZONES (COMMON_ACTIONBASE+0x06)
|
|
#define COMMON_ACTION_ZIPGETLZONESONADAPTER (COMMON_ACTIONBASE+0x07)
|
|
#define COMMON_ACTION_ZIPGETADAPTERDEFAULTS (COMMON_ACTIONBASE+0x08)
|
|
|
|
#define COMMON_ACTION_GETSTATISTICS (COMMON_ACTIONBASE+0x09)
|
|
#define MAX_COMMON_ACTIONCODE (COMMON_ACTIONBASE+0x09)
|
|
#define COMMON_ACTIONCODES (MAX_COMMON_ACTIONCODE - MIN_COMMON_ACTIONCODE + 1)
|
|
|
|
//
|
|
// Provider specific action codes
|
|
//
|
|
|
|
//
|
|
// DDP
|
|
//
|
|
// NONE
|
|
//
|
|
|
|
//
|
|
// ADSP
|
|
//
|
|
|
|
#define ADSP_ACTIONBASE (MAX_COMMON_ACTIONCODE + 0x01)
|
|
#define MIN_ADSPACTIONCODE (ADSP_ACTIONBASE)
|
|
|
|
#define ACTION_ADSPFORWARDRESET (ADSP_ACTIONBASE)
|
|
|
|
#define MAX_ADSPACTIONCODE (ADSP_ACTIONBASE)
|
|
#define ADSP_SPECIFIC_ACTIONCODES (MAX_ADSPACTIONCODE - MIN_ADSPACTIONCODE + 1)
|
|
|
|
//
|
|
// ASP Client
|
|
//
|
|
|
|
#define ASPC_ACTIONBASE (MAX_ADSPACTIONCODE + 0x01)
|
|
#define MIN_ASPCACTIONCODE (ATP_ACTIONBASE)
|
|
|
|
#define ACTION_ASPCGETSTATUS (ASPC_ACTIONBASE)
|
|
#define ACTION_ASPCCOMMAND (ASPC_ACTIONBASE+0x01)
|
|
#define ACTION_ASPCWRITE (ASPC_ACTIONBASE+0x02)
|
|
|
|
// The following 2 are for NBP, stole 2 slots here that were reserved
|
|
#define COMMON_ACTION_NBPREGISTER_BY_ADDR (ASPC_ACTIONBASE+0x03)
|
|
#define COMMON_ACTION_NBPREMOVE_BY_ADDR (ASPC_ACTIONBASE+0x04)
|
|
#define ACTION_ASPCRESERVED3 (ASPC_ACTIONBASE+0x05)
|
|
|
|
#define MAX_ASPCACTIONCODE (ASPC_ACTIONBASE+0x05)
|
|
#define ASPC_SPECIFIC_ACTIONCODES (MAX_ASPCACTIONCODE - MIN_ASPCACTIONCODE + 1)
|
|
|
|
|
|
//
|
|
// ASP Server
|
|
//
|
|
|
|
#define ASP_ACTIONBASE (MAX_ASPCACTIONCODE + 0x01)
|
|
#define MIN_ASPACTIONCODE (ASP_ACTIONBASE)
|
|
|
|
#define ACTION_ASP_BIND (ASP_ACTIONBASE)
|
|
|
|
#define MAX_ASPACTIONCODE (ASP_ACTIONBASE)
|
|
#define ASP_SPECIFIC_ACTIONCODES (MAX_ASPACTIONCODE - MIN_ASPACTIONCODE + 1)
|
|
|
|
//
|
|
// PAP
|
|
//
|
|
|
|
#define PAP_ACTIONBASE (MAX_ASPACTIONCODE + 0x01)
|
|
#define MIN_PAPACTIONCODE (PAP_ACTIONBASE)
|
|
|
|
#define ACTION_PAPGETSTATUSSRV (PAP_ACTIONBASE)
|
|
#define ACTION_PAPSETSTATUS (PAP_ACTIONBASE+0x01)
|
|
#define ACTION_PAPPRIMEREAD (PAP_ACTIONBASE+0x02)
|
|
|
|
#define MAX_PAPACTIONCODE (PAP_ACTIONBASE+0x02)
|
|
#define PAP_SPECIFIC_ACTIONCODES (MAX_PAPACTIONCODE - MIN_PAPACTIONCODE + 1)
|
|
|
|
#define MAX_ALLACTIONCODES (MAX_PAPACTIONCODE)
|
|
|
|
//
|
|
// STRUCTURE Definitions for the ACTION routines for all the providers
|
|
//
|
|
|
|
|
|
|
|
|
|
//
|
|
// NBP Interface
|
|
//
|
|
|
|
//
|
|
// **WARNING**
|
|
// The structure WSH_NBP_NAME is defined to be exactly like this in atalkwsh.h
|
|
// Change both if they ever need to be changed
|
|
//
|
|
|
|
#define MAX_ENTITY 32
|
|
|
|
typedef struct
|
|
{
|
|
UCHAR ObjectNameLen;
|
|
UCHAR ObjectName[MAX_ENTITY];
|
|
UCHAR TypeNameLen;
|
|
UCHAR TypeName[MAX_ENTITY];
|
|
UCHAR ZoneNameLen;
|
|
UCHAR ZoneName[MAX_ENTITY];
|
|
} NBP_NAME, *PNBP_NAME;
|
|
|
|
typedef struct
|
|
{
|
|
ATALK_ADDRESS Address;
|
|
USHORT Enumerator;
|
|
NBP_NAME NbpName;
|
|
} NBP_TUPLE, *PNBP_TUPLE;
|
|
|
|
//
|
|
// NBP Lookup
|
|
//
|
|
|
|
typedef struct
|
|
{
|
|
NBP_TUPLE LookupTuple;
|
|
USHORT NoTuplesRead;
|
|
|
|
} NBP_LOOKUP_PARAMS, *PNBP_LOOKUP_PARAMS;
|
|
|
|
typedef struct
|
|
{
|
|
TDI_ACTION_HEADER ActionHeader;
|
|
NBP_LOOKUP_PARAMS Params;
|
|
|
|
//
|
|
// NBP_TUPLE NbpTuples[]
|
|
//
|
|
|
|
} NBP_LOOKUP_ACTION, *PNBP_LOOKUP_ACTION;
|
|
|
|
//
|
|
// NBP Confirm
|
|
//
|
|
|
|
typedef struct
|
|
{
|
|
NBP_TUPLE ConfirmTuple;
|
|
|
|
} NBP_CONFIRM_PARAMS, *PNBP_CONFIRM_PARAMS;
|
|
|
|
typedef struct
|
|
{
|
|
TDI_ACTION_HEADER ActionHeader;
|
|
NBP_CONFIRM_PARAMS Params;
|
|
|
|
} NBP_CONFIRM_ACTION, *PNBP_CONFIRM_ACTION;
|
|
|
|
//
|
|
// NBP Register/Deregister- Address Object
|
|
// Use the following for both register/deregister on their
|
|
// respective objects
|
|
//
|
|
|
|
typedef struct
|
|
{
|
|
union
|
|
{
|
|
NBP_TUPLE RegisterTuple;
|
|
NBP_TUPLE RegisteredTuple;
|
|
};
|
|
|
|
} NBP_REGDEREG_PARAMS, *PNBP_REGDEREG_PARAMS;
|
|
|
|
typedef struct
|
|
{
|
|
TDI_ACTION_HEADER ActionHeader;
|
|
NBP_REGDEREG_PARAMS Params;
|
|
|
|
} NBP_REGDEREG_ACTION, *PNBP_REGDEREG_ACTION;
|
|
|
|
|
|
|
|
|
|
//
|
|
// ZIP Interface
|
|
//
|
|
|
|
//
|
|
// ZIP GetMyZone
|
|
//
|
|
|
|
typedef struct
|
|
{
|
|
TDI_ACTION_HEADER ActionHeader;
|
|
|
|
//
|
|
// CHAR ZoneName[]
|
|
// Maximum of MAX_ENTITYNAME+1
|
|
//
|
|
|
|
} ZIP_GETMYZONE_ACTION, *PZIP_GETMYZONE_ACTION;
|
|
|
|
//
|
|
// ZIP GetZoneList
|
|
//
|
|
|
|
typedef struct
|
|
{
|
|
LONG ZonesAvailable;
|
|
|
|
} ZIP_GETZONELIST_PARAMS, *PZIP_GETZONELIST_PARAMS;
|
|
|
|
typedef struct
|
|
{
|
|
TDI_ACTION_HEADER ActionHeader;
|
|
ZIP_GETZONELIST_PARAMS Params;
|
|
|
|
//
|
|
// CHAR ZoneListBuffer[];
|
|
//
|
|
|
|
} ZIP_GETZONELIST_ACTION, *PZIP_GETZONELIST_ACTION;
|
|
|
|
//
|
|
// ZIP GetLocalZones
|
|
// This uses the same structure as that for the GetZoneList command
|
|
//
|
|
|
|
//
|
|
// ZIP GetLocalZonesOnAdapter
|
|
// This uses the same structure as for the GetZoneList command, with the
|
|
// condition that the adapter name follows the structure as a null
|
|
// terminated double-byte string. It will be overwritten upon return
|
|
// by the zone names.
|
|
//
|
|
|
|
//
|
|
// ZIP GetAdaptorDefaults (Network Range & Default Zone)
|
|
//
|
|
// The adapter name follows the structure as a null terminated double-byte
|
|
// string. This is replaced by the zone name.
|
|
|
|
typedef struct
|
|
{
|
|
USHORT NwRangeLowEnd;
|
|
USHORT NwRangeHighEnd;
|
|
|
|
} ZIP_GETPORTDEF_PARAMS, *PZIP_GETPORTDEF_PARAMS;
|
|
|
|
typedef struct
|
|
{
|
|
TDI_ACTION_HEADER ActionHeader;
|
|
ZIP_GETPORTDEF_PARAMS Params;
|
|
|
|
// INPUT:
|
|
// WCHAR AdaptorName
|
|
// Maximum of MAX_ENTITYNAME+1
|
|
//
|
|
// OUTPUT:
|
|
// BYTE DefZone[MAX_ENTITY+1];
|
|
} ZIP_GETPORTDEF_ACTION, *PZIP_GETPORTDEF_ACTION;
|
|
|
|
typedef struct
|
|
{
|
|
TDI_ACTION_HEADER ActionHeader;
|
|
|
|
// OUTPUT:
|
|
// Appletalk statistics structure
|
|
} GET_STATISTICS_ACTION, *PGET_STATISTICS_ACTION;
|
|
|
|
//
|
|
// DDP Interface
|
|
// NONE
|
|
//
|
|
|
|
|
|
//
|
|
// ADSP Interface- specific action routines for ADSP
|
|
//
|
|
|
|
//
|
|
// ADSP Forward Reset
|
|
//
|
|
|
|
typedef struct _ADSP_FORWARDRESET_ACTION
|
|
{
|
|
TDI_ACTION_HEADER ActionHeader;
|
|
} ADSP_FORWARDRESET_ACTION, *PADSP_FORWARDRESET_ACTION;
|
|
|
|
|
|
|
|
|
|
//
|
|
// ASP Client Interface- specific action routines for ASP Client
|
|
//
|
|
|
|
//
|
|
// ASP GetStatus
|
|
//
|
|
typedef struct
|
|
{
|
|
TA_APPLETALK_ADDRESS ServerAddr;
|
|
|
|
} ASPC_GETSTATUS_PARAMS, *PASPC_GETSTATUS_PARAMS;
|
|
|
|
typedef struct
|
|
{
|
|
TDI_ACTION_HEADER ActionHeader;
|
|
ASPC_GETSTATUS_PARAMS Params;
|
|
|
|
} ASPC_GETSTATUS_ACTION, *PASPC_GETSTATUS_ACTION;
|
|
|
|
//
|
|
// ASP Command or Write
|
|
//
|
|
typedef struct
|
|
{
|
|
USHORT CmdSize;
|
|
USHORT WriteAndReplySize;
|
|
// BYTE CmdBuff[CmdSize];
|
|
// BYTE WriteAndReplyBuf[ReplySize];
|
|
|
|
} ASPC_COMMAND_OR_WRITE_PARAMS, *PASPC_COMMAND_OR_WRITE_PARAMS;
|
|
|
|
typedef struct
|
|
{
|
|
TDI_ACTION_HEADER ActionHeader;
|
|
ASPC_COMMAND_OR_WRITE_PARAMS Params;
|
|
|
|
} ASPC_COMMAND_OR_WRITE_ACTION, *PASPC_COMMAND_OR_WRITE_ACTION;
|
|
|
|
typedef struct
|
|
{
|
|
TDI_ACTION_HEADER ActionHeader;
|
|
|
|
} ASPC_RESERVED_ACTION, *PASPC_RESERVED_ACTION;
|
|
|
|
//
|
|
// ASP Server Interface- action routines specific to ASP Server
|
|
//
|
|
|
|
typedef PVOID CONNCTXT;
|
|
|
|
typedef struct
|
|
{
|
|
PUCHAR rq_RequestBuf;
|
|
LONG rq_RequestSize;
|
|
union
|
|
{
|
|
PMDL rq_WriteMdl;
|
|
PMDL rq_ReplyMdl;
|
|
};
|
|
PVOID rq_CacheMgrContext;
|
|
|
|
} REQUEST, *PREQUEST;
|
|
|
|
typedef VOID (FASTCALL *CLIENT_CLOSE_COMPLETION)(
|
|
IN NTSTATUS Status,
|
|
IN PVOID pCloseCtxt);
|
|
|
|
typedef VOID (FASTCALL *CLIENT_REPLY_COMPLETION)(
|
|
IN NTSTATUS Status,
|
|
IN PVOID pReplyCtxt,
|
|
IN PREQUEST Request);
|
|
|
|
// Returns context to associate for this session
|
|
typedef CONNCTXT (FASTCALL *CLIENT_SESSION_NOTIFY)(
|
|
IN PVOID pConnection,
|
|
IN BOOLEAN fOverTcp);
|
|
|
|
typedef NTSTATUS (FASTCALL *CLIENT_REQUEST_NOTIFY)(
|
|
IN NTSTATUS Status,
|
|
IN PVOID ConnCtxt,
|
|
IN PREQUEST Request);
|
|
|
|
// Returns MDL describing the buffer
|
|
typedef NTSTATUS (FASTCALL *CLIENT_GET_WRITEBUFFER)(
|
|
IN PVOID pSda,
|
|
IN PREQUEST pRequest);
|
|
|
|
typedef VOID (FASTCALL *CLIENT_ATTN_COMPLETION)(
|
|
IN PVOID pContext);
|
|
|
|
typedef NTSTATUS (*ASP_CLOSE_CONN)(
|
|
IN PVOID pConnection);
|
|
|
|
typedef NTSTATUS (*ASP_FREE_CONN)(
|
|
IN PVOID pConnection);
|
|
|
|
typedef NTSTATUS (FASTCALL *ASP_LISTEN_CONTROL)( // Synchronous
|
|
IN PVOID pAspCtxt,
|
|
IN BOOLEAN Active);
|
|
|
|
typedef NTSTATUS (*ASP_SET_STATUS)( // Synchronous
|
|
IN PVOID pAspCtxt,
|
|
IN PUCHAR pStatus,
|
|
IN USHORT StatusSize);
|
|
|
|
typedef NTSTATUS (FASTCALL *ASP_WRITE_CONTINUE)(
|
|
IN PVOID PREQUEST);
|
|
|
|
typedef NTSTATUS (FASTCALL *ASP_REPLY)(
|
|
IN PREQUEST pRequest,
|
|
IN PUCHAR ResultCode);
|
|
|
|
typedef NTSTATUS (*ASP_SEND_ATTENTION)(
|
|
IN PVOID pConnection,
|
|
IN USHORT AttentionCode,
|
|
IN PVOID pContext);
|
|
|
|
typedef struct
|
|
{
|
|
CLIENT_SESSION_NOTIFY clt_SessionNotify; // When a new session is established
|
|
CLIENT_REQUEST_NOTIFY clt_RequestNotify; // When a new request comes in
|
|
// Also on remote closes
|
|
CLIENT_GET_WRITEBUFFER clt_GetWriteBuffer; // For ASP Write command.
|
|
CLIENT_REPLY_COMPLETION clt_ReplyCompletion; // Completion routine for a reply
|
|
CLIENT_ATTN_COMPLETION clt_AttnCompletion; // Completion routine for send attention
|
|
CLIENT_CLOSE_COMPLETION clt_CloseCompletion; // Completion routine for a session close request
|
|
} ASP_CLIENT_ENTRIES, *PASP_CLIENT_ENTRIES;
|
|
|
|
typedef struct
|
|
{
|
|
ATALK_ADDRESS asp_AtalkAddr; // net addr of default adapter
|
|
PVOID asp_AspCtxt;
|
|
ASP_SET_STATUS asp_SetStatus;
|
|
ASP_CLOSE_CONN asp_CloseConn;
|
|
ASP_FREE_CONN asp_FreeConn;
|
|
ASP_LISTEN_CONTROL asp_ListenControl;
|
|
ASP_WRITE_CONTINUE asp_WriteContinue;
|
|
ASP_REPLY asp_Reply;
|
|
ASP_SEND_ATTENTION asp_SendAttention;
|
|
} ASP_XPORT_ENTRIES, *PASP_XPORT_ENTRIES;
|
|
|
|
//
|
|
// ASP Exchange entries
|
|
//
|
|
|
|
typedef struct
|
|
{
|
|
PASP_XPORT_ENTRIES pXportEntries;
|
|
ASP_CLIENT_ENTRIES ClientEntries;
|
|
} ASP_BIND_PARAMS, *PASP_BIND_PARAMS;
|
|
|
|
typedef struct
|
|
{
|
|
TDI_ACTION_HEADER ActionHeader;
|
|
ASP_BIND_PARAMS Params;
|
|
} ASP_BIND_ACTION, *PASP_BIND_ACTION;
|
|
|
|
|
|
|
|
|
|
//
|
|
// PAP Interface
|
|
//
|
|
|
|
//
|
|
// PAP GetStatus Using Server Address
|
|
//
|
|
|
|
typedef struct
|
|
{
|
|
TA_APPLETALK_ADDRESS ServerAddr;
|
|
|
|
} PAP_GETSTATUSSRV_PARAMS, *PPAP_GETSTATUSSRV_PARAMS;
|
|
|
|
typedef struct
|
|
{
|
|
TDI_ACTION_HEADER ActionHeader;
|
|
PAP_GETSTATUSSRV_PARAMS Params;
|
|
|
|
} PAP_GETSTATUSSRV_ACTION, *PPAP_GETSTATUSSRV_ACTION;
|
|
|
|
|
|
//
|
|
// PAP SetStatus
|
|
//
|
|
|
|
typedef struct
|
|
{
|
|
TDI_ACTION_HEADER ActionHeader;
|
|
|
|
} PAP_SETSTATUS_ACTION, *PPAP_SETSTATUS_ACTION;
|
|
|
|
//
|
|
// PAP PrimeRead
|
|
//
|
|
|
|
typedef struct
|
|
{
|
|
TDI_ACTION_HEADER ActionHeader;
|
|
|
|
} PAP_PRIMEREAD_ACTION, *PPAP_PRIMEREAD_ACTION;
|
|
|
|
#else
|
|
;
|
|
#endif
|
|
|