windows-pr 1.2.1 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,64 +1,64 @@
1
- require 'windows/api'
2
-
3
- module Windows
4
- module Thread
5
- API.auto_namespace = 'Windows::Thread'
6
- API.auto_constant = true
7
- API.auto_method = true
8
- API.auto_unicode = true
9
-
10
- private
11
-
12
- SYNCHRONIZE = 0x00100000
13
- THREAD_ALL_ACCESS = 0x1F03FF
14
- THREAD_DIRECT_IMPERSONATION = 0x0200
15
- THREAD_GET_CONTEXT = 0x0008
16
- THREAD_IMPERSONATE = 0x0100
17
- THREAD_QUERY_INFORMATION = 0x0040
18
- THREAD_SET_CONTEXT = 0x0010
19
- THREAD_SET_INFORMATION = 0x0020
20
- THREAD_SET_THREAD_TOKEN = 0x0080
21
- THREAD_SUSPEND_RESUME = 0x0002
22
- THREAD_TERMINATE = 0x0001
23
-
24
- THREAD_PRIORITY_ABOVE_NORMAL = 1
25
- THREAD_PRIORITY_BELOW_NORMAL = -1
26
- THREAD_PRIORITY_HIGHEST = 2
27
- THREAD_PRIORITY_IDLE = -15
28
- THREAD_PRIORITY_LOWEST = -2
29
- THREAD_PRIORITY_NORMAL = 0
30
- THREAD_PRIORITY_TIME_CRITICAL = 15
31
-
32
- API.new('CreateRemoteThread', 'LPLLPLP', 'L')
33
- API.new('CreateThread', 'PLKPLP', 'L')
34
- API.new('ExitThread', 'L', 'V')
35
- API.new('GetCurrentThread', 'V', 'L')
36
- API.new('GetCurrentThreadId', 'V', 'L')
37
- API.new('GetExitCodeThread', 'LP', 'B')
38
- API.new('GetThreadPriority', 'L', 'I')
39
- API.new('GetThreadPriorityBoost', 'LP', 'B')
40
- API.new('GetThreadTimes', 'LPPPP', 'B')
41
- API.new('OpenThread', 'LIL', 'L')
42
- API.new('ResumeThread', 'L', 'L')
43
- API.new('SetThreadAffinityMask', 'LP', 'P')
44
- API.new('SetThreadIdealProcessor', 'LL', 'L')
45
- API.new('SetThreadPriority', 'LI', 'B')
46
- API.new('SetThreadPriorityBoost', 'LI', 'B')
47
- API.new('Sleep', 'L', 'V')
48
- API.new('SleepEx', 'LI', 'L')
49
- API.new('SuspendThread', 'L', 'L')
50
- API.new('SwitchToThread', 'V', 'B')
51
- API.new('TerminateThread', 'LL', 'B')
52
- API.new('TlsAlloc', 'V', 'L')
53
- API.new('TlsFree', 'L', 'B')
54
- API.new('TlsGetValue', 'L', 'L')
55
- API.new('TlsSetValue', 'LL', 'B')
56
-
57
- begin
58
- API.new('AttachThreadInput', 'LLI', 'B', 'user32')
59
- API.new('GetThreadIOPendingFlag', 'LP', 'B')
60
- rescue Win32::API::LoadLibraryError
61
- # Windows XP or later
62
- end
63
- end
64
- end
1
+ require 'windows/api'
2
+
3
+ module Windows
4
+ module Thread
5
+ API.auto_namespace = 'Windows::Thread'
6
+ API.auto_constant = true
7
+ API.auto_method = true
8
+ API.auto_unicode = true
9
+
10
+ private
11
+
12
+ SYNCHRONIZE = 0x00100000
13
+ THREAD_ALL_ACCESS = 0x1F03FF
14
+ THREAD_DIRECT_IMPERSONATION = 0x0200
15
+ THREAD_GET_CONTEXT = 0x0008
16
+ THREAD_IMPERSONATE = 0x0100
17
+ THREAD_QUERY_INFORMATION = 0x0040
18
+ THREAD_SET_CONTEXT = 0x0010
19
+ THREAD_SET_INFORMATION = 0x0020
20
+ THREAD_SET_THREAD_TOKEN = 0x0080
21
+ THREAD_SUSPEND_RESUME = 0x0002
22
+ THREAD_TERMINATE = 0x0001
23
+
24
+ THREAD_PRIORITY_ABOVE_NORMAL = 1
25
+ THREAD_PRIORITY_BELOW_NORMAL = -1
26
+ THREAD_PRIORITY_HIGHEST = 2
27
+ THREAD_PRIORITY_IDLE = -15
28
+ THREAD_PRIORITY_LOWEST = -2
29
+ THREAD_PRIORITY_NORMAL = 0
30
+ THREAD_PRIORITY_TIME_CRITICAL = 15
31
+
32
+ API.new('CreateRemoteThread', 'LPLLPLP', 'L')
33
+ API.new('CreateThread', 'PLKPLP', 'L')
34
+ API.new('ExitThread', 'L', 'V')
35
+ API.new('GetCurrentThread', 'V', 'L')
36
+ API.new('GetCurrentThreadId', 'V', 'L')
37
+ API.new('GetExitCodeThread', 'LP', 'B')
38
+ API.new('GetThreadPriority', 'L', 'I')
39
+ API.new('GetThreadPriorityBoost', 'LP', 'B')
40
+ API.new('GetThreadTimes', 'LPPPP', 'B')
41
+ API.new('OpenThread', 'LIL', 'L')
42
+ API.new('ResumeThread', 'L', 'L')
43
+ API.new('SetThreadAffinityMask', 'LP', 'P')
44
+ API.new('SetThreadIdealProcessor', 'LL', 'L')
45
+ API.new('SetThreadPriority', 'LI', 'B')
46
+ API.new('SetThreadPriorityBoost', 'LI', 'B')
47
+ API.new('Sleep', 'L', 'V')
48
+ API.new('SleepEx', 'LI', 'L')
49
+ API.new('SuspendThread', 'L', 'L')
50
+ API.new('SwitchToThread', 'V', 'B')
51
+ API.new('TerminateThread', 'LL', 'B')
52
+ API.new('TlsAlloc', 'V', 'L')
53
+ API.new('TlsFree', 'L', 'B')
54
+ API.new('TlsGetValue', 'L', 'L')
55
+ API.new('TlsSetValue', 'LL', 'B')
56
+
57
+ begin
58
+ API.new('AttachThreadInput', 'LLI', 'B', 'user32')
59
+ API.new('GetThreadIOPendingFlag', 'LP', 'B')
60
+ rescue Win32::API::LoadLibraryError
61
+ # Windows XP or later
62
+ end
63
+ end
64
+ end
@@ -1,155 +1,155 @@
1
- # encoding: ascii-8bit
2
- require 'windows/api'
3
- require 'windows/msvcrt/string'
4
- require 'windows/error'
5
-
6
- module Windows
7
- module Unicode
8
- include Windows::MSVCRT::String
9
- include Windows::Error
10
-
11
- private
12
-
13
- API.auto_namespace = 'Windows::Unicode'
14
- API.auto_constant = true
15
- API.auto_method = true
16
- API.auto_unicode = false
17
-
18
- CP_ACP = 0
19
- CP_OEMCP = 1
20
- CP_MACCP = 2
21
- CP_THREAD_ACP = 3
22
- CP_SYMBOL = 42
23
- CP_UTF7 = 65000
24
- CP_UTF8 = 65001
25
-
26
- MB_PRECOMPOSED = 0x00000001
27
- MB_COMPOSITE = 0x00000002
28
- MB_USEGLYPHCHARS = 0x00000004
29
- MB_ERR_INVALID_CHARS = 0x00000008
30
-
31
- WC_COMPOSITECHECK = 0x00000200
32
- WC_DISCARDNS = 0x00000010
33
- WC_SEPCHARS = 0x00000020
34
- WC_DEFAULTCHAR = 0x00000040
35
- WC_NO_BEST_FIT_CHARS = 0x00000400
36
-
37
- ANSI_CHARSET = 0
38
- DEFAULT_CHARSET = 1
39
- SYMBOL_CHARSET = 2
40
- SHIFTJIS_CHARSET = 128
41
- HANGEUL_CHARSET = 129
42
- HANGUL_CHARSET = 129
43
- GB2312_CHARSET = 134
44
- CHINESEBIG5_CHARSET = 136
45
- OEM_CHARSET = 255
46
- JOHAB_CHARSET = 130
47
- HEBREW_CHARSET = 177
48
- ARABIC_CHARSET = 178
49
- GREEK_CHARSET = 161
50
- TURKISH_CHARSET = 162
51
- VIETNAMESE_CHARSET = 163
52
- THAI_CHARSET = 222
53
- EASTEUROPE_CHARSET = 238
54
- RUSSIAN_CHARSET = 204
55
-
56
- IS_TEXT_UNICODE_ASCII16 = 0x0001
57
- IS_TEXT_UNICODE_REVERSE_ASCII16 = 0x0010
58
- IS_TEXT_UNICODE_STATISTICS = 0x0002
59
- IS_TEXT_UNICODE_REVERSE_STATISTICS = 0x0020
60
- IS_TEXT_UNICODE_CONTROLS = 0x0004
61
- IS_TEXT_UNICODE_REVERSE_CONTROLS = 0x0040
62
- IS_TEXT_UNICODE_SIGNATURE = 0x0008
63
- IS_TEXT_UNICODE_REVERSE_SIGNATURE = 0x0080
64
- IS_TEXT_UNICODE_ILLEGAL_CHARS = 0x0100
65
- IS_TEXT_UNICODE_ODD_LENGTH = 0x0200
66
- IS_TEXT_UNICODE_DBCS_LEADBYTE = 0x0400
67
- IS_TEXT_UNICODE_NULL_BYTES = 0x1000
68
- IS_TEXT_UNICODE_UNICODE_MASK = 0x000F
69
- IS_TEXT_UNICODE_REVERSE_MASK = 0x00F0
70
- IS_TEXT_UNICODE_NOT_UNICODE_MASK = 0x0F00
71
- IS_TEXT_UNICODE_NOT_ASCII_MASK = 0xF000
72
-
73
- TCI_SRCCHARSET = 1
74
- TCI_SRCCODEPAGE = 2
75
- TCI_SRCFONTSIG = 3
76
- TCI_SRCLOCALE = 0x100
77
-
78
- API.new('GetTextCharset', 'L', 'I', 'gdi32')
79
- API.new('GetTextCharsetInfo', 'LPL', 'I', 'gdi32')
80
- API.new('IsDBCSLeadByte', 'P', 'B')
81
- API.new('IsDBCSLeadByteEx', 'IP', 'B')
82
- API.new('IsTextUnicode', 'SIP', 'B', 'advapi32')
83
- API.new('MultiByteToWideChar', 'ILSIPI', 'I')
84
- API.new('TranslateCharsetInfo', 'PPL', 'B', 'gdi32')
85
- API.new('WideCharToMultiByte', 'ILSIPIPP', 'I')
86
-
87
- # Convenient wrapper methods
88
-
89
- # Maps a wide character string to a new character string using the
90
- # specified +encoding+. If no encoding is specified, then CP_UTF8
91
- # is used if $KCODE (or the encoding name in Ruby 1.9.x) is set to UTF8.
92
- # Otherwise, CP_ACP is used.
93
- #
94
- # If the function fails it simply returns the string as-is.
95
- #
96
- def multi_to_wide(string, encoding=nil)
97
- return nil unless string
98
- raise TypeError unless string.is_a?(String)
99
- return string if IsTextUnicode(string, string.size, nil)
100
-
101
- unless encoding
102
- if RUBY_VERSION.to_f >= 1.9
103
- encoding = (string.encoding.name == 'UTF-8') ? CP_UTF8 : CP_ACP
104
- else
105
- encoding = ($KCODE == 'UTF8') ? CP_UTF8 : CP_ACP
106
- end
107
- end
108
-
109
- int = MultiByteToWideChar(encoding, 0, string, -1, nil, 0)
110
-
111
- # Trailing nulls are retained
112
- if int > 0
113
- buf = ' ' * int * 2
114
- MultiByteToWideChar(encoding, 0, string, -1, buf, int)
115
- buf
116
- else
117
- raise ArgumentError, get_last_error
118
- end
119
- end
120
-
121
- # Maps a wide character string to a new character string using the
122
- # specified +encoding+. If no encoding is specified, then CP_UTF8
123
- # is used if $KCODE (or the encoding name in Ruby 1.9.x) is set to UTF8.
124
- # Otherwise, CP_ACP is used.
125
- #
126
- # If the function fails it simply returns the string as-is.
127
- #
128
- def wide_to_multi(wstring, encoding=nil)
129
- return nil unless wstring
130
- raise TypeError unless wstring.is_a?(String)
131
-
132
- unless encoding
133
- if RUBY_VERSION.to_f >= 1.9
134
- encoding = (wstring.encoding.name == 'UTF-8') ? CP_UTF8 : CP_ACP
135
- else
136
- encoding = ($KCODE == 'UTF8') ? CP_UTF8 : CP_ACP
137
- end
138
- end
139
-
140
- # Add a trailing double null if necessary
141
- wstring << "\000\000" if wstring[-1].chr != "\000"
142
-
143
- int = WideCharToMultiByte(encoding, 0, wstring, -1, 0, 0, nil, nil)
144
-
145
- # Trailing nulls are stripped
146
- if int > 0
147
- buf = ' ' * int
148
- WideCharToMultiByte(encoding, 0, wstring, -1, buf, strlen(buf), nil, nil)
149
- buf[ /^[^\0]*/ ]
150
- else
151
- raise ArgumentError, get_last_error
152
- end
153
- end
154
- end
155
- end
1
+ # encoding: ascii-8bit
2
+ require 'windows/api'
3
+ require 'windows/msvcrt/string'
4
+ require 'windows/error'
5
+
6
+ module Windows
7
+ module Unicode
8
+ include Windows::MSVCRT::String
9
+ include Windows::Error
10
+
11
+ private
12
+
13
+ API.auto_namespace = 'Windows::Unicode'
14
+ API.auto_constant = true
15
+ API.auto_method = true
16
+ API.auto_unicode = false
17
+
18
+ CP_ACP = 0
19
+ CP_OEMCP = 1
20
+ CP_MACCP = 2
21
+ CP_THREAD_ACP = 3
22
+ CP_SYMBOL = 42
23
+ CP_UTF7 = 65000
24
+ CP_UTF8 = 65001
25
+
26
+ MB_PRECOMPOSED = 0x00000001
27
+ MB_COMPOSITE = 0x00000002
28
+ MB_USEGLYPHCHARS = 0x00000004
29
+ MB_ERR_INVALID_CHARS = 0x00000008
30
+
31
+ WC_COMPOSITECHECK = 0x00000200
32
+ WC_DISCARDNS = 0x00000010
33
+ WC_SEPCHARS = 0x00000020
34
+ WC_DEFAULTCHAR = 0x00000040
35
+ WC_NO_BEST_FIT_CHARS = 0x00000400
36
+
37
+ ANSI_CHARSET = 0
38
+ DEFAULT_CHARSET = 1
39
+ SYMBOL_CHARSET = 2
40
+ SHIFTJIS_CHARSET = 128
41
+ HANGEUL_CHARSET = 129
42
+ HANGUL_CHARSET = 129
43
+ GB2312_CHARSET = 134
44
+ CHINESEBIG5_CHARSET = 136
45
+ OEM_CHARSET = 255
46
+ JOHAB_CHARSET = 130
47
+ HEBREW_CHARSET = 177
48
+ ARABIC_CHARSET = 178
49
+ GREEK_CHARSET = 161
50
+ TURKISH_CHARSET = 162
51
+ VIETNAMESE_CHARSET = 163
52
+ THAI_CHARSET = 222
53
+ EASTEUROPE_CHARSET = 238
54
+ RUSSIAN_CHARSET = 204
55
+
56
+ IS_TEXT_UNICODE_ASCII16 = 0x0001
57
+ IS_TEXT_UNICODE_REVERSE_ASCII16 = 0x0010
58
+ IS_TEXT_UNICODE_STATISTICS = 0x0002
59
+ IS_TEXT_UNICODE_REVERSE_STATISTICS = 0x0020
60
+ IS_TEXT_UNICODE_CONTROLS = 0x0004
61
+ IS_TEXT_UNICODE_REVERSE_CONTROLS = 0x0040
62
+ IS_TEXT_UNICODE_SIGNATURE = 0x0008
63
+ IS_TEXT_UNICODE_REVERSE_SIGNATURE = 0x0080
64
+ IS_TEXT_UNICODE_ILLEGAL_CHARS = 0x0100
65
+ IS_TEXT_UNICODE_ODD_LENGTH = 0x0200
66
+ IS_TEXT_UNICODE_DBCS_LEADBYTE = 0x0400
67
+ IS_TEXT_UNICODE_NULL_BYTES = 0x1000
68
+ IS_TEXT_UNICODE_UNICODE_MASK = 0x000F
69
+ IS_TEXT_UNICODE_REVERSE_MASK = 0x00F0
70
+ IS_TEXT_UNICODE_NOT_UNICODE_MASK = 0x0F00
71
+ IS_TEXT_UNICODE_NOT_ASCII_MASK = 0xF000
72
+
73
+ TCI_SRCCHARSET = 1
74
+ TCI_SRCCODEPAGE = 2
75
+ TCI_SRCFONTSIG = 3
76
+ TCI_SRCLOCALE = 0x100
77
+
78
+ API.new('GetTextCharset', 'L', 'I', 'gdi32')
79
+ API.new('GetTextCharsetInfo', 'LPL', 'I', 'gdi32')
80
+ API.new('IsDBCSLeadByte', 'P', 'B')
81
+ API.new('IsDBCSLeadByteEx', 'IP', 'B')
82
+ API.new('IsTextUnicode', 'SIP', 'B', 'advapi32')
83
+ API.new('MultiByteToWideChar', 'ILSIPI', 'I')
84
+ API.new('TranslateCharsetInfo', 'PPL', 'B', 'gdi32')
85
+ API.new('WideCharToMultiByte', 'ILSIPIPP', 'I')
86
+
87
+ # Convenient wrapper methods
88
+
89
+ # Maps a character string to a UTF-16 (wide) character string using the
90
+ # specified +encoding+. If no encoding is specified, then CP_UTF8
91
+ # is used if $KCODE (or the encoding name in Ruby 1.9.x) is set to UTF8.
92
+ # Otherwise, CP_ACP is used.
93
+ #
94
+ # If the function fails it simply returns the string as-is.
95
+ #
96
+ def multi_to_wide(string, encoding=nil)
97
+ return nil unless string
98
+ raise TypeError unless string.is_a?(String)
99
+ return string if IsTextUnicode(string, string.size, nil)
100
+
101
+ unless encoding
102
+ if RUBY_VERSION.to_f >= 1.9
103
+ encoding = (string.encoding.name == 'UTF-8') ? CP_UTF8 : CP_ACP
104
+ else
105
+ encoding = ($KCODE == 'UTF8') ? CP_UTF8 : CP_ACP
106
+ end
107
+ end
108
+
109
+ int = MultiByteToWideChar(encoding, 0, string, -1, nil, 0)
110
+
111
+ # Trailing nulls are retained
112
+ if int > 0
113
+ buf = ' ' * int * 2
114
+ MultiByteToWideChar(encoding, 0, string, -1, buf, int)
115
+ buf
116
+ else
117
+ raise ArgumentError, get_last_error
118
+ end
119
+ end
120
+
121
+ # Maps a wide character string to a new character string using the
122
+ # specified +encoding+. If no encoding is specified, then CP_UTF8
123
+ # is used if $KCODE (or the encoding name in Ruby 1.9.x) is set to UTF8.
124
+ # Otherwise, CP_ACP is used.
125
+ #
126
+ # If the function fails it simply returns the string as-is.
127
+ #
128
+ def wide_to_multi(wstring, encoding=nil)
129
+ return nil unless wstring
130
+ raise TypeError unless wstring.is_a?(String)
131
+
132
+ unless encoding
133
+ if RUBY_VERSION.to_f >= 1.9
134
+ encoding = (wstring.encoding.name == 'UTF-8') ? CP_UTF8 : CP_ACP
135
+ else
136
+ encoding = ($KCODE == 'UTF8') ? CP_UTF8 : CP_ACP
137
+ end
138
+ end
139
+
140
+ # Add a trailing double null if necessary
141
+ wstring << "\000\000" if wstring[-1].chr != "\000"
142
+
143
+ int = WideCharToMultiByte(encoding, 0, wstring, -1, 0, 0, nil, nil)
144
+
145
+ # Trailing nulls are stripped
146
+ if int > 0
147
+ buf = ' ' * int
148
+ WideCharToMultiByte(encoding, 0, wstring, -1, buf, strlen(buf), nil, nil)
149
+ buf[ /^[^\0]*/ ]
150
+ else
151
+ raise ArgumentError, get_last_error
152
+ end
153
+ end
154
+ end
155
+ end
@@ -1,102 +1,102 @@
1
- require 'windows/api'
2
-
3
- module Windows
4
- module WSA
5
- API.auto_namespace = 'Windows::WSA'
6
- API.auto_constant = true
7
- API.auto_method = true
8
- API.auto_unicode = true
9
-
10
- private
11
-
12
- # Constants
13
-
14
- WSA_FLAG_OVERLAPPED = 0x01
15
- WSA_FLAG_MULTIPOINT_C_ROOT = 0x02
16
- WSA_FLAG_MULTIPOINT_C_LEAF = 0x04
17
- WSA_FLAG_MULTIPOINT_D_ROOT = 0x08
18
- WSA_FLAG_MULTIPOINT_D_LEAF = 0x10
19
- WSA_FLAG_ACCESS_SYSTEM_SECURITY = 0x40
20
- WSA_FLAG_NO_HANDLE_INHERIT = 0x80
21
-
22
- RNRSERVICE_REGISTER = 0
23
- RNRSERVICE_DEREGISTER = 1
24
- RNRSERVICE_DELETE = 2
25
-
26
- # Functions
27
-
28
- API.new('WSAAccept', 'LPPKP', 'L', 'ws2_32')
29
- API.new('WSAAddressToString', 'PLPPP', 'I', 'ws2_32')
30
- API.new('WSAAsyncGetHostByAddr', 'LISIIPI', 'L', 'ws2_32')
31
- API.new('WSAAsyncGetHostByName', 'LISPI', 'L', 'ws2_32')
32
- API.new('WSAAsyncGetProtoByName', 'LISPI', 'L', 'ws2_32')
33
- API.new('WSAAsyncGetProtoByNumber', 'LISPI', 'L', 'ws2_32')
34
- API.new('WSAAsyncGetServByName', 'LISSPI', 'L', 'ws2_32')
35
- API.new('WSAAsyncGetServByPort', 'LIISPI', 'L', 'ws2_32')
36
- API.new('WSAAsyncSelect', 'LLIL', 'I', 'ws2_32')
37
- API.new('WSACancelAsyncRequest', 'L', 'I', 'ws2_32')
38
- API.new('WSACleanup', 'V', 'I', 'ws2_32')
39
- API.new('WSACloseEvent', 'I', 'B', 'ws2_32')
40
- API.new('WSAConnect', 'LPIPPPP', 'I', 'ws2_32')
41
- API.new('WSACreateEvent', 'V', 'L', 'ws2_32')
42
- API.new('WSADuplicateSocket', 'LLP', 'I', 'ws2_32')
43
- API.new('WSAEnumNetworkEvents', 'LLP', 'I', 'ws2_32')
44
- API.new('WSAEnumProtocols', 'PPP', 'I', 'ws2_32')
45
- API.new('WSAEventSelect', 'LLL', 'I', 'ws2_32')
46
- API.new('WSAGetLastError', 'V', 'I', 'ws2_32')
47
- API.new('WSAGetOverlappedResult', 'LPPIP', 'B', 'ws2_32')
48
- API.new('WSAGetQOSByName', 'LPP', 'B', 'ws2_32')
49
- API.new('WSAGetServiceClassInfo', 'PPPP', 'I', 'ws2_32')
50
- API.new('WSAGetServiceClassNameByClassId', 'PPP', 'I', 'ws2_32')
51
- API.new('WSAHtonl', 'LLP', 'I', 'ws2_32')
52
- API.new('WSAHtons', 'LIP', 'I', 'ws2_32')
53
- API.new('WSAInstallServiceClass', 'P', 'I', 'ws2_32')
54
- API.new('WSAIoctl', 'LLPLPLPPP', 'I', 'ws2_32')
55
- API.new('WSAJoinLeaf', 'LPIPPPPL', 'L', 'ws2_32')
56
- API.new('WSALookupServiceBegin', 'PLP', 'I', 'ws2_32')
57
- API.new('WSALookupServiceEnd', 'L', 'I', 'ws2_32')
58
- API.new('WSALookupServiceNext', 'LLPP', 'I', 'ws2_32')
59
- API.new('WSANtohl', 'LLP', 'I', 'ws2_32')
60
- API.new('WSANtohs', 'LIP', 'I', 'ws2_32')
61
- API.new('WSAProviderConfigChange', 'PPP', 'I', 'ws2_32')
62
- API.new('WSARecv', 'LPLPPPP', 'I', 'ws2_32')
63
- API.new('WSARecvDisconnect', 'LP', 'I', 'ws2_32')
64
- API.new('WSARecvEx', 'LPIP', 'I', 'mswsock')
65
- API.new('WSARecvFrom', 'LPLPPPPPP', 'I', 'ws2_32')
66
- API.new('WSARemoveServiceClass', 'P', 'I', 'ws2_32')
67
- API.new('WSAResetEvent', 'L', 'B', 'ws2_32')
68
- API.new('WSASend', 'LPLPLPP', 'I', 'ws2_32')
69
- API.new('WSASendDisconnect', 'LP', 'I', 'ws2_32')
70
- API.new('WSASendTo', 'LPLPLPIPP', 'I', 'ws2_32')
71
- API.new('WSASetEvent', 'L', 'B', 'ws2_32')
72
- API.new('WSASetLastError', 'I', 'V', 'ws2_32')
73
- API.new('WSASetService', 'PIL', 'I', 'ws2_32')
74
- API.new('WSAStartup', 'LP', 'I', 'ws2_32')
75
- API.new('WSASocket', 'IIIPLL', 'L', 'ws2_32')
76
- API.new('WSAStringToAddress', 'PIPPP', 'I', 'ws2_32')
77
- API.new('WSAWaitForMultipleEvents', 'LPILI', 'L', 'ws2_32')
78
-
79
- begin
80
- API.new('WSAConnectByList', 'LPPPPPPP', 'B', 'ws2_32')
81
- API.new('WSAConnectByName', 'LPPPPPPP', 'B', 'ws2_32')
82
- API.new('WSADeleteSocketPeerTargetName', 'LPLPP', 'L', 'fwpuclnt')
83
- API.new('WSAEnumNameSpaceProvidersEx', 'PP', 'I', 'ws2_32')
84
- API.new('WSAPoll', 'PLI', 'I', 'ws2_32')
85
- API.new('WSAQuerySocketSecurity', 'LPLPPPP', 'I', 'fwpuclnt')
86
- API.new('WSARevertImpersonation', 'V', 'I', 'fwpuclnt')
87
- API.new('WSASendMsg', 'LPLPPP', 'I', 'ws2_32')
88
- API.new('WSASetSocketPeerTargetName', 'LPLPP', 'I', 'fwpuclnt')
89
- API.new('WSASetSocketSecurity', 'LPLPP', 'I', 'fwpuclnt')
90
- rescue Win32::API::LoadLibraryError
91
- # Vista or later
92
- end
93
-
94
- begin
95
- API.new('WSAEnumNameSpaceProviders', 'PP', 'I', 'ws2_32')
96
- API.new('WSAImpersonateSocketPeer', 'LPL', 'I', 'fwpuclnt')
97
- API.new('WSANSPIoctl', 'LLPLPLPP', 'I', 'ws2_32')
98
- rescue Win32::API::LoadLibraryError
99
- # XP or later
100
- end
101
- end
102
- end
1
+ require 'windows/api'
2
+
3
+ module Windows
4
+ module WSA
5
+ API.auto_namespace = 'Windows::WSA'
6
+ API.auto_constant = true
7
+ API.auto_method = true
8
+ API.auto_unicode = true
9
+
10
+ private
11
+
12
+ # Constants
13
+
14
+ WSA_FLAG_OVERLAPPED = 0x01
15
+ WSA_FLAG_MULTIPOINT_C_ROOT = 0x02
16
+ WSA_FLAG_MULTIPOINT_C_LEAF = 0x04
17
+ WSA_FLAG_MULTIPOINT_D_ROOT = 0x08
18
+ WSA_FLAG_MULTIPOINT_D_LEAF = 0x10
19
+ WSA_FLAG_ACCESS_SYSTEM_SECURITY = 0x40
20
+ WSA_FLAG_NO_HANDLE_INHERIT = 0x80
21
+
22
+ RNRSERVICE_REGISTER = 0
23
+ RNRSERVICE_DEREGISTER = 1
24
+ RNRSERVICE_DELETE = 2
25
+
26
+ # Functions
27
+
28
+ API.new('WSAAccept', 'LPPKP', 'L', 'ws2_32')
29
+ API.new('WSAAddressToString', 'PLPPP', 'I', 'ws2_32')
30
+ API.new('WSAAsyncGetHostByAddr', 'LISIIPI', 'L', 'ws2_32')
31
+ API.new('WSAAsyncGetHostByName', 'LISPI', 'L', 'ws2_32')
32
+ API.new('WSAAsyncGetProtoByName', 'LISPI', 'L', 'ws2_32')
33
+ API.new('WSAAsyncGetProtoByNumber', 'LISPI', 'L', 'ws2_32')
34
+ API.new('WSAAsyncGetServByName', 'LISSPI', 'L', 'ws2_32')
35
+ API.new('WSAAsyncGetServByPort', 'LIISPI', 'L', 'ws2_32')
36
+ API.new('WSAAsyncSelect', 'LLIL', 'I', 'ws2_32')
37
+ API.new('WSACancelAsyncRequest', 'L', 'I', 'ws2_32')
38
+ API.new('WSACleanup', 'V', 'I', 'ws2_32')
39
+ API.new('WSACloseEvent', 'I', 'B', 'ws2_32')
40
+ API.new('WSAConnect', 'LPIPPPP', 'I', 'ws2_32')
41
+ API.new('WSACreateEvent', 'V', 'L', 'ws2_32')
42
+ API.new('WSADuplicateSocket', 'LLP', 'I', 'ws2_32')
43
+ API.new('WSAEnumNetworkEvents', 'LLP', 'I', 'ws2_32')
44
+ API.new('WSAEnumProtocols', 'PPP', 'I', 'ws2_32')
45
+ API.new('WSAEventSelect', 'LLL', 'I', 'ws2_32')
46
+ API.new('WSAGetLastError', 'V', 'I', 'ws2_32')
47
+ API.new('WSAGetOverlappedResult', 'LPPIP', 'B', 'ws2_32')
48
+ API.new('WSAGetQOSByName', 'LPP', 'B', 'ws2_32')
49
+ API.new('WSAGetServiceClassInfo', 'PPPP', 'I', 'ws2_32')
50
+ API.new('WSAGetServiceClassNameByClassId', 'PPP', 'I', 'ws2_32')
51
+ API.new('WSAHtonl', 'LLP', 'I', 'ws2_32')
52
+ API.new('WSAHtons', 'LIP', 'I', 'ws2_32')
53
+ API.new('WSAInstallServiceClass', 'P', 'I', 'ws2_32')
54
+ API.new('WSAIoctl', 'LLPLPLPPP', 'I', 'ws2_32')
55
+ API.new('WSAJoinLeaf', 'LPIPPPPL', 'L', 'ws2_32')
56
+ API.new('WSALookupServiceBegin', 'PLP', 'I', 'ws2_32')
57
+ API.new('WSALookupServiceEnd', 'L', 'I', 'ws2_32')
58
+ API.new('WSALookupServiceNext', 'LLPP', 'I', 'ws2_32')
59
+ API.new('WSANtohl', 'LLP', 'I', 'ws2_32')
60
+ API.new('WSANtohs', 'LIP', 'I', 'ws2_32')
61
+ API.new('WSAProviderConfigChange', 'PPP', 'I', 'ws2_32')
62
+ API.new('WSARecv', 'LPLPPPP', 'I', 'ws2_32')
63
+ API.new('WSARecvDisconnect', 'LP', 'I', 'ws2_32')
64
+ API.new('WSARecvEx', 'LPIP', 'I', 'mswsock')
65
+ API.new('WSARecvFrom', 'LPLPPPPPP', 'I', 'ws2_32')
66
+ API.new('WSARemoveServiceClass', 'P', 'I', 'ws2_32')
67
+ API.new('WSAResetEvent', 'L', 'B', 'ws2_32')
68
+ API.new('WSASend', 'LPLPLPP', 'I', 'ws2_32')
69
+ API.new('WSASendDisconnect', 'LP', 'I', 'ws2_32')
70
+ API.new('WSASendTo', 'LPLPLPIPP', 'I', 'ws2_32')
71
+ API.new('WSASetEvent', 'L', 'B', 'ws2_32')
72
+ API.new('WSASetLastError', 'I', 'V', 'ws2_32')
73
+ API.new('WSASetService', 'PIL', 'I', 'ws2_32')
74
+ API.new('WSAStartup', 'LP', 'I', 'ws2_32')
75
+ API.new('WSASocket', 'IIIPLL', 'L', 'ws2_32')
76
+ API.new('WSAStringToAddress', 'PIPPP', 'I', 'ws2_32')
77
+ API.new('WSAWaitForMultipleEvents', 'LPILI', 'L', 'ws2_32')
78
+
79
+ begin
80
+ API.new('WSAConnectByList', 'LPPPPPPP', 'B', 'ws2_32')
81
+ API.new('WSAConnectByName', 'LPPPPPPP', 'B', 'ws2_32')
82
+ API.new('WSADeleteSocketPeerTargetName', 'LPLPP', 'L', 'fwpuclnt')
83
+ API.new('WSAEnumNameSpaceProvidersEx', 'PP', 'I', 'ws2_32')
84
+ API.new('WSAPoll', 'PLI', 'I', 'ws2_32')
85
+ API.new('WSAQuerySocketSecurity', 'LPLPPPP', 'I', 'fwpuclnt')
86
+ API.new('WSARevertImpersonation', 'V', 'I', 'fwpuclnt')
87
+ API.new('WSASendMsg', 'LPLPPP', 'I', 'ws2_32')
88
+ API.new('WSASetSocketPeerTargetName', 'LPLPP', 'I', 'fwpuclnt')
89
+ API.new('WSASetSocketSecurity', 'LPLPP', 'I', 'fwpuclnt')
90
+ rescue Win32::API::LoadLibraryError
91
+ # Vista or later
92
+ end
93
+
94
+ begin
95
+ API.new('WSAEnumNameSpaceProviders', 'PP', 'I', 'ws2_32')
96
+ API.new('WSAImpersonateSocketPeer', 'LPL', 'I', 'fwpuclnt')
97
+ API.new('WSANSPIoctl', 'LLPLPLPP', 'I', 'ws2_32')
98
+ rescue Win32::API::LoadLibraryError
99
+ # XP or later
100
+ end
101
+ end
102
+ end