type.h

来自「wince下的源代码集合打包」· C头文件 代码 · 共 313 行

H
313
字号
/**********************************************************************//**                        Microsoft Windows                         **//**Copyright (c) 1994-2000 Microsoft Corporation.  All rights reserved.**//**********************************************************************//*    type.h    This file contains global type definitons for WINSOCK.DLL and    WSOCK32.DLL.*/#ifndef _TYPE_H_#define _TYPE_H_#include "ipexport.h"#if !defined(WIN32)////  Various types conspicuously absent from 16-bit windows.h.//#define CHAR        char#define INT         int#endif  // !WIN32////  Make things a little more consistent.//typedef struct netent NETENT;typedef struct netent FAR * LPNETENT;////  Per-thread info: We allocate a thread local storage index.  The data//  stored at this index is a pointer to one of these.//#pragma pack(4)typedef struct _SOCK_THREAD {    CHAR            st_ntoa_buffer[20];    //    // database-specific (hosts, protocol, services, networks) fields    //    //    // per-thread hostent data areas:    //    //      GETHOST_host    //          hostent structure returned from gethostbyY calls. String fields    //          point into GETHOST_HOSTDB    //    //      GETHOST_HOSTDB    //          contains the line from the hosts file containing the requested    //          host entry    //#define MAXALIASES		15		// We only support 5 aliases#define AVG_HOST_LEN	40		// To calculate buff space#define MAXADDRS		15		// Max of 5 IP addrs    HOSTENT GETHOST_host;	// The array of host alias names    LPSTR GETHOST_host_aliases[MAXALIASES+1];	// Some buffer space for host name and alias names	char GETHOST_hostbuf[(MAXALIASES+1)*AVG_HOST_LEN];	// The array of addresses    LPSTR GETHOST_h_addr_ptrs[MAXADDRS + 1];	// Some space for the addresses    unsigned char GETHOST_hostaddr[MAXADDRS*sizeof(IPAddr)];    //    // per-thread protoent data areas:    //    //      GETPROTO_proto    //          the protoent structure returned from getprotobyY calls.    //          String fields in the protoent point into GETPROTO_PROTODB    //    //      GETPROTO_proto_aliases    //          array of pointers to protocol aliases. The aliases are in    //          GETPROTO_PROTODB    //    //      GETPROTO_PROTODB    //          contains the line from the protocol file containing the    //          requested protocol entry    ////    PROTOENT GETPROTO_proto;//    LPSTR GETPROTO_proto_aliases[MAXALIASES];//    char GETPROTO_PROTODB[PROTODB_SIZE];    //    // per-thread servent data areas:    //    //      GETSERV_serv    //          servent structure returned from getservbyY calls. String fields    //          point into GETSERV_SERVDB    //    //      GETSERV_serv_aliases    //          array of pointers to service aliases. The aliases are in    //          GETSERV_SERVDB    //    //      GETSERV_SERVDB    //          contains the line read from services file that contains the    //          requested service entry    ////    SERVENT GETSERV_serv;//    LPSTR GETSERV_serv_aliases[MAXALIASES];//    char GETSERV_SERVDB[SERVDB_SIZE];    //    // per-thread netent data areas:    //    //      GETNET_net    //          netent structure returned from getnetbyY calls. String fields    //          point into GETNET_NETDB    //    //      GETNET_net_aliases    //          array of pointers to net aliases. The aliases are in    //          GETNET_NETDB    //    //      GETNET_NETDB    //          contains the line read from networks file that contains the    //          requested net entry    ////    NETENT GETNET_net;//    LPSTR GETNET_net_aliases[MAXALIASES];//    char GETNET_NETDB[NETDB_SIZE];    //    // per-thread resolver data areas:    ////    struct state R_INIT__res;//    char INTOA_Buffer[18];//    SOCKET DnrSocketHandle;//    BOOLEAN IsBlocking;//    BOOLEAN IoCancelled;//    BOOLEAN ProcessingGetXByY;//    BOOLEAN GetXByYCancelled;//    BOOLEAN EnableWinsNameResolution;//    BOOLEAN DisableWinsNameResolution;//    SOCKET SocketHandle;//    HANDLE EventHandle;//    ULONG CreateOptions;//    INT DnrErrorCode;} SOCK_THREAD;#pragma pack()typedef struct _SOCK_THREAD FAR * LPSOCK_THREAD;////  Per-process info.//typedef struct _SOCK_PROCESS {    LONG            NumStartups;        // Number of times WSAStartup called.#if !defined(WIN32)    SOCK_THREAD     ThreadInfo;         // Under Win16, one thread per process.    HTASK           OwningTask;         // Task ID.    LIST_ENTRY      TaskList;           // Links into task list.#endif  // !WIN32} SOCK_PROCESS;typedef struct _SOCK_PROCESS FAR * LPSOCK_PROCESS;////  Miscellaneous types.//typedef ULONG FAR * LPULONG;typedef INT   FAR * LPINT;typedef UINT  FAR * LPUINT;//// manifests for database names//#define DB_HOSTS    "hosts"#define DB_PROTOCOL "protocol"#define DB_SERVICES "services"#define DB_NETWORKS "networks"#define MAX_DB_FILE DB_SERVICES#define MAX_DB_FILE_NAME_LENGTH (sizeof(MAX_DB_FILE) - 1)//// per-thread data items: use these macros to access individual per-thread// variables.//// ASSUMES enterAPI has been called and that we have a valid pointer to the// per-thread data structure in a pointer variable called pThread//// A reasonable assumption methinks//#define SockThreadIoCancelled           pThread->IoCancelled#define SockThreadProcessingGetXByY     pThread->ProcessingGetXByY#define SockThreadGetXByYCancelled      pThread->GetXByYCancelled#define SockDnrSocket                   pThread->DnrSocketHandle#define SockEnableWinsNameResolution    pThread->EnableWinsNameResolution#define SockDisableWinsNameResolution   pThread->DisableWinsNameResolution#define SockThreadDnrErrorCode          pThread->DnrErrorCode//// generic per-thread variable access method//// ASSUMES pThread is a valid pointer to the current thread's SOCK_THREAD// structure//#define ACCESS_THREAD_DATA(field, struct)   (pThread->## struct ## _ ## field)#define _res ACCESS_THREAD_DATA( _res, R_INIT )#ifdef UNDER_CE#define GET_THREAD_DATA(p)#else#define GET_THREAD_DATA(p)  p = OsGetThreadInfo()#endif//// _WINSOCK_CONTEXT_BLOCK - used in async calls (only gethostby...)//typedef struct _WINSOCK_CONTEXT_BLOCK {    LIST_ENTRY AsyncThreadQueueListEntry;    HANDLE TaskHandle;    UINT OpCode;    union {        struct {            HWND hWnd;            unsigned int wMsg;            LPCHAR Filter;            int Length;            int Type;            LPCHAR Buffer;            int BufferLength;        } AsyncGetHost;    } Overlay;} WINSOCK_CONTEXT_BLOCK, FAR * PWINSOCK_CONTEXT_BLOCK;//// prototypes using WINSOCK_CONTEXT_BLOCK//PWINSOCK_CONTEXT_BLOCKSockAllocateContextBlock (    VOID    );VOIDSockFreeContextBlock (    IN PWINSOCK_CONTEXT_BLOCK ContextBlock    );VOIDSockQueueRequestToAsyncThread(    IN PWINSOCK_CONTEXT_BLOCK ContextBlock    );//// Opcodes for processing by the winsock asynchronous processing// thread.//#define WS_OPCODE_GET_HOST_BY_ADDR    0x01#define WS_OPCODE_GET_HOST_BY_NAME    0x02#define WS_OPCODE_TERMINATE           0x10#define ALLOCATE_HEAP DllAllocMem#define FREE_HEAP DllFreeMem//// Manifests for SockWaitForSingleObject().//#define SOCK_ALWAYS_CALL_BLOCKING_HOOK        1#define SOCK_CONDITIONALLY_CALL_BLOCKING_HOOK 2#define SOCK_NEVER_CALL_BLOCKING_HOOK         3#define SOCK_NO_TIMEOUT      4#define SOCK_SEND_TIMEOUT    5#define SOCK_RECEIVE_TIMEOUT 6#endif  // _TYPE_H_

⌨️ 快捷键说明

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