OS X の DVDPlayback フレームワークから次の関数を呼び出したいと思いました。
OSStatus DVDGetMediaVolumeCFName (
CFStringRef *outDiscVolumeCFName
);
最終的に、次の作業コードを思いつきました。
framework 'DVDPlayback'
p2 = Pointer.new_with_type('^{__CFString}')
DVDGetMediaVolumeCFName(p2)
しかし、私は'^{__CFString}'
どのドキュメントにもそのビットを見つけられず、後でそれが実際に何をしているのかを見つけただけでした (最初はエラーメッセージから切り取って貼り付けました)。私は最初に :id と :string の両方で Pointer.new を試しましたが、成功しませんでした。
だから私の質問は:
- このポインターを取得する最良の方法は何ですか (私の方法は醜いようです)?
- Pointer.new(:string) が機能しなかったのはなぜですか? String、NSString、およびCFStringは同等だと思いました
- この情報を見つけるためにどこを見たでしょうか?(MacRuby のサイトをチェックしたところ、「マクロ ポインター」は「ポインターについて何も知られていない」と報告され、Google で 12 件のヒットがあり、「MacRuby: The Definitive Guide」が報告されていました)