2009-12-31 4 views

Répondre

5

C'est une annotation. En bref,

__success(expr) 

signifie que expr décrit les conditions dans lesquelles une fonction est censée avoir réussi. Pour les fonctions renvoyant HRESULT, cette condition est que la valeur renvoyée (puisque HRESULT est un long) est non négative. Toutes les fonctions renvoyant HRESULT ont cette annotation appliquée à cause de cela typedef.

Probablement beaucoup plus de détails que vous ne voudrez jamais dans MSDN sur SAL Annotations, The Evolution of HRESULT From Win32 et Success and Failure Annotations.

0

L'API Windows utilise ici la magie noire pour créer son propre langage de programmation. Tu devais continuer à creuser.

__success est défini comme:

sal.h:

#define __success(expr)      __inner_success(expr) 

... et inner_success est défini comme:

#define __inner_success(expr) 

... qui est rien. Ainsi, le typedef HRESULT réduit à:

typedef long HRESULT;