windows-nt/Source/XPSP1/NT/net/sfm/afp/server/atalkio.h
2020-09-26 16:20:57 +08:00

294 lines
9 KiB
C
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
Copyright (c) 1992 Microsoft Corporation
Module Name:
atalkio.h
Abstract:
This module contains interface specification to the appletalk stack.
Author:
Jameel Hyder (microsoft!jameelh)
Revision History:
19 Jun 1992 Initial Version
Notes: Tab stop: 4
--*/
#ifndef _ATALKIO_
#define _ATALKIO_
extern BOOLEAN AfpServerBoundToAsp;
extern BOOLEAN AfpServerBoundToTcp;
extern HANDLE AfpTdiNotificationHandle;
extern
VOID
AfpTdiPnpHandler(
IN TDI_PNP_OPCODE PnPOpcode,
IN PUNICODE_STRING pBindDeviceName,
IN PWSTR BindingList
);
extern
VOID FASTCALL
AfpPnPReconfigDisable(
IN PVOID Context
);
extern
VOID FASTCALL
AfpPnPReconfigEnable(
IN PVOID Context
);
extern
NTSTATUS
AfpTdiRegister(
IN VOID
);
extern
VOID
AfpTdiBindCallback(
IN PUNICODE_STRING pBindDeviceName
);
extern
VOID
AfpTdiUnbindCallback(
IN PUNICODE_STRING pBindDeviceName
);
extern
NTSTATUS
AfpSpOpenAddress(
VOID
);
extern
VOID
AfpSpCloseAddress(
VOID
);
extern
NTSTATUS FASTCALL
AfpSpCloseSession(
IN PSDA pSda
);
extern
AFPSTATUS
AfpSpRegisterName(
IN PANSI_STRING ServerName,
IN BOOLEAN Register
);
extern
VOID FASTCALL
AfpSpReplyClient(
IN PREQUEST pRequest,
IN LONG ReplyCode,
IN PASP_XPORT_ENTRIES XportTable
);
extern
VOID FASTCALL
AfpSpSendAttention(
IN PSDA pSda,
IN USHORT AttnCode,
IN BOOLEAN Synchronous
);
extern
VOID
AfpFreeReplyBuf(
IN PSDA pSda,
IN BOOLEAN fLockHeld
);
#define DSI_BACKFILL_OFFSET(pSda) \
((pSda->sda_Flags & SDA_SESSION_OVER_TCP)? DSI_HEADER_SIZE : 0)
//
// when we go over TCP/IP, we want to allocate 16 more bytes for the
// DSI header for better performance.
//
#define AfpIOAllocBackFillBuffer(pSda) \
{ \
DWORD _ReplySize = pSda->sda_ReplySize; \
DWORD _Offset = 0; \
PBYTE _pReplyBufStart; \
\
if (pSda->sda_Flags & SDA_SESSION_OVER_TCP) \
{ \
_ReplySize += DSI_HEADER_SIZE; \
_Offset = DSI_HEADER_SIZE; \
} \
\
_pReplyBufStart = AfpIOAllocBuffer(_ReplySize); \
\
if (_pReplyBufStart != NULL) \
{ \
pSda->sda_IOBuf = _pReplyBufStart+_Offset; \
} \
else \
{ \
pSda->sda_IOBuf = NULL; \
} \
}
#define AfpPutGuardSignature(pSda) \
{ \
PBYTE _pReplyBufStart = pSda->sda_IOBuf; \
if (pSda->sda_Flags & SDA_SESSION_OVER_TCP) \
{ \
_pReplyBufStart -= DSI_HEADER_SIZE; \
} \
*(DWORD *)_pReplyBufStart = 0x081294; \
}
#define AfpIOFreeBackFillBuffer(pSda) \
{ \
DWORD _Offset = 0; \
PBYTE _pReplyBufStart = pSda->sda_IOBuf; \
\
if (pSda->sda_IOBuf != NULL) \
{ \
if (pSda->sda_Flags & SDA_SESSION_OVER_TCP) \
{ \
_pReplyBufStart -= DSI_HEADER_SIZE; \
} \
\
AfpIOFreeBuffer(_pReplyBufStart); \
\
(pSda)->sda_IOBuf = NULL; \
(pSda)->sda_IOSize = 0; \
} \
}
#define AfpFreeIOBuffer(pSda) \
if ((pSda)->sda_IOBuf != NULL) \
{ \
AfpIOFreeBuffer((pSda)->sda_IOBuf); \
(pSda)->sda_IOBuf = NULL; \
(pSda)->sda_IOSize = 0; \
}
// set the status on ASP
#define AfpSpSetAspStatus(pStatusBuf, Size) \
(*(AfpAspEntries.asp_SetStatus))(AfpAspEntries.asp_AspCtxt, \
pStatusBuf, \
(USHORT)(Size));
// set the status on DSI
#define AfpSpSetDsiStatus(pStatusBuf, Size) \
(*(AfpDsiEntries.asp_SetStatus))(AfpDsiEntries.asp_AspCtxt, \
pStatusBuf, \
(USHORT)(Size));
// set the Disable Listen on ASP only
#define AfpSpDisableListensOnAsp() \
{ \
if (AfpServerBoundToAsp) \
{ \
(*(AfpAspEntries.asp_ListenControl))(AfpAspEntries.asp_AspCtxt, False); \
} \
}
// set the Disable Listen on ASP as well as DSI interfaces!
#define AfpSpDisableListens() \
{ \
if (AfpServerBoundToAsp) \
{ \
(*(AfpAspEntries.asp_ListenControl))(AfpAspEntries.asp_AspCtxt, False); \
} \
if (AfpServerBoundToTcp) \
{ \
(*(AfpDsiEntries.asp_ListenControl))(AfpDsiEntries.asp_AspCtxt, False); \
} \
}
// set the Enable Listen on ASP as well as DSI interfaces!
#define AfpSpEnableListens() \
{ \
if (AfpServerBoundToAsp) \
{ \
(*(AfpAspEntries.asp_ListenControl))(AfpAspEntries.asp_AspCtxt, True); \
} \
if (AfpServerBoundToTcp) \
{ \
(*(AfpDsiEntries.asp_ListenControl))(AfpDsiEntries.asp_AspCtxt, True); \
} \
}
GLOBAL ASP_XPORT_ENTRIES AfpAspEntries EQU { 0 };
GLOBAL ASP_XPORT_ENTRIES AfpDsiEntries EQU { 0 };
#define AFP_MAX_REQ_BUF 578
#define afpInitializeActionHdr(p, Code) \
(p)->ActionHeader.TransportId = MATK; \
(p)->ActionHeader.ActionCode = (Code)
// This is the device handle to the stack.
extern BOOLEAN afpSpNameRegistered;
extern HANDLE afpSpAddressHandle;
extern PDEVICE_OBJECT afpSpAppleTalkDeviceObject;
extern PFILE_OBJECT afpSpAddressObject;
extern LONG afpSpNumOutstandingReplies;
LOCAL NTSTATUS FASTCALL
afpSpHandleRequest(
IN NTSTATUS Status,
IN PSDA pSda,
IN PREQUEST pRequest
);
LOCAL VOID FASTCALL
afpSpReplyComplete(
IN NTSTATUS Status,
IN PSDA pSda,
IN PREQUEST pRequest
);
LOCAL VOID FASTCALL
afpSpCloseComplete(
IN NTSTATUS Status,
IN PSDA pSda
);
LOCAL NTSTATUS
afpSpGenericComplete(
IN PDEVICE_OBJECT pDeviceObject,
IN PIRP pIrp,
IN PKEVENT pCmplEvent
);
LOCAL VOID FASTCALL
afpSpAttentionComplete(
IN PVOID pContext
);
#endif // _ATALKIO_