This Project Has Not Released Any Files
文章にまだまとめていないもの。
・共用体を表現しようとしてLayoutKind::ExplicitとFieldOffsetを用いるときは、charをSystem::Byteにマッピングする。System::Charにするとwchar_tで2バイト使っているので、StructureToPtrで割り当て先不足(HRESULT: 0x8007007A)が発生する。
・「EventWaitHandle」とkernel32の「DeviceIoControl」を組み合わせて使わなくても、ksproxy.axの「KsSynchronousDeviceControl」を呼び出ししても同じ結果を得られた。パフォーマンスはどうだろう??
・MSDNの「FindFile のサンプル」で示されているような構造体の平坦化はしない。StructLayoutを指定している構造体をネストする分にはマーシャリングはきちんとされる。
・VSTiの呼び出し規約はcdecl
・VSTiをロードしたらVSTiのスレッドが生み出されている可能性がある為、effOpenしていなくても、effCloseを呼び出してからアンロードする(VSTi側の造りに依るとは思う)
・プラグインの中には「kVstMax~」の制限に従っていないものもあるので、受けるバッファは大きめで取っておかないといけない(とかどうしようもない)
・AEffectDispatcherProcの戻り値もプラグインによってバラバラなので、戻り値は参考にできない(成功値が0だったり1だったりいろいろ)
・ドライバにメモリブロックを参照させるときは、GlobalAllocで確保して、GlobalLockでスワップさせないようにしなければならない、、、とセオリーで考えていたけども、LocalAlloc(≒bittable型のarrayをpinで止めたモノ)でも動いてしまっている。 考えが16bit時代で止まってしまっているかしら。 しばらくLocalAllocで進めるが、どこかで問題が起きるかもしれないので注意しておく。
・waveOutOpenでコールバックをFUNCTIONにしていて、waveOutWriteからのWOM_DONEがコールバックされた時は、コールバック関数中にwaveOutUnprepareHeaderを呼び出しても大丈夫だが、waveOutResetからのWOM_DONEがコールバックされた時にwaveOutUnprepareHeaderを呼び出すとデッドロックする。 ドライバに依るかもしれないが、そもそもMSDNでも呼び出し禁止になっているので、waveOutUnprepareHeaderはいずれの場合もコールバック関数の外で呼び出さないとダメ。
・構造体のtypedefを継承で置き換えると、System::Runtime::InteropServices::Marshal::SizeOfの返り値が1バイト増える。
次の環境での現象 Microsoft Visual Studio 2010 Version 10.0.30319.1 RTMRel Microsoft .NET Framework Version 4.0.30319 RTMRel
あまりやらないコードなのかもしれないが、必要になったので定義したところ、下記はコンパイルエラーになってしまう。
- ref class A {
- generic<typename OUT>
- System::Tuple<OUT>^ method1(int b) {
- OUT d;
- return gcnew System::Tuple<OUT>(d); // error C2440: 'return' : 'System::Tuple<T1> ^' から 'System::Tuple<T1> ^' に変換できません。
- }
- generic<typename OUT>
- System::Tuple<OUT>^ method2(int b, int c) {
- OUT d;
- return gcnew System::Tuple<OUT>(d); // error C2440: 'return' : 'System::Tuple<T1> ^' から 'System::Tuple<T1> ^' に変換できません。
- }
- };
但し、ジェネリックメソッドを1つだけ定義している場合、
ジェネリックの型指定の数が異なる場合、
ジェネリック関数ではなく、ジェネリッククラスとしている場合はコンパイルが通る。
また、適当なTupleを自前で用意した場合も、コンパイルが通る。
C++/CLIには、structとclass/valueとrefの組み合わせによって、次の特徴が出てくる。
[PageInfo]
LastUpdate: 2013-02-17 20:07:04, ModifiedBy: miria
[License]
Creative Commons 2.1 Attribution
[Permissions]
view:all, edit:members, delete/config:doc editors