2009-06-18 4 views
0

J'ai hérité du code qui implémente et parle à l'interface MSTAPI. Je suis curieux de savoir où les ID de demande sont initialisés (ou s'ils le sont). Par demande ID, je veux dire, par exemple, le paramètre idRequest au LINE_REPLY Message.Où les ID de requête MSTAPI sont-ils initialisés?

La raison pour laquelle je suis curieux est que quand j'ai le TSP et les ID de demande d'affichage du client, je vois ce qui suit comme une séquence typique et les deux parties d'accord sur les chiffres:

66304 
66303 
66286 
66269 
66252 
66235 
... 

La première valeur se traduit par 0x00010300 (ce qui ne signifie rien pour moi, mais est un nombre rond), puis les ID de demande diminuent à partir de là. (À moins que l'ID de la demande ne soit traité en interne comme un entier signé de 2 octets, ce que je suppose est possible.)

Je soupçonne qu'un côté ou l'autre côté est supposé initialiser quelque chose, et n'est pas ou est l'initialiser à quelque chose d'inapproprié.

Est-ce que quelqu'un sait comment l'ID de requête est supposé fonctionner? Est-ce un numéro opaque généré en interne par MSTAPI et fourni à la fois au TSP et au client? Quelqu'un peut-il pointer vers des références qui expliquent cela?

Merci.

Répondre

1

Les ID de demande sont générés en interne par TAPI pour toutes les opérations asynchrones. Lorsque votre programme appelle une fonction TAPI asynchrone comme lineMakeCall, TAPI renvoie un ID de demande pour cette opération. Le même ID de demande est fourni à TSP dans TSPI_lineMakeCall. Lorsque TSP termine l'opération MakeCall, TSP appelle le rappel CompletionProc avec cet ID de demande, indiquant à TAPI que cette opération est terminée. Après que TAPI envoie le message LINE_REPLY à votre application avec le même ID de demande, vous savez que votre opération lineMakeCall a été effectuée.