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.

83 lines
1.9 KiB

  1. #include <eapp.h>
  2. typedef struct tagHandlerInfo
  3. {
  4. LPWSTR pwzHandler;
  5. DWORD dwId;
  6. CLSID *pClsID;
  7. } HandlerInfo;
  8. HandlerInfo rgKnownHandlers[] =
  9. {
  10. { L"gzip" , 1, (CLSID *) &CLSID_DeCompMimeFilter }
  11. ,{ L"deflate", 2, (CLSID *) &CLSID_DeCompMimeFilter }
  12. ,{ L"Class Install Handler", 3, (CLSID *) &CLSID_ClassInstallFilter }
  13. ,{ L"cdl", 4, (CLSID *) &CLSID_CdlProtocol }
  14. };
  15. //+---------------------------------------------------------------------------
  16. //
  17. // Function: IsKnownHandler
  18. //
  19. // Synopsis: looks up if the Known Handler
  20. //
  21. // Arguments: [wzHandler] --
  22. //
  23. // Returns:
  24. //
  25. // History: 07-17-97 DanpoZ (Danpo Zhang) Created
  26. //
  27. // Notes:
  28. //
  29. //----------------------------------------------------------------------------
  30. DWORD IsKnownHandler(LPCWSTR wzHandler)
  31. {
  32. DWORD dwRet = 0;
  33. int i = 0;
  34. int cSize = sizeof(rgKnownHandlers)/sizeof(HandlerInfo);
  35. for (i = 0; i < cSize; ++i)
  36. {
  37. if (!_wcsicmp(wzHandler, rgKnownHandlers[i].pwzHandler) )
  38. {
  39. dwRet = rgKnownHandlers[i].dwId;
  40. i = cSize;
  41. }
  42. }
  43. return dwRet;
  44. }
  45. //+---------------------------------------------------------------------------
  46. //
  47. // Function: GetKnownHandlerClsID
  48. //
  49. // Synopsis:
  50. //
  51. // Arguments: [dwId] --
  52. //
  53. // Returns:
  54. //
  55. // History: 07-17-1997 DanpoZ (Danpo Zhang) Created
  56. //
  57. // Notes:
  58. //
  59. //----------------------------------------------------------------------------
  60. CLSID *GetKnownHandlerClsID(DWORD dwId)
  61. {
  62. CLSID *pclsid = 0;
  63. int cSize = sizeof(rgKnownHandlers)/sizeof(HandlerInfo);
  64. for (int i = 0; i < cSize; ++i)
  65. {
  66. if (dwId == rgKnownHandlers[i].dwId )
  67. {
  68. pclsid = rgKnownHandlers[i].pClsID;
  69. i = cSize;
  70. }
  71. }
  72. return pclsid;
  73. }