⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 helper.h

📁 See Hanoi.cpp for the implementation of this cla
💻 H
字号:

/**********************************************************************/
/**                        Microsoft Windows                         **/
/**Copyright (c) 1996-2000 Microsoft Corporation.  All rights reserved.**/
/**********************************************************************/

/*
	helper.h
	
	info needed by afd's helper dll's

*/

#ifndef _HELPER_H_
#define _HELPER_H_

#ifndef VXDAPI
#define VXDAPI		__cdecl
#endif

//	Helper Function Indices into the AFD VTable

#define	AFD_NETBIOS_IDX		24
#define AFD_DHCP_IDX		25


//	Afd Function Typedefs

typedef SOCKHAND (VXDAPI *AFN_Socket)(
	DWORD AddressFamily,
	DWORD SocketType,
	DWORD Protocol);

typedef DWORD (VXDAPI *AFN_Control)(
	DWORD		Protocol,
	DWORD       Action,
	LPVOID      InputBuffer,
	LPDWORD     InputBufferLength,
	LPVOID      OutputBuffer,
	LPDWORD     OutputBufferLength);

typedef DWORD (VXDAPI *AFN_EnumProtocolsW)(
	LPINT           lpiProtocols,
	LPVOID          lpProtocolBuffer,
	LPDWORD         lpdwBufferLength);

typedef DWORD (*AFN_GetHostentByAttr)(
	LPSOCK_THREAD 			pThread,
	LPSTR					Name,		
	LPBYTE					Address);	

typedef DWORD (*AFN_AddIPHostent)(
	LPWSTR		 			Hostname,		
	DWORD					IpAddr,			
	LPWSTR					Aliases,			
	LPFILETIME				lpFileTime);	
  
typedef DWORD (VXDAPI *AFN_Select)(
	UINT				ReadCount,
	LPSOCK_LIST			ReadList,
	UINT				WriteCount,
	LPSOCK_LIST			WriteList,
	UINT				ExceptCount,
	LPSOCK_LIST			ExceptList,
	const struct timeval * timeout,
	CRITICAL_SECTION	*pDllCS);

typedef DWORD (*AFN_AddResolver)(
	DWORD	CONTEXT,
	BOOL	fDNS,
	BOOL	fDelete,
	DWORD	IpAddr);

typedef DWORD(*AFN_AddInterface)(
	PTSTR	pAdapter,
	VOID	*Nte,
	DWORD	Context,
	INT		Flags,
	UINT	IpAddr,
	UINT	SubnetMask,
	int		cDns,
	UINT	*pDns,
	int		cWins,
	UINT	*pWins);


//	Socket Function Typedefs

typedef DWORD (VXDAPI *ASF_Close) (
    LPSOCK_INFO Socket);

typedef DWORD (VXDAPI *ASF_Accept)(
    LPSOCK_INFO   ListeningSocket,
    PSOCKHAND	  ConnectedSocket,
    LPSOCKADDR    Address,
    LPDWORD       AddressLength,
	CRITICAL_SECTION	*pDllCS);

typedef DWORD (VXDAPI *ASF_Bind)(
    LPSOCK_INFO   Socket,
    LPSOCKADDR    Address,
    DWORD         AddressLength,
	CRITICAL_SECTION	*pDllCS);

typedef DWORD (VXDAPI *ASF_Connect)(
    LPSOCK_INFO   Socket,
    LPSOCKADDR    Address,
    DWORD         AddressLength,
	CRITICAL_SECTION	*pDllCS);

typedef DWORD (VXDAPI *ASF_Ioctl)(
    LPSOCK_INFO Socket,
    DWORD       Command,
    LPDWORD     Param,
	CRITICAL_SECTION	*pDllCS);

typedef DWORD (VXDAPI *ASF_Listen)(
	LPSOCK_INFO			Socket,
	DWORD				Backlog,
	CRITICAL_SECTION	*pDllCS);

typedef DWORD (VXDAPI * ASF_Recv)(
    LPSOCK_INFO   Socket,
    LPBYTE        Buffer,
    DWORD         BufferLength,
    DWORD         Flags,
    LPSOCKADDR    Address,
    LPDWORD       AddressLength,
    LPDWORD       BytesReceived,
	CRITICAL_SECTION	*pDllCS);

typedef DWORD (VXDAPI *ASF_Send)(
    LPSOCK_INFO   Socket,
    LPBYTE        Buffer,
    DWORD         BufferLength,
    DWORD         Flags,
    LPSOCKADDR    Address,
    DWORD         AddressLength,
    LPDWORD       BytesSent,
	CRITICAL_SECTION	*pDllCS);

typedef DWORD (VXDAPI *ASF_Shutdown)(
    LPSOCK_INFO Socket,
    DWORD       How,
	CRITICAL_SECTION	*pDllCS);

typedef DWORD (*ASF_Getsockname)(
			   LPSOCK_INFO	Socket,
			   LPSOCKADDR	Address,
			   LPDWORD		pAddressLength,
				CRITICAL_SECTION	*pDllCS);

typedef DWORD (*ASF_Getpeername)(
			   LPSOCK_INFO	Socket,
			   LPSOCKADDR	Address,
			   LPDWORD		pAddressLength,
			   CRITICAL_SECTION	*pDllCS);

typedef DWORD (VXDAPI *ASF_GetOption)(
    LPSOCK_INFO Socket,
    DWORD       Level,
    DWORD       OptionName,
    LPVOID      Buffer,
    LPDWORD     BufferLength,
	CRITICAL_SECTION	*pDllCS);

typedef DWORD (VXDAPI *ASF_SetOption)(
    LPSOCK_INFO Socket,
    DWORD       Level,
    DWORD       OptionName,
    LPVOID      Buffer,
    DWORD       BufferLength,
	CRITICAL_SECTION	*pDllCS);

typedef DWORD (VXDAPI *ASF_Wakeup)(
    LPSOCK_INFO   Socket,
    DWORD         Event,
    DWORD         Status,
	CRITICAL_SECTION	*pDllCS);


//	AFI: Afd Function Index - Helper Dll index
#define AFI_Socket			2
#define AFI_Control			3
#define AFI_EnumProtocolsW	4
#define AFI_GetHostenByAddr	7
#define AFI_AddIPHostent	8
#define AFI_Select			10
#define AFI_AddResolver		19
#define AFI_AddInterface	19


#define CallAfd(FnName)		(*((AFN_##FnName) (v_apAfdFns[AFI_##FnName]))) 

//	ASI: Afd Socket Index - Helper Dll index

#define ASI_Close			0
#define ASI_Wait			1
#define ASI_Accept			2
#define ASI_Bind			3
#define ASI_Connect			4
#define ASI_Ioctl			5
#define ASI_Listen			6
#define ASI_Recv			7
#define ASI_Send			8
#define ASI_Shutdown		9
#define ASI_Getsockname		10
#define ASI_Getpeername		11
#define ASI_GetOption		12
#define ASI_SetOption		13
#define ASI_Wakeup			14


#define CallSock(FnName) (*((ASF_##FnName)(v_apSocketFns[ASI_##FnName])))

// AFDAddInterface Flags
#define ADD_INTF_DELETE_FL		0x0001

#endif	/*	_HELPER_H_	*/


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -