39 " |
39 " |
40 I represent a non-I/O HANDLE. |
40 I represent a non-I/O HANDLE. |
41 " |
41 " |
42 ! ! |
42 ! ! |
43 |
43 |
|
44 !Win32Handle primitiveDefinitions! |
|
45 %{ |
|
46 |
|
47 #include "stxOSDefs.h" |
|
48 |
|
49 /* |
|
50 * ensure that ST/X runs on NT, 95 and 98 |
|
51 * (however, this disables some Win2K and XP features (sigh) |
|
52 */ |
|
53 #ifndef WINVER |
|
54 # define WINVER 0x0400 |
|
55 #endif |
|
56 |
|
57 #if WINVER < 0x0400 |
|
58 # define NO_GETADAPTERSINFO |
|
59 #endif |
|
60 |
|
61 #define WANT_OLE |
|
62 #define OLE_DEBUG |
|
63 #define COBJMACROS |
|
64 #define CINTERFACE |
|
65 |
|
66 #define USE_H_ERRNO |
|
67 |
|
68 # if defined(i386) || defined(__i386__) |
|
69 # ifndef _X86_ |
|
70 # define _X86_ |
|
71 # endif |
|
72 # endif |
|
73 |
|
74 /* |
|
75 * notice: although many systems' include files |
|
76 * already block against multiple inclusion, some |
|
77 * do not. Therefore, this is done here again. |
|
78 * (it does not hurt) |
|
79 */ |
|
80 |
|
81 # undef INT |
|
82 # undef Array |
|
83 # undef Number |
|
84 # undef Method |
|
85 # undef Point |
|
86 # undef Rectangle |
|
87 # undef Block |
|
88 # undef String |
|
89 # undef Message |
|
90 # undef Object |
|
91 # undef Context |
|
92 # undef Time |
|
93 # undef Date |
|
94 # undef Set |
|
95 # undef Signal |
|
96 # undef Delay |
|
97 # undef Message |
|
98 # undef Process |
|
99 |
|
100 # include <stdarg.h> /* */ |
|
101 |
|
102 # ifndef WINDOWS_H_INCLUDED |
|
103 # define WINDOWS_H_INCLUDED |
|
104 # include <windows.h> |
|
105 # endif |
|
106 |
|
107 # ifdef WANT_OLE |
|
108 |
|
109 #if 0 |
|
110 # ifndef COMDEF_H_INCLUDED |
|
111 # define COMDEF_H_INCLUDED |
|
112 # include <comdef.h> |
|
113 # endif |
|
114 #endif |
|
115 |
|
116 # ifndef OLEAUTO_H_INCLUDED |
|
117 # define OLEAUTO_H_INCLUDED |
|
118 # include <oleauto.h> |
|
119 # endif |
|
120 |
|
121 # endif |
|
122 |
|
123 # ifdef __DEF_Array |
|
124 # define Array __DEF_Array |
|
125 # endif |
|
126 # ifdef __DEF_Number |
|
127 # define Number __DEF_Number |
|
128 # endif |
|
129 # ifdef __DEF_Method |
|
130 # define Method __DEF_Method |
|
131 # endif |
|
132 # ifdef __DEF_Point |
|
133 # define Point __DEF_Point |
|
134 # endif |
|
135 # ifdef __DEF_Rectangle |
|
136 # define Rectangle __DEF_Rectangle |
|
137 # endif |
|
138 # ifdef __DEF_Block |
|
139 # define Block __DEF_Block |
|
140 # endif |
|
141 # ifdef __DEF_String |
|
142 # define String __DEF_String |
|
143 # endif |
|
144 # ifdef __DEF_Message |
|
145 # define Message __DEF_Message |
|
146 # endif |
|
147 # ifdef __DEF_Object |
|
148 # define Object __DEF_Object |
|
149 # endif |
|
150 # ifdef __DEF_Context |
|
151 # define Context __DEF_Context |
|
152 # endif |
|
153 # ifdef __DEF_Date |
|
154 # define Date __DEF_Date |
|
155 # endif |
|
156 # ifdef __DEF_Time |
|
157 # define Time __DEF_Time |
|
158 # endif |
|
159 # ifdef __DEF_Set |
|
160 # define Set __DEF_Set |
|
161 # endif |
|
162 # ifdef __DEF_Signal |
|
163 # define Signal __DEF_Signal |
|
164 # endif |
|
165 # ifdef __DEF_Delay |
|
166 # define Delay __DEF_Delay |
|
167 # endif |
|
168 # ifdef __DEF_Message |
|
169 # define Message __DEF_Message |
|
170 # endif |
|
171 # ifdef __DEF_Process |
|
172 # define Process __DEF_Process |
|
173 # endif |
|
174 |
|
175 # define INT int |
|
176 |
|
177 typedef int (*intf)(int); |
|
178 |
|
179 #define _HANDLEVal(o) (HANDLE)(__externalAddressVal(o)) |
|
180 |
|
181 %} |
|
182 ! ! |
|
183 |
|
184 |
44 !Win32Handle methodsFor:'release'! |
185 !Win32Handle methodsFor:'release'! |
45 |
186 |
46 closeHandle |
187 closeHandle |
47 "close the handle" |
188 "close the handle" |
48 |
189 |
49 %{ |
190 %{ |
50 HANDLE h = (HANDLE)(__externalAddressVal(self)); |
191 HANDLE h = _HANDLEVal(self); |
51 |
192 |
52 if (h) { |
193 if (h) { |
53 __externalAddressVal(self) = (HANDLE)0; |
194 __externalAddressVal(self) = (HANDLE)0; |
54 CloseHandle(h); |
195 CloseHandle(h); |
55 } |
196 } |