Marcel Taeumel uploaded a new version of FFI-Libraries to project FFI: http://source.squeak.org/FFI/FFI-Libraries-cbc.5.mcz
==================== Summary ====================
Name: FFI-Libraries-cbc.5 Author: cbc Time: 28 November 2023, 3:41:07.592137 pm UUID: 6d62c2b2-3967-d349-8d26-aff0c6b5881f Ancestors: FFI-Libraries-mt.4
Add a few more convenient Win32 Util commands: #getComputerName #getCurrentUserDomain
=============== Diff against FFI-Libraries-mt.4 ===============
Item was added: + ----- Method: Win32Utils class>>apiGetComputerNameBuffer:size: (in category 'api calls') ----- + apiGetComputerNameBuffer: buffer size: bufferSize + "BOOL WINAPI GetComputerNameA( + __out_opt LPSTR lpBuffer, + __out LPDWORD nSize + );" + "https://docs.microsoft.com/en-us/windows/desktop/api/winbase/nf-winbase-getu..." + <apicall: ulong 'GetComputerNameA' ( byte* long* ) module: 'Kernel32.dll'> + ^self externalCallFailed!
Item was added: + ----- Method: Win32Utils class>>apiLookupOnComputer:accountName:sidBuffer:cbSidBuffer:referencedDomainNameBuffer:cchReferencedDomainNameBuffer:peUse: (in category 'api calls') ----- + apiLookupOnComputer: computerBuffer accountName: acBuffer sidBuffer: sidBuffer cbSidBuffer: cbSidBuffer referencedDomainNameBuffer: rdnBuffer cchReferencedDomainNameBuffer: cchRdnBuffer peUse: peUse + "BOOL WINAPI LookupAccountNameA( + __in_opt LPCSTR lpSystemName, + __in LPCSTR lpAccountName, + __out_opt PSID Sid, + __out_opt LPDWORD cbSid, + __out LPSTR ReferencedDomainName, + __out LPDWORD cchReferencedDomainName, + __out PSID_NAME_USE peUse + );" + "https://docs.microsoft.com/en-us/windows/desktop/api/winbase/nf-winbase-look..." + <apicall: ulong 'LookupAccountNameA' ( byte* byte* byte* long* byte* long* long* ) module: 'Advapi32.dll'> + ^self externalCallFailed!
Item was added: + ----- Method: Win32Utils class>>getComputerName (in category 'accessing') ----- + getComputerName + " + Win32Utils getComputerName + " + | nm sz | + sz := (ByteArray new: 8). + sz longAt: 1 put: 256 bigEndian: false. + self apiGetComputerNameBuffer: (nm := ByteArray new: 256) size: sz. + ^(nm copyUpTo: 0) asString!
Item was added: + ----- Method: Win32Utils class>>getCurrentUserDomain (in category 'accessing') ----- + getCurrentUserDomain + " + self getCurrentUserDomain + " + | domain dLen peUse sid cbSid | + domain := ByteArray new: 256. + (dLen := ByteArray new: 8) longAt: 1 put: 256 bigEndian: false. + (sid := ByteArray new: 8) longAt: 1 put: 0 bigEndian: false. + (cbSid := ByteArray new: 8) longAt: 1 put: 8 bigEndian: false. + (peUse := ByteArray new: 8) longAt: 1 put: 0 bigEndian: false. + self + apiLookupOnComputer: (self getComputerName) + accountName: (self getCurrentUser) + sidBuffer: sid + cbSidBuffer: cbSid + referencedDomainNameBuffer: domain + cchReferencedDomainNameBuffer: dLen + peUse: peUse. + ((dLen longAt: 1 bigEndian: false) > 256 or: [(cbSid longAt: 1 bigEndian: false) > 8]) ifTrue: [ + domain := ByteArray new: (dLen longAt: 1 bigEndian: false). + sid := ByteArray new: (cbSid longAt: 1 bigEndian: false). + self + apiLookupOnComputer: (self getComputerName) + accountName: (self getCurrentUser) + sidBuffer: sid + cbSidBuffer: cbSid + referencedDomainNameBuffer: domain + cchReferencedDomainNameBuffer: dLen + peUse: peUse. + ]. + ^(domain copyUpTo: 0) asString + !
packages@lists.squeakfoundation.org