Win32OperatingSystem.st
changeset 14520 cc5f9141dded
parent 14519 14ebce6fccae
child 14632 6fe0dc1d5377
--- a/Win32OperatingSystem.st	Wed Nov 21 15:16:21 2012 +0100
+++ b/Win32OperatingSystem.st	Wed Nov 21 17:34:54 2012 +0100
@@ -814,6 +814,7 @@
     "Modified: 7.1.1997 / 19:36:11 / stefan"
 ! !
 
+
 !Win32OperatingSystem class methodsFor:'OS signal constants'!
 
 sigABRT
@@ -3962,14 +3963,6 @@
     ^ self primitiveFailed.
 !
 
-closeHandle: handle
-    "low level handle close"
-
-    <apicall: ulongReturn "CloseHandle" ( handle ) module: "kernel32.dll" >
-
-    "Modified (comment): / 12-08-2011 / 16:37:35 / cg"
-!
-
 createDirectory:aPathName
     "create a new directory with name 'aPathName', which may be an absolute
      path, or relative to the current directory.
@@ -6905,26 +6898,31 @@
 !
 
 duplicateHandle:aHandle to:targetProcessHandle
-    |hMe spaceForTargetHandle rslt|
-
-    spaceForTargetHandle := ExternalLong new.
+    |hMe spaceForTargetHandle rslt addr|
+
+    spaceForTargetHandle := ExternalLong unprotectedNew.
     hMe := self getCurrentProcess.
     rslt := self
-		primDuplicateHandle_hSourcProcessHandle:hMe
-		hSourceHandle:aHandle
-		hTargetProcesshandle:targetProcessHandle
-		lpTargetHandle:spaceForTargetHandle
-		dwDesiredAccess:0
-		bInheritHandle:false
-		dwOptions:2 "DUPLICATE_SAME_ACCESS".
+                primDuplicateHandle_hSourcProcessHandle:hMe
+                hSourceHandle:aHandle
+                hTargetProcesshandle:targetProcessHandle
+                lpTargetHandle:spaceForTargetHandle
+                dwDesiredAccess:0
+                bInheritHandle:false
+                dwOptions:2 "DUPLICATE_SAME_ACCESS".
 
     rslt ifFalse:[
-	self primitiveFailed.
-	^ nil
-    ].
-    ^ ExternalAddress newAddress:(spaceForTargetHandle value).
+        spaceForTargetHandle free.
+        self primitiveFailed.
+        ^ nil
+    ].
+
+    addr := spaceForTargetHandle value.
+    spaceForTargetHandle free.
+    ^ ExternalAddress newAddress:addr.
 
     "Created: / 18-09-2007 / 16:34:25 / cg"
+    "Modified: / 21-11-2012 / 12:14:06 / anwild"
 !
 
 getAllProcesses
@@ -7120,24 +7118,6 @@
     "
 !
 
-multiByteToWideCharCp: cp flags: flags lpstr: lpstr cchstr: cchstr lpwstr: lpwstr cchwstr: cchwstr
-    "Convert the multi-byte string encoding in <lpstr> to a Unicode encoding in <lpwstr>."
-
-    " int MultiByteToWideChar(
-	UINT  CodePage,    // code page
-	DWORD  dwFlags,    // character-type options
-	LPCSTR  lpMultiByteStr,    // address of string to map
-	int  cchMultiByte,    // number of characters in string
-	LPWSTR  lpWideCharStr,    // address of wide-character buffer
-	int  cchWideChar     // size of buffer
-	);"
-
-    <apicall: ulongReturn "MultiByteToWideChar" ( uint32 uint32 structIn int32 structOut int32) module: "kernel32.dll" >
-    ^self primitiveFailed
-
-    "Modified (comment): / 12-08-2011 / 16:37:06 / cg"
-!
-
 playSound:fileName
     self playSound:fileName mode:1
 
@@ -7219,34 +7199,6 @@
     "Created: / 18-12-2006 / 13:01:41 / User"
 !
 
-wideCharToMultiByteCp: codePage
-    flags: dwFlags
-    lpwstr: lpWideCharStr
-    cchwstr: cchwstr
-    lpstr: lpstr
-    cchlpstr: cchlpstr
-    default: default
-    defaultUsed: defaultUsed
-
-    "Convert the Unicode encoding in <lpWideCharStr> to a multi-byte string encoding in <lpstr>."
-
-    "int WideCharToMultiByte(
-	UINT  CodePage,    // code page
-	DWORD  dwFlags,    // performance and mapping flags
-	LPCWSTR  lpWideCharStr,    // address of wide-character string
-	int  cchWideChar,    // number of characters in string
-	LPSTR  lpMultiByteStr,    // address of buffer for new string
-	int  cchMultiByte,    // size of buffer
-	LPCSTR  lpDefaultChar,    // address of default for unmappable characters
-	LPBOOL  lpUsedDefaultChar     // address of flag set when default char. used
-	);"
-
-    <apicall: ulongReturn "MultiByteToWideChar" ( uint32 uint32 structIn int32 structOut int32 structIn structOut) module: "kernel32.dll" >
-    ^self primitiveFailed
-
-    "Modified (comment): / 12-08-2011 / 16:37:14 / cg"
-!
-
 writePrivateProfileString: appName keyName: keyName profileString: profString fileName: aString
 
    ^self primWritePrivateProfileString: appName keyName: keyName profileString: profString fileName: aString
@@ -16500,11 +16452,11 @@
 !Win32OperatingSystem class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.441 2012-11-21 14:16:21 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.442 2012-11-21 16:34:54 anwild Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.441 2012-11-21 14:16:21 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.442 2012-11-21 16:34:54 anwild Exp $'
 !
 
 version_SVN