Partilhar via


Função llMulDiv

[O recurso associado a esta página, DirectShow, é um recurso herdado. Ele foi substituído por MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo na Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo no Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

A llMulDiv função implementa a fórmula ((a*b)+rnd)/c em que cada termo é um valor de 64 bits.

Carimbos de data/hora e tempos de busca são valores de 64 bits, portanto, essa função é útil para executar conversões em sistemas de 32 bits. Por exemplo, a fórmula para bytes por segundo é

(Number of Bytes * Reference Time) / 10,000,000

que pode ser calculado como llMulDiv(nBytes, rtTime, 10000000, 0). Use o parâmetro rnd como um fator de arredondamento.

Sintaxe

LONGLONG WINAPI Int64x32Div32(
   LONGLONG a,
   LONGLONG b,
   LONGLONG c,
   LONGLONG rnd
);

Parâmetros

a

Multiplicando.

b

Multiplicador.

c

Divisor.

Rnd

Fator de arredondamento.

Retornar valor

Retorna o (a * b + rnd)/c cálculo ou um dos valores a seguir.

Código de retorno Descrição
0x7FFFFFFFFFFFFFFF
Estouro ocorreu porque o resultado é muito grande (positivo).
0x8000000000000000
O estouro ocorreu porque o resultado é muito grande (negativo).

 

Comentários

Arredondar na divisão é em direção a zero. A divisão por zero é contada como uma condição de estouro.

Requisitos

Requisito Valor
parâmetro
Wxutil.h (inclua Streams.h)
Biblioteca
Strmbase.lib (builds de varejo);
Strmbasd.lib (builds de depuração)

Confira também

Funções auxiliares diversas

Int64x32Div32