Source code of Windows XP (NT5)
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.

125 lines
2.7 KiB

  1. $INPUT$win30api$END$
  2. $SELECT$$IFN:dll:$$END$
  3. $OUTPUT$$IFN:file:$t$DATA:file$.c$ELSE$t$DATA:dll$.c$ENDIF$$END$
  4. $HEADER
  5. $TEMPLATE
  6. ULONG W32$DATA:API$(VPVOID vpFrame)
  7. {
  8. $IFE:params:void
  9. $IFN:type:void$ ULONG ul;
  10. $ENDIF
  11. $ELSE
  12. $IFN:type:void$ ULONG ul = 0;
  13. $ENDIF
  14. $LOOP:paramdir
  15. $IFE:paramdir*:IN
  16. $IFE:params*:LPSTR
  17. int cb$COUNT$; PSZ psz$COUNT$ = NULL;
  18. $ELSEIFIN:params*:LP:LPz
  19. $DATA:params*$ t$COUNT$;
  20. $ENDIF
  21. $ELSEIFE:paramdir*:IN OUT
  22. $IFE:params*:LPSTR
  23. int cb$COUNT$; PSZ psz$COUNT$ = NULL;
  24. $ELSEIFIN:params*:LP:LPz
  25. $DATA:params*$ t$COUNT$;
  26. $ENDIF
  27. $ELSEIFE:paramdir*:DESTROY IN
  28. $IFE:params*:LPSTR
  29. int cb$COUNT$; PSZ psz$COUNT$ = NULL;
  30. $ELSEIFIN:params*:LP:LPz
  31. $DATA:params*$ t$COUNT$;
  32. $ENDIF
  33. $ELSEIFE:paramdir*:OUT
  34. $IFE:params*:LPSTR
  35. PSZ psz$COUNT$ = NULL;
  36. $ELSEIFIN:params*:LP:LPz
  37. $DATA:params*$ t$COUNT$;
  38. $ENDIF
  39. $ENDIF
  40. $ENDLOOP
  41. register P$DATA:API$16 parg16;
  42. GETARGPTR(vpFrame, sizeof($DATA:API$16), parg16);
  43. $LOOP:paramdir
  44. $IFE:params*:LPSTR
  45. $IFE:paramdir*:IN
  46. GETPSZPTR(parg16->f$COUNT$, &cb$COUNT$, psz$COUNT$);
  47. $ELSEIFE:paramdir*:IN OUT
  48. GETPSZPTR(parg16->f$COUNT$, &cb$COUNT$, psz$COUNT$);
  49. $ELSEIFE:paramdir*:DESTROY IN
  50. GETPSZPTR(parg16->f$COUNT$, &cb$COUNT$, psz$COUNT$);
  51. $ELSEIFE:paramdir*:OUT
  52. GETPSZPTR(parg16->f$COUNT$, cb$COUNT$, psz$COUNT$);
  53. $ENDIF
  54. $ELSEIFIN:params*:LP:LPz
  55. $IFE:paramdir*:IN
  56. GET$DATA:params*$16(parg16->f$COUNT$, &t$COUNT$);
  57. $ELSEIFE:paramdir*:IN OUT
  58. GET$DATA:params*$16(parg16->f$COUNT$, &t$COUNT$);
  59. $ELSEIFE:paramdir*:DESTROY IN
  60. GET$DATA:params*$16(parg16->f$COUNT$, &t$COUNT$);
  61. $ENDIF
  62. $ENDIF
  63. $ENDLOOP
  64. $ENDIF
  65. $IFE:params:void
  66. $IFN:type:void$ul = GET$DATA:type$16($ENDIF$$DATA:API$();
  67. $ELSE
  68. $IFN:type:void$ul = GET$DATA:type$16($ENDIF$$DATA:API$($LOOP:params
  69. $IFE:params*:LPSTR
  70. psz$COUNT
  71. $ELSEIFIN:params*:LP:LPz
  72. &t$COUNT
  73. $ELSEIFOUT:params*:LP:LPz
  74. $IFN:params*:void
  75. $DATA:params*$32(parg16->f$COUNT$)$ENDIF
  76. $ENDIF
  77. $ENDLOOP:,$
  78. $IFN:type:void$)$ENDIF$);
  79. $ENDIF
  80. $IFN:params:void
  81. $LOOP:paramdir
  82. $IFE:params*:LPSTR
  83. $IFE:paramdir*:OUT
  84. FLUSHPSZPTR(parg16->f$COUNT$, cb$COUNT$, psz$COUNT$);
  85. $ELSEIFE:paramdir*:IN OUT
  86. FLUSHPSZPTR(parg16->f$COUNT$, cb$COUNT$, psz$COUNT$);
  87. $ENDIF
  88. $ELSEIFIN:params*:LP:LPz
  89. $IFE:paramdir*:OUT
  90. PUT$DATA:params*$16(parg16->f$COUNT$, &t$COUNT$);
  91. $ELSEIFE:paramdir*:IN OUT
  92. PUT$DATA:params*$16(parg16->f$COUNT$, &t$COUNT$);
  93. $ENDIF
  94. $ENDIF
  95. $ENDLOOP
  96. Error:
  97. $LOOP:paramdir
  98. $IFE:paramdir*:IN
  99. $IFE:params*:LPSTR
  100. FREEPSZPTR(psz$COUNT$);
  101. $ENDIF
  102. $ELSEIFE:paramdir*:IN OUT
  103. $IFE:params*:LPSTR
  104. FREEPSZPTR(psz$COUNT$);
  105. $ENDIF
  106. $ELSEIFE:paramdir*:DESTROY IN
  107. $IFE:params*:LPSTR
  108. FREEPSZPTR(psz$COUNT$);
  109. $ENDIF
  110. $ENDIF
  111. $ENDLOOP
  112. FREEARGPTR(parg16);
  113. $ENDIF
  114. $IFN:type:void$ return ul;
  115. $ELSE$ return 0;
  116. $ENDIF
  117. }