Я хотел вызвать следующую функцию из среды OS X DVDPlayback:
OSStatus DVDGetMediaVolumeCFName (
CFStringRef *outDiscVolumeCFName
);
В конце концов, я придумал следующий рабочий код:
framework 'DVDPlayback'
p2 = Pointer.new_with_type('^{__CFString}')
DVDGetMediaVolumeCFName(p2)
Но я не нашел бит '^{__CFString}'
ни в одной документации и только потом узнал, что он на самом деле делает (первоначально я вырезал и вставил его из сообщения об ошибке). Сначала я попробовал Pointer.new как с :id, так и с :string, но безуспешно.
Итак, мои вопросы:
- как лучше всего получить этот указатель (мой путь кажется уродливым)?
- почему не работает Pointer.new(:string)? Я думал, что String, NSString и CFString эквивалентны.
- где бы я искал, чтобы найти эту информацию? (Я проверил сайт MacRuby, «macro Pointer» сообщил «Ничего не известно о Pointer», ~ 12 обращений к Google и «MacRuby: Полное руководство»)