Método IMiniportDMus::NewStream (dmusicks.h)
O NewStream
método cria uma nova instância de um fluxo lógico associado a um canal físico especificado.
Sintaxe
NTSTATUS NewStream(
[out] PMXF *MXF,
[in, optional] PUNKNOWN OuterUnknown,
[in] POOL_TYPE PoolType,
[in] ULONG PinID,
[in] DMUS_STREAM_TYPE StreamType,
[in] PKSDATAFORMAT DataFormat,
[out] PSERVICEGROUP *ServiceGroup,
[in] PAllocatorMXF AllocatorMXF,
[in] PMASTERCLOCK MasterClock,
[out] PULONGLONG SchedulePreFetch
);
Parâmetros
[out] MXF
Ponteiro de saída para o novo fluxo. Esse parâmetro aponta para uma variável de ponteiro alocada pelo chamador na qual o método grava um ponteiro na interface IMXF do objeto de fluxo.
[in, optional] OuterUnknown
Ponteiro para a interface IUnknown de um objeto que precisa agregar o objeto de fluxo. Esse parâmetro é opcional. Se a agregação não for necessária, o chamador especificará esse parâmetro como NULL.
[in] PoolType
Especifica o tipo de pool de memória do qual o armazenamento do objeto de canal DMA deve ser alocado. Esse parâmetro é definido como um dos valores de enumeração POOL_TYPE .
[in] PinID
Especifica a ID do pino. Esse parâmetro identifica o pino que deve ser aberto. Se o método IMiniport::GetDescription do driver de miniport do DMus gerar um descritor de filtro que especifica um total de n fábricas de pinos no filtro, as IDs de pino válidas estarão no intervalo de 0 a n-1.
[in] StreamType
Especifica o tipo de fluxo de dados a ser criado. Esse parâmetro é definido como um dos seguintes valores de enumeração DMUS_STREAM_TYPE:
DMUS_STREAM_MIDI_RENDER
Especifica um fluxo de saída MIDI (reprodução).
DMUS_STREAM_MIDI_CAPTURE
Especifica um fluxo de entrada MIDI.
DMUS_STREAM_WAVE_SINK
Especifica um fluxo de saída de onda.
Para obter mais informações, consulte a seção Comentários a seguir.
[in] DataFormat
Ponteiro para uma estrutura KSDATAFORMAT de streaming de kernel especificando o formato de dados a ser usado para essa instância
[out] ServiceGroup
Ponteiro de saída para o grupo de serviços. Esse parâmetro aponta para uma variável de ponteiro alocada pelo chamador na qual o método grava um ponteiro na interface IServiceGroup do objeto do grupo de serviços do fluxo. Esse é o grupo de serviços que está sendo registrado para notificação de interrupção.
[in] AllocatorMXF
Ponteiro para um objeto IAllocatorMXF . Esse é o alocador de memória do driver de porta, que é necessário para reciclar DMUS_KERNEL_EVENT estruturas.
[in] MasterClock
Ponteiro para um objeto IMasterClock . Este master relógio passa um wrapper para o relógio KS para o driver de miniporto. O ponteiro do relógio master é necessário para sincronizar com o tempo de referência.
[out] SchedulePreFetch
Ponteiro de saída para o tempo de pré-busca de agendamento. Esse parâmetro é um ponteiro para uma variável ULONGLONG alocada pelo chamador na qual o método grava um valor de tempo que especifica o quão adiantado consultar eventos. A hora é especificada em unidades de 100 nanossegundos. O driver de porta é responsável por sequenciar todos os eventos que excedem o tempo especificado pelo driver de miniporta aqui.
Retornar valor
NewStream
retornará S_OK se a chamada tiver sido bem-sucedida. Caso contrário, o método retornará um código de erro apropriado.
Comentários
Observe que o driver de porta cria o objeto IAllocatorMXF que o NewStream
método inseriu por meio do parâmetro pAllocatorMXF , mas o driver de miniporto cria o objeto IMXF que o método gera por meio do parâmetro ppMXF . Para obter mais informações sobre IMXF e IAllocatorMXF, consulte Transporte MIDI.
O significado do IMiniportDMus::NewStream
parâmetro StreamType do método é semelhante ao do parâmetro Capture do método IMiniportMidi::NewStream:
- Ao criar um fluxo em um pino MIDI, o parâmetro Capture do método IMiniportMidi::NewStream indica se o pino deve servir como coletor para um fluxo de renderização MIDI (Capture = FALSE) ou como a origem de um fluxo de captura MIDI (Capture = TRUE).
-
Da mesma forma, ao criar um fluxo em um pino MIDI ou DirectMusic, o
IMiniportDMus::NewStream
parâmetro StreamType do método pode indicar se o pino deve servir como o coletor para um fluxo de renderização MIDI (StreamType = DMUS_STREAM_MIDI_RENDER) ou como a origem de um fluxo de captura MIDI (StreamType = DMUS_STREAM_MIDI_CAPTURE).
IMiniportDMus::NewStream
do parâmetro de saída ppMXF do método) para sua interface ISynthSinkDMus . O coletor de ondas do driver de porta chama o método Render nessa interface para efetuar pull de dados de onda do sintetizador de software. Para obter mais informações, consulte Um coletor de ondas para sintetizadores de software Kernel-Mode.
Os parâmetros ppMXF, pOuterUnknown, ppServiceGroup, pAllocatorMXF e pMasterClock seguem as convenções de contagem de referência para objetos COM.
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Área de Trabalho |
Cabeçalho | dmusicks.h (inclua Dmusicks.h) |
IRQL | PASSIVE_LEVEL |