3

2つのMIDI入力ピンと2つのMIDI出力ピン(レガシー)を公開するミニポートドライバー(IMiniportDMus)を作成しようとしています。WindowsVistaおよびWin7では、midiInXXXおよびmidiOutXXX関数を使用するとこれらのピンが表示されますが、Windows XPでは、1つのmidi入力ピンと1つのmidi出力ピンが表示されます。

これが私のピン記述子配列です:

static PCPIN_DESCRIPTOR MiniportPins[] =
{
    {
    kMaxNumLegacyRenderStreams, kMaxNumLegacyRenderStreams, 0,  // InstanceCount
    NULL,                                                       // AutomationTable
    {                                                           // KsPinDescriptor
        0,                                                      // InterfacesCount
        NULL,                                                   // Interfaces
        0,                                                      // MediumsCount
        NULL,                                                   // Mediums
        SIZEOF_ARRAY(PinDataRangePointersStreamLegacy),         // DataRangesCount
        PinDataRangePointersStreamLegacy,                       // DataRanges
        KSPIN_DATAFLOW_IN,                                      // DataFlow
        KSPIN_COMMUNICATION_SINK,                               // Communication
        (GUID *) &KSCATEGORY_AUDIO,                             // Category
        &KSAUDFNAME_MIDI,                                       // Name
        0                                                       // Reserved
    }
},
{
    kMaxNumCaptureStreams, kMaxNumCaptureStreams, 0,            // InstanceCount
    NULL,                                                       // AutomationTable
    {                                                           // KsPinDescriptor
        0,                                                      // InterfacesCount
        NULL,                                                   // Interfaces
        0,                                                      // MediumsCount
        NULL,                                                   // Mediums
        SIZEOF_ARRAY(PinDataRangePointersStreamLegacy),         // DataRangesCount
        PinDataRangePointersStreamLegacy,                       // DataRanges
        KSPIN_DATAFLOW_OUT,                                     // DataFlow
        KSPIN_COMMUNICATION_SINK,                               // Communication
        (GUID *) &KSCATEGORY_AUDIO,                             // Category
        &KSAUDFNAME_MIDI,                                       // Name
        0                                                       // Reserved
    }
},
{
    kMaxNumLegacyRenderStreams, kMaxNumLegacyRenderStreams, 0,  // InstanceCount
    NULL,                                                       // AutomationTable
    {                                                           // KsPinDescriptor
        0,                                                      // InterfacesCount
        NULL,                                                   // Interfaces
        0,                                                      // MediumsCount
        NULL,                                                   // Mediums
        SIZEOF_ARRAY(PinDataRangePointersStreamLegacy),         // DataRangesCount
        PinDataRangePointersStreamLegacy,                       // DataRanges
        KSPIN_DATAFLOW_IN,                                      // DataFlow
        KSPIN_COMMUNICATION_SINK,                               // Communication
        (GUID *) &KSCATEGORY_AUDIO,                             // Category
        &KSAUDFNAME_MIDI,                                       // Name
        0                                                       // Reserved
    }
},
{
    kMaxNumCaptureStreams, kMaxNumCaptureStreams, 0,            // InstanceCount
    NULL,                                                       // AutomationTable
    {                                                           // KsPinDescriptor
        0,                                                      // InterfacesCount
        NULL,                                                   // Interfaces
        0,                                                      // MediumsCount
        NULL,                                                   // Mediums
        SIZEOF_ARRAY(PinDataRangePointersStreamLegacy),         // DataRangesCount
        PinDataRangePointersStreamLegacy,                       // DataRanges
        KSPIN_DATAFLOW_OUT,                                     // DataFlow
        KSPIN_COMMUNICATION_SINK,                               // Communication
        (GUID *) &KSCATEGORY_AUDIO,                             // Category
        &KSAUDFNAME_MIDI,                                       // Name
        0                                                       // Reserved
    }
}
};

Windows XPが複数のMIDIピンをサポートしている場合、情報が見つかりませんでした。特定のGUIDを定義して登録することで、ピン名も更新しました。

これは既知の問題ですか、それとも私は何か間違ったことをしていますか?

4

0 に答える 0