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