Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

50 lines
1.7 KiB

  1. /*****************************************************************************\
  2. FILE: AutoDiscoveryUI.h
  3. DESCRIPTION:
  4. This is AutoDiscovery progress UI for the Outlook Express's email
  5. configuration wizard.
  6. BryanSt 1/18/2000
  7. Copyright (C) Microsoft Corp 2000-2000. All rights reserved.
  8. \*****************************************************************************/
  9. #ifndef FILE_AUTODISCOVERY_H
  10. #define FILE_AUTODISCOVERY_H
  11. // IID_PPV_ARG(IType, ppType)
  12. // IType is the type of pType
  13. // ppType is the variable of type IType that will be filled
  14. //
  15. // RESULTS in: IID_IType, ppvType
  16. // will create a compiler error if wrong level of indirection is used.
  17. //
  18. // macro for QueryInterface and related functions
  19. // that require a IID and a (void **)
  20. // this will insure that the cast is safe and appropriate on C++
  21. //
  22. // IID_PPV_ARG_NULL(IType, ppType)
  23. //
  24. // Just like IID_PPV_ARG, except that it sticks a NULL between the
  25. // IID and PPV (for IShellFolder::GetUIObjectOf).
  26. //
  27. // IID_X_PPV_ARG(IType, X, ppType)
  28. //
  29. // Just like IID_PPV_ARG, except that it sticks X between the
  30. // IID and PPV (for SHBindToObject).
  31. #ifdef __cplusplus
  32. #define IID_PPV_ARG(IType, ppType) IID_##IType, reinterpret_cast<void**>(static_cast<IType**>(ppType))
  33. #define IID_X_PPV_ARG(IType, X, ppType) IID_##IType, X, reinterpret_cast<void**>(static_cast<IType**>(ppType))
  34. #else
  35. #define IID_PPV_ARG(IType, ppType) &IID_##IType, (void**)(ppType)
  36. #define IID_X_PPV_ARG(IType, X, ppType) &IID_##IType, X, (void**)(ppType)
  37. #endif
  38. #define IID_PPV_ARG_NULL(IType, ppType) IID_X_PPV_ARG(IType, NULL, ppType)
  39. #endif // FILE_AUTODISCOVERY_H