2011-10-10 2 views
2

Je développe un service qui fonctionnera en tant que système et traitera les tâches de longue durée en arrière-plan. J'ai maintenant besoin d'afficher des commentaires à l'utilisateur sous la forme d'une icône de la barre des tâches et je voudrais aussi pouvoir mettre en pause/reprendre les tâches depuis l'icône de la barre des tâches, donc mon besoin est d'envoyer un message bloc de données de longueur en réponse. Une seule demande/réponse serait bien, mais elle doit fonctionner dans les deux sens.Options pour la communication de service Windows

Ceci utilise C++ (non-MFC) dans Windows. J'ai regardé MIDL/RPC comme je l'ai utilisé dans le passé, mais je dois d'abord définir une spécification d'interface rigide et ne peux pas renvoyer de données de longueur arbitraire (pour autant que je sache).

Y a-t-il des suggestions pour une bibliothèque que je pourrais utiliser pour cela?

Merci, J

+0

Habituellement, vous ouvrez un tuyau et communiquez à travers cela. – avakar

Répondre

2

COM est la meilleure solution pour RPC en les fenêtres. C'est très puissant et facile à écrire. MS-RPC brut est bon aussi. Avec les deux, vous pouvez retourner des données de longueur arbitraires, voir l'attribut size_is MIDL:

HRESULT Proc7(
    [out] long * pSize, 
    [out, size_is(, *pSize)] my_type ** ppMyType); /* Specifies a pointer 
               to a sized pointer, 
               which points to a block 
               of my_types, whose size is 
               unknown when the stub 
               calls the server. */ 
1

Vous pouvez utiliser l'une des options suivantes:

  • TCP/IP
  • UDP
  • pipe
  • mémoire partagée (ie fichier mappé en mémoire)

EDIT - comme par commentaire:

Certaines solutions mémoire partagée, y compris le code source:

+0

Merci pour la réponse, mais je suis idéalement à la recherche d'une bibliothèque qui peut gérer les complexités plutôt que de rouler les miennes. – JWood

+0

s'il vous plaît voir mon EDIT ci-dessus ... – Yahia

Questions connexes