На MacRuby Pointer to typedef struct, я узнал, как разыменования указателя, созданный сMacRuby указатель, ссылки, разыменования при использовании какао рамочных
x=Pointer.new_with_type
...
==> use x.value, or x[0]
Работает лакомство!
Теперь я хочу узнать, что я считаю «противоположным». Я пытаюсь использовать этот API.
OSStatus SecKeychainCopySettings (
SecKeychainRef keychain,
SecKeychainSettings *outSettings
);
Второй параметр должен быть указателем. Но мне никогда не удается получить реальные outSettings из keychain, но я получаю настройки по умолчанию.
framework 'Security'
keychainObject = Pointer.new_with_type('^{OpaqueSecKeychainRef}')
SecKeychainOpen("/Users/charbon/Library/Keychains/Josja.keychain",keychainObject)
#attempt #1
settings=Pointer.new_with_type('{SecKeychainSettings=IBBI}')
SecKeychainCopySettings(keychainObject.value, settings)
p settings.value
#<SecKeychainSettings version=0 lockOnSleep=false useLockInterval=false lockInterval=0>
#attempt #2
settings2=SecKeychainSettings.new
result = SecKeychainCopySettings(keychainObject.value, settings2)
p settings2
#<SecKeychainSettings version=0 lockOnSleep=false useLockInterval=false lockInterval=0>
Уставки брелка открыл следует читать
#<SecKeychainSettings version=0 lockOnSleep=true useLockInterval=true lockInterval=1800>
Что мне не хватает?