2

MacRuby Pointer to typedef structで、で作成されたポインタを逆参照する方法を学びました

x=Pointer.new_with_type
...
==> use x.value, or x[0]

御馳走になります!

今、私は「反対」であると信じていることを学びたいと思っています. この API を使用しようとしています。

OSStatus SecKeychainCopySettings (
   SecKeychainRef keychain,
   SecKeychainSettings *outSettings
);

2 番目のパラメーターはポインターでなければなりません。しかし、キーチェーンの実際の outSettings を開くことができず、デフォルト設定しか取得できません。

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>

何が欠けていますか?

4

1 に答える 1