mirror of
https://github.com/solemnwarning/ipxwrapper
synced 2024-12-30 16:45:37 +01:00
Rewrote stub generation code to create ASM code, no more unimplemented functions due to missing declarations!
This commit is contained in:
parent
62c8078ad5
commit
75c0f30518
26
Makefile
26
Makefile
@ -24,7 +24,7 @@ all: ipxwrapper.dll wsock32.dll mswsock.dll
|
||||
|
||||
clean:
|
||||
rm -f src/*.o
|
||||
rm -f src/*_stubs.c
|
||||
rm -f src/*_stubs.s
|
||||
|
||||
ipxwrapper.dll: $(IPXWRAPPER_DEPS)
|
||||
$(CC) $(CFLAGS) -Wl,--enable-stdcall-fixup -shared -o ipxwrapper.dll $(IPXWRAPPER_DEPS) -liphlpapi
|
||||
@ -41,23 +41,23 @@ src/ipxwrapper.o: src/ipxwrapper.c src/ipxwrapper.h
|
||||
src/winsock.o: src/winsock.c src/ipxwrapper.h
|
||||
$(CC) $(CFLAGS) -c -o src/winsock.o src/winsock.c
|
||||
|
||||
src/ipxwrapper_stubs.o: src/ipxwrapper_stubs.c
|
||||
$(CC) $(CFLAGS) -c -o src/ipxwrapper_stubs.o src/ipxwrapper_stubs.c
|
||||
src/ipxwrapper_stubs.o: src/ipxwrapper_stubs.s
|
||||
nasm -f win32 -o src/ipxwrapper_stubs.o src/ipxwrapper_stubs.s
|
||||
|
||||
src/ipxwrapper_stubs.c: src/ipxwrapper_stubs.txt
|
||||
perl mkstubs.pl src/ipxwrapper_stubs.txt src/ipxwrapper_stubs.c
|
||||
src/ipxwrapper_stubs.s: src/ipxwrapper_stubs.txt
|
||||
perl mkstubs.pl src/ipxwrapper_stubs.txt src/ipxwrapper_stubs.s
|
||||
|
||||
src/stubdll.o: src/stubdll.c
|
||||
$(CC) $(CFLAGS) -c -o src/stubdll.o src/stubdll.c
|
||||
|
||||
src/wsock32_stubs.o: src/wsock32_stubs.c
|
||||
$(CC) $(CFLAGS) -c -o src/wsock32_stubs.o src/wsock32_stubs.c
|
||||
src/wsock32_stubs.o: src/wsock32_stubs.s
|
||||
nasm -f win32 -o src/wsock32_stubs.o src/wsock32_stubs.s
|
||||
|
||||
src/wsock32_stubs.c: src/wsock32_stubs.txt
|
||||
perl mkstubs.pl src/wsock32_stubs.txt src/wsock32_stubs.c wsock32.dll
|
||||
src/wsock32_stubs.s: src/wsock32_stubs.txt
|
||||
perl mkstubs.pl src/wsock32_stubs.txt src/wsock32_stubs.s wsock32.dll
|
||||
|
||||
src/mswsock_stubs.o: src/mswsock_stubs.c
|
||||
$(CC) $(CFLAGS) -c -o src/mswsock_stubs.o src/mswsock_stubs.c
|
||||
src/mswsock_stubs.o: src/mswsock_stubs.s
|
||||
nasm -f win32 -o src/mswsock_stubs.o src/mswsock_stubs.s
|
||||
|
||||
src/mswsock_stubs.c: src/mswsock_stubs.txt
|
||||
perl mkstubs.pl src/mswsock_stubs.txt src/mswsock_stubs.c mswsock.dll
|
||||
src/mswsock_stubs.s: src/mswsock_stubs.txt
|
||||
perl mkstubs.pl src/mswsock_stubs.txt src/mswsock_stubs.s mswsock.dll
|
||||
|
118
mkstubs.pl
118
mkstubs.pl
@ -14,95 +14,61 @@
|
||||
# this program; if not, write to the Free Software Foundation, Inc., 51
|
||||
# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
if(@ARGV != 2 && @ARGV != 3) {
|
||||
print STDERR "Usage: mkdll.pl <input header> <output code> [<dll name>]\n";
|
||||
print STDERR "Usage: mkdll.pl <function list> <output code> [<dll name>]\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
open(STUBS, "<".$ARGV[0]) or die("Cannot open ".$ARGV[0].": $!");
|
||||
open(CODE, ">".$ARGV[1]) or die("Cannot open ".$ARGV[1].": $!");
|
||||
|
||||
print CODE <<EOF;
|
||||
#include <windows.h>
|
||||
#include <winsock2.h>
|
||||
#include <mswsock.h>
|
||||
#include <nspapi.h>
|
||||
#include <ws2spi.h>
|
||||
|
||||
void *find_sym(char const *symbol);
|
||||
EOF
|
||||
|
||||
if(@ARGV == 3) {
|
||||
print CODE "char const *dllname = \"".$ARGV[2]."\";\n";
|
||||
}
|
||||
my @stubs = ();
|
||||
|
||||
foreach my $line(<STUBS>) {
|
||||
$line =~ s/[\r\n;]//g;
|
||||
$line =~ s/\/\*.*\*\///g;
|
||||
$line =~ s/[\r\n]//g;
|
||||
|
||||
if($line eq "") {
|
||||
next;
|
||||
if($line ne "") {
|
||||
push @stubs, $line;
|
||||
}
|
||||
}
|
||||
|
||||
if(@ARGV == 3) {
|
||||
print CODE "section .rdata:\n";
|
||||
print CODE "\tglobal\t_dllname\n";
|
||||
print CODE "\tdllname_s:\tdb\t'wsock32.dll'\n";
|
||||
print CODE "\t_dllname:\tdd\tdllname_s\n\n";
|
||||
}
|
||||
|
||||
print CODE "section .data\n";
|
||||
|
||||
for($n = 0; $n < @stubs; $n++) {
|
||||
my $func = $stubs[$n];
|
||||
$func =~ s/^r_//;
|
||||
|
||||
my $type = "";
|
||||
my $func = "";
|
||||
my $args = "";
|
||||
|
||||
foreach my $word(split(/ /, $line)) {
|
||||
if($word =~ /\w+\(/) {
|
||||
if($func ne "") {
|
||||
$type .= " $func($args";
|
||||
}
|
||||
|
||||
($func, $args) = split(/\(/, $word, 2);
|
||||
next;
|
||||
}
|
||||
|
||||
if($args ne "") {
|
||||
$args .= " $word";
|
||||
}else{
|
||||
if($type ne "") {
|
||||
$type .= " ";
|
||||
}
|
||||
|
||||
$type .= $word;
|
||||
}
|
||||
}
|
||||
|
||||
$args =~ s/\)$//;
|
||||
|
||||
my $argdefs = "void";
|
||||
my $argnames = "";
|
||||
my $count = 0;
|
||||
|
||||
if($args ne "void") {
|
||||
foreach my $arg(split(/,/, $args)) {
|
||||
if($count == 0) {
|
||||
$argdefs = "$arg arg$count";
|
||||
$argnames = "arg$count";
|
||||
}else{
|
||||
$argdefs .= ", $arg arg$count";
|
||||
$argnames .= ", arg$count";
|
||||
}
|
||||
|
||||
$count++;
|
||||
}
|
||||
}
|
||||
|
||||
my $symbol = $func;
|
||||
$symbol =~ s/^r_//;
|
||||
|
||||
print CODE "\n$type $func($argdefs) {\n";
|
||||
print CODE "\tstatic $type (*real_$func)($args) = NULL;\n";
|
||||
print CODE "\tif(!real_$func) {\n";
|
||||
print CODE "\t\treal_$func = find_sym(\"$symbol\");\n";
|
||||
print CODE "\t}\n";
|
||||
print CODE "\treturn real_$func($argnames);\n";
|
||||
print CODE "}\n";
|
||||
print CODE "\tname$n:\tdb\t'$func'\n";
|
||||
print CODE "\taddr$n:\tdd\t0\n";
|
||||
}
|
||||
|
||||
print CODE "\nsection .text\n";
|
||||
print CODE "\textern\t_find_sym\n";
|
||||
|
||||
for($n = 0; $n < @stubs; $n++) {
|
||||
my $func = $stubs[$n];
|
||||
print CODE "\tglobal\t_$func\n";
|
||||
}
|
||||
|
||||
for($n = 0; $n < @stubs; $n++) {
|
||||
my $func = $stubs[$n];
|
||||
|
||||
print CODE "\n_$func:\n";
|
||||
print CODE "\tcmp\tdword [addr$n], 0\n";
|
||||
print CODE "\tjne\tjmp$n\n\n";
|
||||
|
||||
print CODE "\tpush\tname$n\n";
|
||||
print CODE "\tcall\t_find_sym\n";
|
||||
print CODE "\tmov\t[addr$n], eax\n";
|
||||
print CODE "jmp$n:\n";
|
||||
print CODE "\tjmp\t[addr$n]\n";
|
||||
}
|
||||
|
||||
close(CODE);
|
||||
|
@ -26,7 +26,6 @@
|
||||
#include <stdint.h>
|
||||
|
||||
#include "ipxwrapper.h"
|
||||
#include "ipxwrapper_stubs.txt"
|
||||
|
||||
#define DLL_UNLOAD(dll) \
|
||||
if(dll) {\
|
||||
@ -144,7 +143,7 @@ BOOL WINAPI DllMain(HINSTANCE me, DWORD why, LPVOID res) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void *find_sym(char const *symbol) {
|
||||
void __stdcall *find_sym(char const *symbol) {
|
||||
void *addr = GetProcAddress(winsock2_dll, symbol);
|
||||
|
||||
if(!addr) {
|
||||
|
@ -147,7 +147,7 @@ extern HMODULE winsock2_dll;
|
||||
extern HMODULE mswsock_dll;
|
||||
extern HMODULE wsock32_dll;
|
||||
|
||||
void *find_sym(char const *sym);
|
||||
void __stdcall *find_sym(char const *sym);
|
||||
void debug(char const *fmt, ...);
|
||||
ipx_socket *get_socket(SOCKET fd);
|
||||
void lock_mutex(void);
|
||||
@ -156,4 +156,18 @@ IP_ADAPTER_INFO *get_nics(void);
|
||||
char const *w32_error(DWORD errnum);
|
||||
ipx_host *find_host(unsigned char *hwaddr);
|
||||
|
||||
INT APIENTRY r_EnumProtocolsA(LPINT,LPVOID,LPDWORD);
|
||||
INT APIENTRY r_EnumProtocolsW(LPINT,LPVOID,LPDWORD);
|
||||
int PASCAL FAR r_WSARecvEx(SOCKET,char*,int,int*);
|
||||
int WSAAPI r_bind(SOCKET,const struct sockaddr*,int);
|
||||
int WSAAPI r_closesocket(SOCKET);
|
||||
int WSAAPI r_getsockname(SOCKET,struct sockaddr*,int*);
|
||||
int WSAAPI r_getsockopt(SOCKET,int,int,char*,int*);
|
||||
int WSAAPI r_recv(SOCKET,char*,int,int);
|
||||
int WSAAPI r_recvfrom(SOCKET,char*,int,int,struct sockaddr*,int*);
|
||||
int WSAAPI r_sendto(SOCKET,const char*,int,int,const struct sockaddr*,int);
|
||||
int WSAAPI r_setsockopt(SOCKET,int,int,const char*,int);
|
||||
int WSAAPI r_shutdown(SOCKET,int);
|
||||
SOCKET WSAAPI r_socket(int,int,int);
|
||||
|
||||
#endif /* !IPXWRAPPER_H */
|
||||
|
@ -1,27 +1,22 @@
|
||||
/* Stub functions will be generated for all functions declared here */
|
||||
|
||||
/* Declarations from MinGW headers */
|
||||
unsigned long PASCAL inet_addr(const char*);
|
||||
int PASCAL WSAStartup(WORD,LPWSADATA);
|
||||
int PASCAL WSACleanup(void);
|
||||
void PASCAL WSASetLastError(int);
|
||||
int PASCAL WSAGetLastError(void);
|
||||
u_long PASCAL htonl(u_long);
|
||||
u_long PASCAL ntohl(u_long);
|
||||
u_short PASCAL htons(u_short);
|
||||
u_short PASCAL ntohs(u_short);
|
||||
|
||||
/* Declarations from the win32 SDK and MSDN */
|
||||
INT APIENTRY r_EnumProtocolsA(LPINT,LPVOID,LPDWORD);
|
||||
INT APIENTRY r_EnumProtocolsW(LPINT,LPVOID,LPDWORD);
|
||||
int PASCAL FAR r_WSARecvEx(SOCKET,char*,int,int*);
|
||||
int WSAAPI r_bind(SOCKET,const struct sockaddr*,int);
|
||||
int WSAAPI r_closesocket(SOCKET);
|
||||
int WSAAPI r_getsockname(SOCKET,struct sockaddr*,int*);
|
||||
int WSAAPI r_getsockopt(SOCKET,int,int,char*,int*);
|
||||
int WSAAPI r_recv(SOCKET,char*,int,int);
|
||||
int WSAAPI r_recvfrom(SOCKET,char*,int,int,struct sockaddr*,int*);
|
||||
int WSAAPI r_sendto(SOCKET,const char*,int,int,const struct sockaddr*,int);
|
||||
int WSAAPI r_setsockopt(SOCKET,int,int,const char*,int);
|
||||
int WSAAPI r_shutdown(SOCKET,int);
|
||||
SOCKET WSAAPI r_socket(int,int,int);
|
||||
inet_addr
|
||||
WSAStartup
|
||||
WSACleanup
|
||||
WSASetLastError
|
||||
WSAGetLastError
|
||||
htonl
|
||||
ntohl
|
||||
htons
|
||||
ntohs
|
||||
r_EnumProtocolsA
|
||||
r_EnumProtocolsW
|
||||
r_WSARecvEx
|
||||
r_bind
|
||||
r_closesocket
|
||||
r_getsockname
|
||||
r_getsockopt
|
||||
r_recv
|
||||
r_recvfrom
|
||||
r_sendto
|
||||
r_setsockopt
|
||||
r_shutdown
|
||||
r_socket
|
||||
|
@ -1,24 +1,32 @@
|
||||
/* Stub functions will be generated for all functions declared here */
|
||||
|
||||
/* Declarations from MinGW headers */
|
||||
BOOL PASCAL AcceptEx(SOCKET,SOCKET,PVOID,DWORD,DWORD,DWORD,LPDWORD,LPOVERLAPPED);
|
||||
VOID PASCAL GetAcceptExSockaddrs(PVOID,DWORD,DWORD,DWORD,struct sockaddr**, LPINT, struct sockaddr**, LPINT);
|
||||
INT WINAPI GetAddressByNameA(DWORD,LPGUID,LPSTR,LPINT,DWORD,LPSERVICE_ASYNC_INFO,LPVOID,LPDWORD,LPSTR,LPDWORD);
|
||||
INT WINAPI GetAddressByNameW(DWORD,LPGUID,LPWSTR,LPINT,DWORD,LPSERVICE_ASYNC_INFO,LPVOID,LPDWORD,LPWSTR,LPDWORD);
|
||||
INT WINAPI SetServiceA(DWORD,DWORD,DWORD,LPSERVICE_INFOA,LPSERVICE_ASYNC_INFO,LPDWORD);
|
||||
INT WINAPI SetServiceW(DWORD,DWORD,DWORD,LPSERVICE_INFOW,LPSERVICE_ASYNC_INFO,LPDWORD);
|
||||
BOOL PASCAL TransmitFile(SOCKET,HANDLE,DWORD,DWORD,LPOVERLAPPED,LPTRANSMIT_FILE_BUFFERS,DWORD);
|
||||
|
||||
/* Declarations from the win32 SDK and MSDN */
|
||||
INT WSAAPI NSPStartup(LPGUID,LPNSP_ROUTINE);
|
||||
INT APIENTRY GetNameByTypeA(IN LPGUID,IN OUT LPSTR,IN DWORD);
|
||||
INT APIENTRY GetNameByTypeW(IN LPGUID,IN OUT LPWSTR,IN DWORD);
|
||||
INT APIENTRY GetServiceA(DWORD, LPGUID, LPSTR,DWORD,LPVOID,LPDWORD,LPSERVICE_ASYNC_INFO);
|
||||
INT APIENTRY GetServiceW(DWORD, LPGUID, LPWSTR,DWORD,LPVOID,LPDWORD,LPSERVICE_ASYNC_INFO);
|
||||
INT APIENTRY GetTypeByNameA(LPSTR,LPGUID);
|
||||
INT APIENTRY GetTypeByNameW(LPWSTR,LPGUID);
|
||||
int WSPAPI WSPStartup(WORD,LPWSPDATA,LPWSAPROTOCOL_INFOW,WSPUPCALLTABLE,LPWSPPROC_TABLE);
|
||||
int APIENTRY sethostname(char*,int);
|
||||
INT APIENTRY EnumProtocolsA(LPINT,LPVOID,LPDWORD);
|
||||
INT APIENTRY EnumProtocolsW(LPINT,LPVOID,LPDWORD);
|
||||
int PASCAL FAR WSARecvEx(SOCKET,char*,int,int*);
|
||||
ServiceMain
|
||||
SvchostPushServiceGlobals
|
||||
AcceptEx
|
||||
EnumProtocolsA
|
||||
EnumProtocolsW
|
||||
GetAcceptExSockaddrs
|
||||
GetAddressByNameA
|
||||
GetAddressByNameW
|
||||
GetNameByTypeA
|
||||
GetNameByTypeW
|
||||
GetServiceA
|
||||
GetServiceW
|
||||
GetTypeByNameA
|
||||
GetTypeByNameW
|
||||
MigrateWinsockConfiguration
|
||||
NPLoadNameSpaces
|
||||
NSPStartup
|
||||
SetServiceA
|
||||
SetServiceW
|
||||
StartWsdpService
|
||||
StopWsdpService
|
||||
TransmitFile
|
||||
WSARecvEx
|
||||
WSPStartup
|
||||
dn_expand
|
||||
getnetbyname
|
||||
inet_network
|
||||
rcmd
|
||||
rexec
|
||||
rresvport
|
||||
s_perror
|
||||
sethostname
|
||||
|
@ -23,7 +23,7 @@ static HMODULE ipxdll = NULL;
|
||||
static HMODULE sysdll = NULL;
|
||||
extern char const *dllname;
|
||||
|
||||
void *find_sym(char const *symbol);
|
||||
void __stdcall *find_sym(char const *symbol);
|
||||
void debug(char const *fmt, ...);
|
||||
|
||||
BOOL WINAPI DllMain(HINSTANCE me, DWORD why, LPVOID res) {
|
||||
@ -58,7 +58,7 @@ BOOL WINAPI DllMain(HINSTANCE me, DWORD why, LPVOID res) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void *find_sym(char const *symbol) {
|
||||
void __stdcall *find_sym(char const *symbol) {
|
||||
void *ptr = NULL;
|
||||
|
||||
if(!ptr) {
|
||||
|
@ -24,7 +24,6 @@
|
||||
#include "winstuff.h"
|
||||
|
||||
#include "ipxwrapper.h"
|
||||
#include "ipxwrapper_stubs.txt"
|
||||
|
||||
INT APIENTRY EnumProtocolsA(LPINT protocols, LPVOID buf, LPDWORD bsptr) {
|
||||
int bufsize = *bsptr, rval, i, want_ipx = 0;
|
||||
|
@ -1,119 +1,75 @@
|
||||
/* Stub functions will be generated for all functions declared here */
|
||||
|
||||
/* Declarations from MinGW headers */
|
||||
int PASCAL __WSAFDIsSet(SOCKET,fd_set*);
|
||||
SOCKET PASCAL accept(SOCKET,struct sockaddr*,int*);
|
||||
int PASCAL connect(SOCKET,const struct sockaddr*,int);
|
||||
int PASCAL ioctlsocket(SOCKET,long,u_long *);
|
||||
int PASCAL getpeername(SOCKET,struct sockaddr*,int*);
|
||||
unsigned long PASCAL inet_addr(const char*);
|
||||
DECLARE_STDCALL_P(char *) inet_ntoa(struct in_addr);
|
||||
int PASCAL listen(SOCKET,int);
|
||||
int PASCAL send(SOCKET,const char*,int,int);
|
||||
DECLARE_STDCALL_P(struct hostent *) gethostbyaddr(const char*,int,int);
|
||||
DECLARE_STDCALL_P(struct hostent *) gethostbyname(const char*);
|
||||
DECLARE_STDCALL_P(struct servent *) getservbyport(int,const char*);
|
||||
DECLARE_STDCALL_P(struct servent *) getservbyname(const char*,const char*);
|
||||
DECLARE_STDCALL_P(struct protoent *) getprotobynumber(int);
|
||||
DECLARE_STDCALL_P(struct protoent *) getprotobyname(const char*);
|
||||
int PASCAL WSAStartup(WORD,LPWSADATA);
|
||||
int PASCAL WSACleanup(void);
|
||||
void PASCAL WSASetLastError(int);
|
||||
int PASCAL WSAGetLastError(void);
|
||||
BOOL PASCAL WSAIsBlocking(void);
|
||||
int PASCAL WSAUnhookBlockingHook(void);
|
||||
FARPROC PASCAL WSASetBlockingHook(FARPROC);
|
||||
int PASCAL WSACancelBlockingCall(void);
|
||||
HANDLE PASCAL WSAAsyncGetServByName(HWND,u_int,const char*,const char*,char*,int);
|
||||
HANDLE PASCAL WSAAsyncGetServByPort(HWND,u_int,int,const char*,char*,int);
|
||||
HANDLE PASCAL WSAAsyncGetProtoByName(HWND,u_int,const char*,char*,int);
|
||||
HANDLE PASCAL WSAAsyncGetProtoByNumber(HWND,u_int,int,char*,int);
|
||||
HANDLE PASCAL WSAAsyncGetHostByName(HWND,u_int,const char*,char*,int);
|
||||
HANDLE PASCAL WSAAsyncGetHostByAddr(HWND,u_int,const char*,int,int,char*,int);
|
||||
int PASCAL WSACancelAsyncRequest(HANDLE);
|
||||
int PASCAL WSAAsyncSelect(SOCKET,HWND,u_int,long);
|
||||
u_long PASCAL htonl(u_long);
|
||||
u_long PASCAL ntohl(u_long);
|
||||
u_short PASCAL htons(u_short);
|
||||
u_short PASCAL ntohs(u_short);
|
||||
int PASCAL select(int,fd_set*,fd_set*,fd_set*,const struct timeval*);
|
||||
int PASCAL gethostname(char*,int);
|
||||
SOCKET WINAPI WSAAccept(SOCKET, struct sockaddr *, LPINT, LPCONDITIONPROC, DWORD);
|
||||
INT WINAPI WSAAddressToStringA(LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOA, LPSTR, LPDWORD);
|
||||
INT WINAPI WSAAddressToStringW(LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFOW, LPWSTR, LPDWORD);
|
||||
BOOL WINAPI WSACloseEvent(WSAEVENT);
|
||||
int WINAPI WSAConnect(SOCKET, const struct sockaddr *, int, LPWSABUF, LPWSABUF, LPQOS, LPQOS);
|
||||
WSAEVENT WINAPI WSACreateEvent(void);
|
||||
int WINAPI WSADuplicateSocketA(SOCKET, DWORD, LPWSAPROTOCOL_INFOA);
|
||||
int WINAPI WSADuplicateSocketW(SOCKET, DWORD, LPWSAPROTOCOL_INFOW);
|
||||
INT WINAPI WSAEnumNameSpaceProvidersA(LPDWORD, LPWSANAMESPACE_INFOA);
|
||||
INT WINAPI WSAEnumNameSpaceProvidersW(LPDWORD, LPWSANAMESPACE_INFOW);
|
||||
int WINAPI WSAEnumNetworkEvents(SOCKET, WSAEVENT, LPWSANETWORKEVENTS);
|
||||
int WINAPI WSAEnumProtocolsA(LPINT, LPWSAPROTOCOL_INFOA, LPDWORD);
|
||||
int WINAPI WSAEnumProtocolsW(LPINT, LPWSAPROTOCOL_INFOW, LPDWORD);
|
||||
int WINAPI WSAEventSelect(SOCKET, WSAEVENT, long);
|
||||
BOOL WINAPI WSAGetOverlappedResult(SOCKET, LPWSAOVERLAPPED, LPDWORD, BOOL, LPDWORD);
|
||||
BOOL WINAPI WSAGetQOSByName(SOCKET, LPWSABUF, LPQOS);
|
||||
INT WINAPI WSAGetServiceClassInfoA(LPGUID, LPGUID, LPDWORD, LPWSASERVICECLASSINFOA);
|
||||
INT WINAPI WSAGetServiceClassInfoW(LPGUID, LPGUID, LPDWORD, LPWSASERVICECLASSINFOW);
|
||||
INT WINAPI WSAGetServiceClassNameByClassIdA(LPGUID, LPSTR, LPDWORD);
|
||||
INT WINAPI WSAGetServiceClassNameByClassIdW(LPGUID, LPWSTR, LPDWORD);
|
||||
int WINAPI WSAHtonl(SOCKET, unsigned long, unsigned long *);
|
||||
int WINAPI WSAHtons(SOCKET, unsigned short, unsigned short *);
|
||||
INT WINAPI WSAInstallServiceClassA(LPWSASERVICECLASSINFOA);
|
||||
INT WINAPI WSAInstallServiceClassW(LPWSASERVICECLASSINFOW);
|
||||
int WINAPI WSAIoctl(SOCKET, DWORD, LPVOID, DWORD, LPVOID, DWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
|
||||
SOCKET WINAPI WSAJoinLeaf(SOCKET, const struct sockaddr *, int, LPWSABUF, LPWSABUF, LPQOS, LPQOS, DWORD);
|
||||
INT WINAPI WSALookupServiceBeginA(LPWSAQUERYSETA, DWORD, LPHANDLE);
|
||||
INT WINAPI WSALookupServiceBeginW(LPWSAQUERYSETW, DWORD, LPHANDLE);
|
||||
INT WINAPI WSALookupServiceNextA(HANDLE, DWORD, LPDWORD, LPWSAQUERYSETA);
|
||||
INT WINAPI WSALookupServiceNextW(HANDLE, DWORD, LPDWORD, LPWSAQUERYSETW);
|
||||
INT WINAPI WSALookupServiceEnd(HANDLE);
|
||||
int WINAPI WSANSPIoctl(HANDLE,DWORD,LPVOID,DWORD,LPVOID,DWORD,LPDWORD,LPWSACOMPLETION); /* XP or .NET Server */
|
||||
int WINAPI WSANtohl(SOCKET, unsigned long, unsigned long *);
|
||||
int WINAPI WSANtohs(SOCKET, unsigned short, unsigned short *);
|
||||
int WINAPI WSARecv(SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
|
||||
int WINAPI WSARecvDisconnect(SOCKET, LPWSABUF);
|
||||
int WINAPI WSARecvFrom(SOCKET, LPWSABUF, DWORD, LPDWORD, LPDWORD, struct sockaddr *, LPINT, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
|
||||
INT WINAPI WSARemoveServiceClass(LPGUID);
|
||||
BOOL WINAPI WSAResetEvent(WSAEVENT);
|
||||
int WINAPI WSASend(SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
|
||||
int WINAPI WSASendDisconnect(SOCKET, LPWSABUF);
|
||||
int WINAPI WSASendTo(SOCKET, LPWSABUF, DWORD, LPDWORD, DWORD, const struct sockaddr *, int, LPWSAOVERLAPPED, LPWSAOVERLAPPED_COMPLETION_ROUTINE);
|
||||
BOOL WINAPI WSASetEvent(WSAEVENT);
|
||||
INT WSAAPI WSASetServiceA(LPWSAQUERYSETA, WSAESETSERVICEOP, DWORD);
|
||||
INT WINAPI WSASetServiceW(LPWSAQUERYSETW, WSAESETSERVICEOP, DWORD);
|
||||
SOCKET WINAPI WSASocketA(int, int, int, LPWSAPROTOCOL_INFOA, GROUP, DWORD);
|
||||
SOCKET WINAPI WSASocketW(int, int, int, LPWSAPROTOCOL_INFOW, GROUP, DWORD);
|
||||
INT WINAPI WSAStringToAddressA(LPSTR, INT, LPWSAPROTOCOL_INFOA, LPSOCKADDR, LPINT);
|
||||
INT WINAPI WSAStringToAddressW(LPWSTR, INT, LPWSAPROTOCOL_INFOW, LPSOCKADDR, LPINT);
|
||||
DWORD WINAPI WSAWaitForMultipleEvents(DWORD, const WSAEVENT *, BOOL, DWORD, BOOL);
|
||||
BOOL PASCAL AcceptEx(SOCKET,SOCKET,PVOID,DWORD,DWORD,DWORD,LPDWORD,LPOVERLAPPED);
|
||||
VOID PASCAL GetAcceptExSockaddrs(PVOID,DWORD,DWORD,DWORD,struct sockaddr**, LPINT, struct sockaddr**, LPINT);
|
||||
INT WINAPI GetAddressByNameA(DWORD,LPGUID,LPSTR,LPINT,DWORD,LPSERVICE_ASYNC_INFO,LPVOID,LPDWORD,LPSTR,LPDWORD);
|
||||
INT WINAPI GetAddressByNameW(DWORD,LPGUID,LPWSTR,LPINT,DWORD,LPSERVICE_ASYNC_INFO,LPVOID,LPDWORD,LPWSTR,LPDWORD);
|
||||
INT WINAPI SetServiceA(DWORD,DWORD,DWORD,LPSERVICE_INFOA,LPSERVICE_ASYNC_INFO,LPDWORD);
|
||||
INT WINAPI SetServiceW(DWORD,DWORD,DWORD,LPSERVICE_INFOW,LPSERVICE_ASYNC_INFO,LPDWORD);
|
||||
BOOL PASCAL TransmitFile(SOCKET,HANDLE,DWORD,DWORD,LPOVERLAPPED,LPTRANSMIT_FILE_BUFFERS,DWORD);
|
||||
|
||||
/* Declarations from the win32 SDK and MSDN */
|
||||
INT APIENTRY GetNameByTypeA(IN LPGUID,IN OUT LPSTR,IN DWORD);
|
||||
INT APIENTRY GetNameByTypeW(IN LPGUID,IN OUT LPWSTR,IN DWORD);
|
||||
INT APIENTRY GetServiceA(DWORD, LPGUID, LPSTR,DWORD,LPVOID,LPDWORD,LPSERVICE_ASYNC_INFO);
|
||||
INT APIENTRY GetServiceW(DWORD, LPGUID, LPWSTR,DWORD,LPVOID,LPDWORD,LPSERVICE_ASYNC_INFO);
|
||||
INT APIENTRY GetTypeByNameA(LPSTR,LPGUID);
|
||||
INT APIENTRY GetTypeByNameW(LPWSTR,LPGUID);
|
||||
int APIENTRY sethostname(char*,int);
|
||||
INT APIENTRY EnumProtocolsA(LPINT,LPVOID,LPDWORD);
|
||||
INT APIENTRY EnumProtocolsW(LPINT,LPVOID,LPDWORD);
|
||||
int PASCAL FAR WSARecvEx(SOCKET,char*,int,int*);
|
||||
int WSAAPI bind(SOCKET,const struct sockaddr*,int);
|
||||
int WSAAPI closesocket(SOCKET);
|
||||
int WSAAPI getsockname(SOCKET,struct sockaddr*,int*);
|
||||
int WSAAPI getsockopt(SOCKET,int,int,char*,int*);
|
||||
int WSAAPI recv(SOCKET,char*,int,int);
|
||||
int WSAAPI recvfrom(SOCKET,char*,int,int,struct sockaddr*,int*);
|
||||
int WSAAPI sendto(SOCKET,const char*,int,int,const struct sockaddr*,int);
|
||||
int WSAAPI setsockopt(SOCKET,int,int,const char*,int);
|
||||
int WSAAPI shutdown(SOCKET,int);
|
||||
SOCKET WSAAPI socket(int,int,int);
|
||||
accept
|
||||
bind
|
||||
closesocket
|
||||
connect
|
||||
getpeername
|
||||
getsockname
|
||||
getsockopt
|
||||
htonl
|
||||
htons
|
||||
inet_addr
|
||||
inet_ntoa
|
||||
ioctlsocket
|
||||
listen
|
||||
ntohl
|
||||
ntohs
|
||||
recv
|
||||
recvfrom
|
||||
select
|
||||
send
|
||||
sendto
|
||||
setsockopt
|
||||
shutdown
|
||||
socket
|
||||
MigrateWinsockConfiguration
|
||||
gethostbyaddr
|
||||
gethostbyname
|
||||
getprotobyname
|
||||
getprotobynumber
|
||||
getservbyname
|
||||
getservbyport
|
||||
gethostname
|
||||
WSAAsyncSelect
|
||||
WSAAsyncGetHostByAddr
|
||||
WSAAsyncGetHostByName
|
||||
WSAAsyncGetProtoByNumber
|
||||
WSAAsyncGetProtoByName
|
||||
WSAAsyncGetServByPort
|
||||
WSAAsyncGetServByName
|
||||
WSACancelAsyncRequest
|
||||
WSASetBlockingHook
|
||||
WSAUnhookBlockingHook
|
||||
WSAGetLastError
|
||||
WSASetLastError
|
||||
WSACancelBlockingCall
|
||||
WSAIsBlocking
|
||||
WSAStartup
|
||||
WSACleanup
|
||||
__WSAFDIsSet
|
||||
WEP
|
||||
WSApSetPostRoutine
|
||||
inet_network
|
||||
getnetbyname
|
||||
rcmd
|
||||
rexec
|
||||
rresvport
|
||||
sethostname
|
||||
dn_expand
|
||||
WSARecvEx
|
||||
s_perror
|
||||
GetAddressByNameA
|
||||
GetAddressByNameW
|
||||
EnumProtocolsA
|
||||
EnumProtocolsW
|
||||
GetTypeByNameA
|
||||
GetTypeByNameW
|
||||
GetNameByTypeA
|
||||
GetNameByTypeW
|
||||
SetServiceA
|
||||
SetServiceW
|
||||
GetServiceA
|
||||
GetServiceW
|
||||
NPLoadNameSpaces
|
||||
TransmitFile
|
||||
AcceptEx
|
||||
GetAcceptExSockaddrs
|
||||
|
Loading…
x
Reference in New Issue
Block a user