Dans la documentation WSARecv()
, il dit:Que signifie l'information de contexte lorsque l'on parle d'E/S superposées?
Si lpCompletionRoutine est NULL, le paramètre est ignoré hEvent et peut être utilisé par l'application pour transmettre des informations de contexte à la routine d'achèvement .
Que signifie "information de contexte"? Je pense que cela signifie que j'associe généralement une structure de données avec chaque socket, qui peut contenir des membres tels que le handle de socket et le tampon de réception. Et donc quand j'appelle WSARecv()
je lui passerai un pointeur vers une instance de cette structure de données, et quand je serai averti qu'une opération de réception est terminée, j'obtiendrai le pointeur que j'ai passé plus tôt, et ainsi je saurai quelle socket a initié l'opération de réception, et qu'est ce que le tampon de réception, etc.
Est-ce que ma compréhension est correcte?
C'est fondamentalement correct. Le contexte est une information définie par l'application (généralement un pointeur vers une structure personnalisée) qui peut être utilisée par le rappel pour effectuer son opération. Vous trouverez ce schéma dans l'API Windows, par ex. le paramètre 'lpParam' dans un appel à [CreateWindow] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms632679.aspx). Cela peut également être utilisé par une application pour transférer des informations supplémentaires à un destinataire. – IInspectable