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.

1482 lines
41 KiB

  1. /*
  2. * This file is generated by the automatic RPC Parser generator. (Version 0.21)
  3. *
  4. * Created on 04/09/97 at 00:00:13.
  5. */
  6. #include <stdio.h>
  7. #include "funcs.h"
  8. /*
  9. * The following functions are generated by default and used by
  10. * the AttachProperties functions below.
  11. */
  12. void WINAPIV GenericFormatSummary(LPPROPERTYINST lpPropertyInst)
  13. {
  14. DWORD Data = lpPropertyInst->lpPropertyInstEx->Dword[0];
  15. BOOL fIsRequest = ((Data & 0x80000000) != 0);
  16. WORD nProcedure = (WORD)(Data & 0xffff);
  17. WORD nInterface = ((WORD)(Data & 0x7fff) >> 16);
  18. wsprintf(lpPropertyInst->szPropertyText, "RPC %s %s:%s(..)",
  19. (fIsRequest)?"Client call":"Server response",
  20. InterfaceNames[nInterface],
  21. ProcedureNames[ProcedureNameIndex[nInterface] + nProcedure - FirstProcedureNumber[nInterface]]);
  22. }
  23. void GenericAttachByte(HPROPERTY hProperty,
  24. HFRAME hFrame,
  25. LPBYTE lpData,
  26. DWORD IndentLevel)
  27. {
  28. if (IndentLevel > 14) IndentLevel = 14;
  29. AttachPropertyInstance(hFrame,
  30. hProperty,
  31. sizeof(BYTE),
  32. lpData,
  33. 0, IndentLevel, 0);
  34. }
  35. void GenericAttachWord(HPROPERTY hProperty,
  36. HFRAME hFrame,
  37. LPBYTE lpData,
  38. DWORD IndentLevel)
  39. {
  40. if (IndentLevel > 14) IndentLevel = 14;
  41. AttachPropertyInstance(hFrame,
  42. hProperty,
  43. sizeof(WORD),
  44. lpData,
  45. 0, IndentLevel,
  46. (fIsFlipped)?IFLAG_SWAPPED:0);
  47. }
  48. void GenericAttachDword(HPROPERTY hProperty,
  49. HFRAME hFrame,
  50. LPBYTE lpData,
  51. DWORD IndentLevel)
  52. {
  53. if (IndentLevel > 14) IndentLevel = 14;
  54. AttachPropertyInstance(hFrame,
  55. hProperty,
  56. sizeof(DWORD),
  57. lpData,
  58. 0, IndentLevel,
  59. (fIsFlipped)?IFLAG_SWAPPED:0);
  60. }
  61. void GenericAttachLargeint(HPROPERTY hProperty,
  62. HFRAME hFrame,
  63. LPBYTE lpData,
  64. DWORD IndentLevel)
  65. {
  66. if (IndentLevel > 14) IndentLevel = 14;
  67. AttachPropertyInstance(hFrame,
  68. hProperty,
  69. 8,
  70. lpData,
  71. 0, IndentLevel,
  72. (fIsFlipped)?IFLAG_SWAPPED:0);
  73. }
  74. void GenericAttachString(HPROPERTY hProperty,
  75. HFRAME hFrame,
  76. LPBYTE lpData,
  77. DWORD nLength,
  78. DWORD IndentLevel)
  79. {
  80. if (IndentLevel > 14) IndentLevel = 14;
  81. AttachPropertyInstance(hFrame,
  82. hProperty,
  83. nLength,
  84. lpData,
  85. 0, IndentLevel, 0);
  86. }
  87. void GenericAttachUnicodeString(HPROPERTY hProperty,
  88. HFRAME hFrame,
  89. LPBYTE lpData,
  90. DWORD nLength,
  91. DWORD IndentLevel)
  92. {
  93. TYPED_STRING ts;
  94. ts.StringType = TYPED_STRING_UNICODE;
  95. ts.lpString = lpData;
  96. if (IndentLevel > 14) IndentLevel = 14;
  97. if (nLength)
  98. AttachPropertyInstanceEx(hFrame,
  99. hProperty,
  100. nLength,
  101. lpData,
  102. nLength,
  103. &ts,
  104. 0, IndentLevel, 0);
  105. }
  106. void GenericAttachAnything(HPROPERTY hProperty,
  107. HFRAME hFrame,
  108. LPBYTE lpData,
  109. DWORD nLength,
  110. DWORD IndentLevel)
  111. {
  112. if (IndentLevel > 14) IndentLevel = 14;
  113. AttachPropertyInstance(hFrame,
  114. hProperty,
  115. nLength,
  116. lpData,
  117. 0, IndentLevel, 0);
  118. }
  119. void GenericAttachStruct(HPROPERTY hProperty,
  120. HFRAME hFrame,
  121. LPBYTE lpData,
  122. DWORD nLength,
  123. DWORD IndentLevel)
  124. {
  125. if (IndentLevel > 14) IndentLevel = 14;
  126. AttachPropertyInstance(hFrame,
  127. hProperty,
  128. nLength,
  129. lpData,
  130. 0, IndentLevel, 0);
  131. }
  132. void GenericAttachID(HPROPERTY hProperty,
  133. HFRAME hFrame,
  134. LPBYTE lpData,
  135. DWORD IndentLevel)
  136. {
  137. if (IndentLevel > 14) IndentLevel = 14;
  138. AttachPropertyInstance(hFrame,
  139. hProperty,
  140. 16,
  141. lpData,
  142. 0, IndentLevel, 0);
  143. }
  144. DWORD WINAPI resmon_RmCreateResource_AttachProperties(
  145. HFRAME hFrame,
  146. LPBYTE lpData,
  147. DWORD FrameLength,
  148. DWORD nCurrentInterface,
  149. DWORD InstData)
  150. {
  151. /* Decompose the InstData information. */
  152. BOOL fIsRequest = ((InstData & 0x80000000) != 0);
  153. WORD Version = ((WORD)(InstData >> 16) & 0x3fff);
  154. BOOL fExtensions = 0;
  155. DWORD nOffset = 0;
  156. /* These are specifically for calling handler functions */
  157. DWORD PointerDataOffset = nOffset;
  158. DWORD *lpdwPointerDataOffset = &PointerDataOffset;
  159. fIsFlipped = ((InstData & 0x40000000) != 0);
  160. nCurrentInterface = (nCurrentInterface & 0x7fff) << 16;
  161. InstData &= 0x8000ffff;
  162. InstData |= nCurrentInterface;
  163. AttachPropertyInstanceEx(hFrame,
  164. resmon_Database[I0_SUMMARY].hProperty,
  165. FrameLength, lpData, sizeof(DWORD), &InstData, 0, 0, 0);
  166. /* Take different action based on the direction */
  167. /* If fIsRequest is TRUE, the packet originated from the client. */
  168. if (fIsRequest)
  169. {
  170. fConformanceIsSet = FALSE;
  171. nOffset = DllName_Handler_0(hFrame, lpData, nOffset, FrameLength, lpdwPointerDataOffset);
  172. if (*lpdwPointerDataOffset > nOffset) nOffset = *lpdwPointerDataOffset;
  173. if ((*lpdwPointerDataOffset == 0xffffffff) ||
  174. (*lpdwPointerDataOffset > FrameLength))
  175. nOffset = FrameLength;
  176. fConformanceIsSet = FALSE;
  177. nOffset = ResourceType_Handler_1(hFrame, lpData, nOffset, FrameLength, lpdwPointerDataOffset);
  178. if (*lpdwPointerDataOffset > nOffset) nOffset = *lpdwPointerDataOffset;
  179. if ((*lpdwPointerDataOffset == 0xffffffff) ||
  180. (*lpdwPointerDataOffset > FrameLength))
  181. nOffset = FrameLength;
  182. fConformanceIsSet = FALSE;
  183. nOffset = ResourceName_Handler_2(hFrame, lpData, nOffset, FrameLength, lpdwPointerDataOffset);
  184. if (*lpdwPointerDataOffset > nOffset) nOffset = *lpdwPointerDataOffset;
  185. if ((*lpdwPointerDataOffset == 0xffffffff) ||
  186. (*lpdwPointerDataOffset > FrameLength))
  187. nOffset = FrameLength;
  188. ALIGN(nOffset, 3);
  189. if ((nOffset+4) > FrameLength) return(FrameLength);
  190. GenericAttachDword(resmon_Database[I0_DWORD_LOOKSALIVEPOLL_3].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
  191. nOffset += 4;
  192. ALIGN(nOffset, 3);
  193. if ((nOffset+4) > FrameLength) return(FrameLength);
  194. GenericAttachDword(resmon_Database[I0_DWORD_ISALIVEPOLL_4].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
  195. nOffset += 4;
  196. ALIGN(nOffset, 3);
  197. if ((nOffset+4) > FrameLength) return(FrameLength);
  198. GenericAttachDword(resmon_Database[I0_DWORD_NOTIFYKEY_5].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
  199. nOffset += 4;
  200. ALIGN(nOffset, 3);
  201. if ((nOffset+4) > FrameLength) return(FrameLength);
  202. GenericAttachDword(resmon_Database[I0_DWORD_PENDINGTIMEOUT_6].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
  203. nOffset += 4;
  204. }
  205. else
  206. {
  207. fConformanceIsSet = FALSE;
  208. nOffset = Value_Handler_3(hFrame, lpData, nOffset, FrameLength, lpdwPointerDataOffset);
  209. if (*lpdwPointerDataOffset > nOffset) nOffset = *lpdwPointerDataOffset;
  210. if ((*lpdwPointerDataOffset == 0xffffffff) ||
  211. (*lpdwPointerDataOffset > FrameLength))
  212. nOffset = FrameLength;
  213. }
  214. return(nOffset);
  215. }
  216. DWORD WINAPI resmon_RmCloseResource_AttachProperties(
  217. HFRAME hFrame,
  218. LPBYTE lpData,
  219. DWORD FrameLength,
  220. DWORD nCurrentInterface,
  221. DWORD InstData)
  222. {
  223. /* Decompose the InstData information. */
  224. BOOL fIsRequest = ((InstData & 0x80000000) != 0);
  225. WORD Version = ((WORD)(InstData >> 16) & 0x3fff);
  226. BOOL fExtensions = 0;
  227. DWORD nOffset = 0;
  228. /* These are specifically for calling handler functions */
  229. DWORD PointerDataOffset = nOffset;
  230. DWORD *lpdwPointerDataOffset = &PointerDataOffset;
  231. fIsFlipped = ((InstData & 0x40000000) != 0);
  232. nCurrentInterface = (nCurrentInterface & 0x7fff) << 16;
  233. InstData &= 0x8000ffff;
  234. InstData |= nCurrentInterface;
  235. AttachPropertyInstanceEx(hFrame,
  236. resmon_Database[I0_SUMMARY].hProperty,
  237. FrameLength, lpData, sizeof(DWORD), &InstData, 0, 0, 0);
  238. /* Take different action based on the direction */
  239. /* If fIsRequest is TRUE, the packet originated from the client. */
  240. if (fIsRequest)
  241. {
  242. fConformanceIsSet = FALSE;
  243. nOffset = ResourceId_Handler_4(hFrame, lpData, nOffset, FrameLength, lpdwPointerDataOffset);
  244. if (*lpdwPointerDataOffset > nOffset) nOffset = *lpdwPointerDataOffset;
  245. if ((*lpdwPointerDataOffset == 0xffffffff) ||
  246. (*lpdwPointerDataOffset > FrameLength))
  247. nOffset = FrameLength;
  248. }
  249. else
  250. {
  251. fConformanceIsSet = FALSE;
  252. nOffset = ResourceId_Handler_4(hFrame, lpData, nOffset, FrameLength, lpdwPointerDataOffset);
  253. if (*lpdwPointerDataOffset > nOffset) nOffset = *lpdwPointerDataOffset;
  254. if ((*lpdwPointerDataOffset == 0xffffffff) ||
  255. (*lpdwPointerDataOffset > FrameLength))
  256. nOffset = FrameLength;
  257. }
  258. return(nOffset);
  259. }
  260. DWORD WINAPI resmon_RmChangeResourceParams_AttachProperties(
  261. HFRAME hFrame,
  262. LPBYTE lpData,
  263. DWORD FrameLength,
  264. DWORD nCurrentInterface,
  265. DWORD InstData)
  266. {
  267. /* Decompose the InstData information. */
  268. BOOL fIsRequest = ((InstData & 0x80000000) != 0);
  269. WORD Version = ((WORD)(InstData >> 16) & 0x3fff);
  270. BOOL fExtensions = 0;
  271. DWORD nOffset = 0;
  272. /* These are specifically for calling handler functions */
  273. DWORD PointerDataOffset = nOffset;
  274. DWORD *lpdwPointerDataOffset = &PointerDataOffset;
  275. fIsFlipped = ((InstData & 0x40000000) != 0);
  276. nCurrentInterface = (nCurrentInterface & 0x7fff) << 16;
  277. InstData &= 0x8000ffff;
  278. InstData |= nCurrentInterface;
  279. AttachPropertyInstanceEx(hFrame,
  280. resmon_Database[I0_SUMMARY].hProperty,
  281. FrameLength, lpData, sizeof(DWORD), &InstData, 0, 0, 0);
  282. /* Take different action based on the direction */
  283. /* If fIsRequest is TRUE, the packet originated from the client. */
  284. if (fIsRequest)
  285. {
  286. fConformanceIsSet = FALSE;
  287. nOffset = ResourceId_Handler_5(hFrame, lpData, nOffset, FrameLength, lpdwPointerDataOffset);
  288. if (*lpdwPointerDataOffset > nOffset) nOffset = *lpdwPointerDataOffset;
  289. if ((*lpdwPointerDataOffset == 0xffffffff) ||
  290. (*lpdwPointerDataOffset > FrameLength))
  291. nOffset = FrameLength;
  292. ALIGN(nOffset, 3);
  293. if ((nOffset+4) > FrameLength) return(FrameLength);
  294. GenericAttachDword(resmon_Database[I0_DWORD_LOOKSALIVEPOLL_3].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
  295. nOffset += 4;
  296. ALIGN(nOffset, 3);
  297. if ((nOffset+4) > FrameLength) return(FrameLength);
  298. GenericAttachDword(resmon_Database[I0_DWORD_ISALIVEPOLL_4].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
  299. nOffset += 4;
  300. ALIGN(nOffset, 3);
  301. if ((nOffset+4) > FrameLength) return(FrameLength);
  302. GenericAttachDword(resmon_Database[I0_DWORD_PENDINGTIMEOUT_6].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
  303. nOffset += 4;
  304. }
  305. else
  306. {
  307. ALIGN(nOffset, 3);
  308. if ((nOffset+4) > FrameLength) return(FrameLength);
  309. GenericAttachDword(resmon_Database[I0_RETURN_VALUE_9].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
  310. nOffset += 4;
  311. }
  312. return(nOffset);
  313. }
  314. DWORD WINAPI resmon_RmOnlineResource_AttachProperties(
  315. HFRAME hFrame,
  316. LPBYTE lpData,
  317. DWORD FrameLength,
  318. DWORD nCurrentInterface,
  319. DWORD InstData)
  320. {
  321. /* Decompose the InstData information. */
  322. BOOL fIsRequest = ((InstData & 0x80000000) != 0);
  323. WORD Version = ((WORD)(InstData >> 16) & 0x3fff);
  324. BOOL fExtensions = 0;
  325. DWORD nOffset = 0;
  326. /* These are specifically for calling handler functions */
  327. DWORD PointerDataOffset = nOffset;
  328. DWORD *lpdwPointerDataOffset = &PointerDataOffset;
  329. fIsFlipped = ((InstData & 0x40000000) != 0);
  330. nCurrentInterface = (nCurrentInterface & 0x7fff) << 16;
  331. InstData &= 0x8000ffff;
  332. InstData |= nCurrentInterface;
  333. AttachPropertyInstanceEx(hFrame,
  334. resmon_Database[I0_SUMMARY].hProperty,
  335. FrameLength, lpData, sizeof(DWORD), &InstData, 0, 0, 0);
  336. /* Take different action based on the direction */
  337. /* If fIsRequest is TRUE, the packet originated from the client. */
  338. if (fIsRequest)
  339. {
  340. fConformanceIsSet = FALSE;
  341. nOffset = ResourceId_Handler_5(hFrame, lpData, nOffset, FrameLength, lpdwPointerDataOffset);
  342. if (*lpdwPointerDataOffset > nOffset) nOffset = *lpdwPointerDataOffset;
  343. if ((*lpdwPointerDataOffset == 0xffffffff) ||
  344. (*lpdwPointerDataOffset > FrameLength))
  345. nOffset = FrameLength;
  346. }
  347. else
  348. {
  349. ALIGN(nOffset, 3);
  350. if ((nOffset+4) > FrameLength) return(FrameLength);
  351. GenericAttachDword(resmon_Database[I0_DWORD_PDWSTATE_10].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
  352. nOffset += 4;
  353. ALIGN(nOffset, 3);
  354. if ((nOffset+4) > FrameLength) return(FrameLength);
  355. GenericAttachDword(resmon_Database[I0_RETURN_VALUE_9].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
  356. nOffset += 4;
  357. }
  358. return(nOffset);
  359. }
  360. DWORD WINAPI resmon_RmOfflineResource_AttachProperties(
  361. HFRAME hFrame,
  362. LPBYTE lpData,
  363. DWORD FrameLength,
  364. DWORD nCurrentInterface,
  365. DWORD InstData)
  366. {
  367. /* Decompose the InstData information. */
  368. BOOL fIsRequest = ((InstData & 0x80000000) != 0);
  369. WORD Version = ((WORD)(InstData >> 16) & 0x3fff);
  370. BOOL fExtensions = 0;
  371. DWORD nOffset = 0;
  372. /* These are specifically for calling handler functions */
  373. DWORD PointerDataOffset = nOffset;
  374. DWORD *lpdwPointerDataOffset = &PointerDataOffset;
  375. fIsFlipped = ((InstData & 0x40000000) != 0);
  376. nCurrentInterface = (nCurrentInterface & 0x7fff) << 16;
  377. InstData &= 0x8000ffff;
  378. InstData |= nCurrentInterface;
  379. AttachPropertyInstanceEx(hFrame,
  380. resmon_Database[I0_SUMMARY].hProperty,
  381. FrameLength, lpData, sizeof(DWORD), &InstData, 0, 0, 0);
  382. /* Take different action based on the direction */
  383. /* If fIsRequest is TRUE, the packet originated from the client. */
  384. if (fIsRequest)
  385. {
  386. fConformanceIsSet = FALSE;
  387. nOffset = ResourceId_Handler_5(hFrame, lpData, nOffset, FrameLength, lpdwPointerDataOffset);
  388. if (*lpdwPointerDataOffset > nOffset) nOffset = *lpdwPointerDataOffset;
  389. if ((*lpdwPointerDataOffset == 0xffffffff) ||
  390. (*lpdwPointerDataOffset > FrameLength))
  391. nOffset = FrameLength;
  392. }
  393. else
  394. {
  395. ALIGN(nOffset, 3);
  396. if ((nOffset+4) > FrameLength) return(FrameLength);
  397. GenericAttachDword(resmon_Database[I0_DWORD_PDWSTATE_10].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
  398. nOffset += 4;
  399. ALIGN(nOffset, 3);
  400. if ((nOffset+4) > FrameLength) return(FrameLength);
  401. GenericAttachDword(resmon_Database[I0_RETURN_VALUE_9].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
  402. nOffset += 4;
  403. }
  404. return(nOffset);
  405. }
  406. DWORD WINAPI resmon_RmTerminateResource_AttachProperties(
  407. HFRAME hFrame,
  408. LPBYTE lpData,
  409. DWORD FrameLength,
  410. DWORD nCurrentInterface,
  411. DWORD InstData)
  412. {
  413. /* Decompose the InstData information. */
  414. BOOL fIsRequest = ((InstData & 0x80000000) != 0);
  415. WORD Version = ((WORD)(InstData >> 16) & 0x3fff);
  416. BOOL fExtensions = 0;
  417. DWORD nOffset = 0;
  418. /* These are specifically for calling handler functions */
  419. DWORD PointerDataOffset = nOffset;
  420. DWORD *lpdwPointerDataOffset = &PointerDataOffset;
  421. fIsFlipped = ((InstData & 0x40000000) != 0);
  422. nCurrentInterface = (nCurrentInterface & 0x7fff) << 16;
  423. InstData &= 0x8000ffff;
  424. InstData |= nCurrentInterface;
  425. AttachPropertyInstanceEx(hFrame,
  426. resmon_Database[I0_SUMMARY].hProperty,
  427. FrameLength, lpData, sizeof(DWORD), &InstData, 0, 0, 0);
  428. /* Take different action based on the direction */
  429. /* If fIsRequest is TRUE, the packet originated from the client. */
  430. if (fIsRequest)
  431. {
  432. fConformanceIsSet = FALSE;
  433. nOffset = ResourceId_Handler_5(hFrame, lpData, nOffset, FrameLength, lpdwPointerDataOffset);
  434. if (*lpdwPointerDataOffset > nOffset) nOffset = *lpdwPointerDataOffset;
  435. if ((*lpdwPointerDataOffset == 0xffffffff) ||
  436. (*lpdwPointerDataOffset > FrameLength))
  437. nOffset = FrameLength;
  438. }
  439. else
  440. {
  441. }
  442. return(nOffset);
  443. }
  444. DWORD WINAPI resmon_RmArbitrateResource_AttachProperties(
  445. HFRAME hFrame,
  446. LPBYTE lpData,
  447. DWORD FrameLength,
  448. DWORD nCurrentInterface,
  449. DWORD InstData)
  450. {
  451. /* Decompose the InstData information. */
  452. BOOL fIsRequest = ((InstData & 0x80000000) != 0);
  453. WORD Version = ((WORD)(InstData >> 16) & 0x3fff);
  454. BOOL fExtensions = 0;
  455. DWORD nOffset = 0;
  456. /* These are specifically for calling handler functions */
  457. DWORD PointerDataOffset = nOffset;
  458. DWORD *lpdwPointerDataOffset = &PointerDataOffset;
  459. fIsFlipped = ((InstData & 0x40000000) != 0);
  460. nCurrentInterface = (nCurrentInterface & 0x7fff) << 16;
  461. InstData &= 0x8000ffff;
  462. InstData |= nCurrentInterface;
  463. AttachPropertyInstanceEx(hFrame,
  464. resmon_Database[I0_SUMMARY].hProperty,
  465. FrameLength, lpData, sizeof(DWORD), &InstData, 0, 0, 0);
  466. /* Take different action based on the direction */
  467. /* If fIsRequest is TRUE, the packet originated from the client. */
  468. if (fIsRequest)
  469. {
  470. fConformanceIsSet = FALSE;
  471. nOffset = ResourceId_Handler_5(hFrame, lpData, nOffset, FrameLength, lpdwPointerDataOffset);
  472. if (*lpdwPointerDataOffset > nOffset) nOffset = *lpdwPointerDataOffset;
  473. if ((*lpdwPointerDataOffset == 0xffffffff) ||
  474. (*lpdwPointerDataOffset > FrameLength))
  475. nOffset = FrameLength;
  476. }
  477. else
  478. {
  479. ALIGN(nOffset, 3);
  480. if ((nOffset+4) > FrameLength) return(FrameLength);
  481. GenericAttachDword(resmon_Database[I0_RETURN_VALUE_9].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
  482. nOffset += 4;
  483. }
  484. return(nOffset);
  485. }
  486. DWORD WINAPI resmon_RmReleaseResource_AttachProperties(
  487. HFRAME hFrame,
  488. LPBYTE lpData,
  489. DWORD FrameLength,
  490. DWORD nCurrentInterface,
  491. DWORD InstData)
  492. {
  493. /* Decompose the InstData information. */
  494. BOOL fIsRequest = ((InstData & 0x80000000) != 0);
  495. WORD Version = ((WORD)(InstData >> 16) & 0x3fff);
  496. BOOL fExtensions = 0;
  497. DWORD nOffset = 0;
  498. /* These are specifically for calling handler functions */
  499. DWORD PointerDataOffset = nOffset;
  500. DWORD *lpdwPointerDataOffset = &PointerDataOffset;
  501. fIsFlipped = ((InstData & 0x40000000) != 0);
  502. nCurrentInterface = (nCurrentInterface & 0x7fff) << 16;
  503. InstData &= 0x8000ffff;
  504. InstData |= nCurrentInterface;
  505. AttachPropertyInstanceEx(hFrame,
  506. resmon_Database[I0_SUMMARY].hProperty,
  507. FrameLength, lpData, sizeof(DWORD), &InstData, 0, 0, 0);
  508. /* Take different action based on the direction */
  509. /* If fIsRequest is TRUE, the packet originated from the client. */
  510. if (fIsRequest)
  511. {
  512. fConformanceIsSet = FALSE;
  513. nOffset = ResourceId_Handler_5(hFrame, lpData, nOffset, FrameLength, lpdwPointerDataOffset);
  514. if (*lpdwPointerDataOffset > nOffset) nOffset = *lpdwPointerDataOffset;
  515. if ((*lpdwPointerDataOffset == 0xffffffff) ||
  516. (*lpdwPointerDataOffset > FrameLength))
  517. nOffset = FrameLength;
  518. }
  519. else
  520. {
  521. ALIGN(nOffset, 3);
  522. if ((nOffset+4) > FrameLength) return(FrameLength);
  523. GenericAttachDword(resmon_Database[I0_RETURN_VALUE_9].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
  524. nOffset += 4;
  525. }
  526. return(nOffset);
  527. }
  528. DWORD WINAPI resmon_RmNotifyChanges_AttachProperties(
  529. HFRAME hFrame,
  530. LPBYTE lpData,
  531. DWORD FrameLength,
  532. DWORD nCurrentInterface,
  533. DWORD InstData)
  534. {
  535. /* Decompose the InstData information. */
  536. BOOL fIsRequest = ((InstData & 0x80000000) != 0);
  537. WORD Version = ((WORD)(InstData >> 16) & 0x3fff);
  538. BOOL fExtensions = 0;
  539. DWORD nOffset = 0;
  540. /* These are specifically for calling handler functions */
  541. DWORD PointerDataOffset = nOffset;
  542. DWORD *lpdwPointerDataOffset = &PointerDataOffset;
  543. fIsFlipped = ((InstData & 0x40000000) != 0);
  544. nCurrentInterface = (nCurrentInterface & 0x7fff) << 16;
  545. InstData &= 0x8000ffff;
  546. InstData |= nCurrentInterface;
  547. AttachPropertyInstanceEx(hFrame,
  548. resmon_Database[I0_SUMMARY].hProperty,
  549. FrameLength, lpData, sizeof(DWORD), &InstData, 0, 0, 0);
  550. /* Take different action based on the direction */
  551. /* If fIsRequest is TRUE, the packet originated from the client. */
  552. if (fIsRequest)
  553. {
  554. }
  555. else
  556. {
  557. ALIGN(nOffset, 3);
  558. if ((nOffset+4) > FrameLength) return(FrameLength);
  559. GenericAttachDword(resmon_Database[I0_DWORD_LPNOTIFYKEY_11].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
  560. nOffset += 4;
  561. ALIGN(nOffset, 3);
  562. if ((nOffset+4) > FrameLength) return(FrameLength);
  563. GenericAttachDword(resmon_Database[I0_DWORD_LPNOTIFYEVENT_12].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
  564. nOffset += 4;
  565. ALIGN(nOffset, 3);
  566. if ((nOffset+4) > FrameLength) return(FrameLength);
  567. GenericAttachDword(resmon_Database[I0_DWORD_LPCURRENTSTATE_13].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
  568. nOffset += 4;
  569. ALIGN(nOffset, 3);
  570. if ((nOffset+4) > FrameLength) return(FrameLength);
  571. GenericAttachDword(resmon_Database[I0_RETURN_VALUE_9].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
  572. nOffset += 4;
  573. }
  574. return(nOffset);
  575. }
  576. DWORD WINAPI resmon_RmFailResource_AttachProperties(
  577. HFRAME hFrame,
  578. LPBYTE lpData,
  579. DWORD FrameLength,
  580. DWORD nCurrentInterface,
  581. DWORD InstData)
  582. {
  583. /* Decompose the InstData information. */
  584. BOOL fIsRequest = ((InstData & 0x80000000) != 0);
  585. WORD Version = ((WORD)(InstData >> 16) & 0x3fff);
  586. BOOL fExtensions = 0;
  587. DWORD nOffset = 0;
  588. /* These are specifically for calling handler functions */
  589. DWORD PointerDataOffset = nOffset;
  590. DWORD *lpdwPointerDataOffset = &PointerDataOffset;
  591. fIsFlipped = ((InstData & 0x40000000) != 0);
  592. nCurrentInterface = (nCurrentInterface & 0x7fff) << 16;
  593. InstData &= 0x8000ffff;
  594. InstData |= nCurrentInterface;
  595. AttachPropertyInstanceEx(hFrame,
  596. resmon_Database[I0_SUMMARY].hProperty,
  597. FrameLength, lpData, sizeof(DWORD), &InstData, 0, 0, 0);
  598. /* Take different action based on the direction */
  599. /* If fIsRequest is TRUE, the packet originated from the client. */
  600. if (fIsRequest)
  601. {
  602. fConformanceIsSet = FALSE;
  603. nOffset = ResourceId_Handler_5(hFrame, lpData, nOffset, FrameLength, lpdwPointerDataOffset);
  604. if (*lpdwPointerDataOffset > nOffset) nOffset = *lpdwPointerDataOffset;
  605. if ((*lpdwPointerDataOffset == 0xffffffff) ||
  606. (*lpdwPointerDataOffset > FrameLength))
  607. nOffset = FrameLength;
  608. }
  609. else
  610. {
  611. ALIGN(nOffset, 3);
  612. if ((nOffset+4) > FrameLength) return(FrameLength);
  613. GenericAttachDword(resmon_Database[I0_RETURN_VALUE_9].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
  614. nOffset += 4;
  615. }
  616. return(nOffset);
  617. }
  618. DWORD WINAPI resmon_RmShutdownProcess_AttachProperties(
  619. HFRAME hFrame,
  620. LPBYTE lpData,
  621. DWORD FrameLength,
  622. DWORD nCurrentInterface,
  623. DWORD InstData)
  624. {
  625. /* Decompose the InstData information. */
  626. BOOL fIsRequest = ((InstData & 0x80000000) != 0);
  627. WORD Version = ((WORD)(InstData >> 16) & 0x3fff);
  628. BOOL fExtensions = 0;
  629. DWORD nOffset = 0;
  630. /* These are specifically for calling handler functions */
  631. DWORD PointerDataOffset = nOffset;
  632. DWORD *lpdwPointerDataOffset = &PointerDataOffset;
  633. fIsFlipped = ((InstData & 0x40000000) != 0);
  634. nCurrentInterface = (nCurrentInterface & 0x7fff) << 16;
  635. InstData &= 0x8000ffff;
  636. InstData |= nCurrentInterface;
  637. AttachPropertyInstanceEx(hFrame,
  638. resmon_Database[I0_SUMMARY].hProperty,
  639. FrameLength, lpData, sizeof(DWORD), &InstData, 0, 0, 0);
  640. /* Take different action based on the direction */
  641. /* If fIsRequest is TRUE, the packet originated from the client. */
  642. if (fIsRequest)
  643. {
  644. }
  645. else
  646. {
  647. ALIGN(nOffset, 3);
  648. if ((nOffset+4) > FrameLength) return(FrameLength);
  649. GenericAttachDword(resmon_Database[I0_RETURN_VALUE_9].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
  650. nOffset += 4;
  651. }
  652. return(nOffset);
  653. }
  654. DWORD WINAPI resmon_RmResourceControl_AttachProperties(
  655. HFRAME hFrame,
  656. LPBYTE lpData,
  657. DWORD FrameLength,
  658. DWORD nCurrentInterface,
  659. DWORD InstData)
  660. {
  661. /* Decompose the InstData information. */
  662. BOOL fIsRequest = ((InstData & 0x80000000) != 0);
  663. WORD Version = ((WORD)(InstData >> 16) & 0x3fff);
  664. BOOL fExtensions = 0;
  665. DWORD nOffset = 0;
  666. /* These are specifically for calling handler functions */
  667. DWORD PointerDataOffset = nOffset;
  668. DWORD *lpdwPointerDataOffset = &PointerDataOffset;
  669. fIsFlipped = ((InstData & 0x40000000) != 0);
  670. nCurrentInterface = (nCurrentInterface & 0x7fff) << 16;
  671. InstData &= 0x8000ffff;
  672. InstData |= nCurrentInterface;
  673. AttachPropertyInstanceEx(hFrame,
  674. resmon_Database[I0_SUMMARY].hProperty,
  675. FrameLength, lpData, sizeof(DWORD), &InstData, 0, 0, 0);
  676. /* Take different action based on the direction */
  677. /* If fIsRequest is TRUE, the packet originated from the client. */
  678. if (fIsRequest)
  679. {
  680. fConformanceIsSet = FALSE;
  681. nOffset = ResourceId_Handler_5(hFrame, lpData, nOffset, FrameLength, lpdwPointerDataOffset);
  682. if (*lpdwPointerDataOffset > nOffset) nOffset = *lpdwPointerDataOffset;
  683. if ((*lpdwPointerDataOffset == 0xffffffff) ||
  684. (*lpdwPointerDataOffset > FrameLength))
  685. nOffset = FrameLength;
  686. ALIGN(nOffset, 3);
  687. if ((nOffset+4) > FrameLength) return(FrameLength);
  688. GenericAttachDword(resmon_Database[I0_DWORD_CONTROLCODE_14].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
  689. nOffset += 4;
  690. fConformanceIsSet = FALSE;
  691. nOffset = InBuffer_Handler_6(hFrame, lpData, nOffset, FrameLength, lpdwPointerDataOffset);
  692. if (*lpdwPointerDataOffset > nOffset) nOffset = *lpdwPointerDataOffset;
  693. if ((*lpdwPointerDataOffset == 0xffffffff) ||
  694. (*lpdwPointerDataOffset > FrameLength))
  695. nOffset = FrameLength;
  696. ALIGN(nOffset, 3);
  697. if ((nOffset+4) > FrameLength) return(FrameLength);
  698. GenericAttachDword(resmon_Database[I0_DWORD_INBUFFERSIZE_16].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
  699. nOffset += 4;
  700. ALIGN(nOffset, 3);
  701. if ((nOffset+4) > FrameLength) return(FrameLength);
  702. GenericAttachDword(resmon_Database[I0_DWORD_OUTBUFFERSIZE_17].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
  703. nOffset += 4;
  704. }
  705. else
  706. {
  707. fConformanceIsSet = FALSE;
  708. nOffset = OutBuffer_Handler_7(hFrame, lpData, nOffset, FrameLength, lpdwPointerDataOffset);
  709. if (*lpdwPointerDataOffset > nOffset) nOffset = *lpdwPointerDataOffset;
  710. if ((*lpdwPointerDataOffset == 0xffffffff) ||
  711. (*lpdwPointerDataOffset > FrameLength))
  712. nOffset = FrameLength;
  713. ALIGN(nOffset, 3);
  714. if ((nOffset+4) > FrameLength) return(FrameLength);
  715. GenericAttachDword(resmon_Database[I0_LPDWORD_BYTESREFURNED_19].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
  716. nOffset += 4;
  717. ALIGN(nOffset, 3);
  718. if ((nOffset+4) > FrameLength) return(FrameLength);
  719. GenericAttachDword(resmon_Database[I0_LPDWORD_REQUIRED_20].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
  720. nOffset += 4;
  721. ALIGN(nOffset, 3);
  722. if ((nOffset+4) > FrameLength) return(FrameLength);
  723. GenericAttachDword(resmon_Database[I0_RETURN_VALUE_9].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
  724. nOffset += 4;
  725. }
  726. return(nOffset);
  727. }
  728. DWORD WINAPI resmon_RmResourceTypeControl_AttachProperties(
  729. HFRAME hFrame,
  730. LPBYTE lpData,
  731. DWORD FrameLength,
  732. DWORD nCurrentInterface,
  733. DWORD InstData)
  734. {
  735. /* Decompose the InstData information. */
  736. BOOL fIsRequest = ((InstData & 0x80000000) != 0);
  737. WORD Version = ((WORD)(InstData >> 16) & 0x3fff);
  738. BOOL fExtensions = 0;
  739. DWORD nOffset = 0;
  740. /* These are specifically for calling handler functions */
  741. DWORD PointerDataOffset = nOffset;
  742. DWORD *lpdwPointerDataOffset = &PointerDataOffset;
  743. fIsFlipped = ((InstData & 0x40000000) != 0);
  744. nCurrentInterface = (nCurrentInterface & 0x7fff) << 16;
  745. InstData &= 0x8000ffff;
  746. InstData |= nCurrentInterface;
  747. AttachPropertyInstanceEx(hFrame,
  748. resmon_Database[I0_SUMMARY].hProperty,
  749. FrameLength, lpData, sizeof(DWORD), &InstData, 0, 0, 0);
  750. /* Take different action based on the direction */
  751. /* If fIsRequest is TRUE, the packet originated from the client. */
  752. if (fIsRequest)
  753. {
  754. fConformanceIsSet = FALSE;
  755. nOffset = ResourceTypeName_Handler_8(hFrame, lpData, nOffset, FrameLength, lpdwPointerDataOffset);
  756. if (*lpdwPointerDataOffset > nOffset) nOffset = *lpdwPointerDataOffset;
  757. if ((*lpdwPointerDataOffset == 0xffffffff) ||
  758. (*lpdwPointerDataOffset > FrameLength))
  759. nOffset = FrameLength;
  760. fConformanceIsSet = FALSE;
  761. nOffset = DllName_Handler_0(hFrame, lpData, nOffset, FrameLength, lpdwPointerDataOffset);
  762. if (*lpdwPointerDataOffset > nOffset) nOffset = *lpdwPointerDataOffset;
  763. if ((*lpdwPointerDataOffset == 0xffffffff) ||
  764. (*lpdwPointerDataOffset > FrameLength))
  765. nOffset = FrameLength;
  766. ALIGN(nOffset, 3);
  767. if ((nOffset+4) > FrameLength) return(FrameLength);
  768. GenericAttachDword(resmon_Database[I0_DWORD_CONTROLCODE_14].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
  769. nOffset += 4;
  770. fConformanceIsSet = FALSE;
  771. nOffset = InBuffer_Handler_9(hFrame, lpData, nOffset, FrameLength, lpdwPointerDataOffset);
  772. if (*lpdwPointerDataOffset > nOffset) nOffset = *lpdwPointerDataOffset;
  773. if ((*lpdwPointerDataOffset == 0xffffffff) ||
  774. (*lpdwPointerDataOffset > FrameLength))
  775. nOffset = FrameLength;
  776. ALIGN(nOffset, 3);
  777. if ((nOffset+4) > FrameLength) return(FrameLength);
  778. GenericAttachDword(resmon_Database[I0_DWORD_INBUFFERSIZE_16].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
  779. nOffset += 4;
  780. ALIGN(nOffset, 3);
  781. if ((nOffset+4) > FrameLength) return(FrameLength);
  782. GenericAttachDword(resmon_Database[I0_DWORD_OUTBUFFERSIZE_17].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
  783. nOffset += 4;
  784. }
  785. else
  786. {
  787. fConformanceIsSet = FALSE;
  788. nOffset = OutBuffer_Handler_10(hFrame, lpData, nOffset, FrameLength, lpdwPointerDataOffset);
  789. if (*lpdwPointerDataOffset > nOffset) nOffset = *lpdwPointerDataOffset;
  790. if ((*lpdwPointerDataOffset == 0xffffffff) ||
  791. (*lpdwPointerDataOffset > FrameLength))
  792. nOffset = FrameLength;
  793. ALIGN(nOffset, 3);
  794. if ((nOffset+4) > FrameLength) return(FrameLength);
  795. GenericAttachDword(resmon_Database[I0_LPDWORD_BYTESREFURNED_19].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
  796. nOffset += 4;
  797. ALIGN(nOffset, 3);
  798. if ((nOffset+4) > FrameLength) return(FrameLength);
  799. GenericAttachDword(resmon_Database[I0_LPDWORD_REQUIRED_20].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
  800. nOffset += 4;
  801. ALIGN(nOffset, 3);
  802. if ((nOffset+4) > FrameLength) return(FrameLength);
  803. GenericAttachDword(resmon_Database[I0_RETURN_VALUE_9].hProperty, hFrame, lpData + nOffset, nPropertyLevel);
  804. nOffset += 4;
  805. }
  806. return(nOffset);
  807. }
  808. DWORD DllName_Handler_0(
  809. HFRAME hFrame,
  810. LPBYTE lpData,
  811. DWORD nOffset,
  812. DWORD FrameLength,
  813. LPDWORD lpdwPointerDataOffset)
  814. {
  815. DWORD nStartOffset = nOffset;
  816. DWORD Iterations = 0;
  817. /* LPCWSTR DllName [FC_C_WSTRING] at offset 2 */
  818. ALIGN(nOffset, 3);
  819. nOffset += 8;
  820. {
  821. DWORD Length;
  822. Length = DWORDAT(lpData + nOffset) * sizeof(wchar_t);
  823. nOffset += 4;
  824. if ((nOffset+Length) > FrameLength) return(FrameLength);
  825. GenericAttachUnicodeString(resmon_Database[I0_LPCWSTR_DLLNAME_22].hProperty, hFrame, lpData + nOffset, Length, nPropertyLevel);
  826. nOffset += Length;
  827. }
  828. return(nOffset);
  829. }
  830. DWORD ResourceType_Handler_1(
  831. HFRAME hFrame,
  832. LPBYTE lpData,
  833. DWORD nOffset,
  834. DWORD FrameLength,
  835. LPDWORD lpdwPointerDataOffset)
  836. {
  837. DWORD nStartOffset = nOffset;
  838. DWORD Iterations = 0;
  839. /* LPCWSTR ResourceType [FC_C_WSTRING] at offset 2 */
  840. ALIGN(nOffset, 3);
  841. nOffset += 8;
  842. {
  843. DWORD Length;
  844. Length = DWORDAT(lpData + nOffset) * sizeof(wchar_t);
  845. nOffset += 4;
  846. if ((nOffset+Length) > FrameLength) return(FrameLength);
  847. GenericAttachUnicodeString(resmon_Database[I0_LPCWSTR_RESOURCETYPE_23].hProperty, hFrame, lpData + nOffset, Length, nPropertyLevel);
  848. nOffset += Length;
  849. }
  850. return(nOffset);
  851. }
  852. DWORD ResourceName_Handler_2(
  853. HFRAME hFrame,
  854. LPBYTE lpData,
  855. DWORD nOffset,
  856. DWORD FrameLength,
  857. LPDWORD lpdwPointerDataOffset)
  858. {
  859. DWORD nStartOffset = nOffset;
  860. DWORD Iterations = 0;
  861. /* LPCWSTR ResourceName [FC_C_WSTRING] at offset 2 */
  862. ALIGN(nOffset, 3);
  863. nOffset += 8;
  864. {
  865. DWORD Length;
  866. Length = DWORDAT(lpData + nOffset) * sizeof(wchar_t);
  867. nOffset += 4;
  868. if ((nOffset+Length) > FrameLength) return(FrameLength);
  869. GenericAttachUnicodeString(resmon_Database[I0_LPCWSTR_RESOURCENAME_24].hProperty, hFrame, lpData + nOffset, Length, nPropertyLevel);
  870. nOffset += Length;
  871. }
  872. return(nOffset);
  873. }
  874. DWORD Value_Handler_3(
  875. HFRAME hFrame,
  876. LPBYTE lpData,
  877. DWORD nOffset,
  878. DWORD FrameLength,
  879. LPDWORD lpdwPointerDataOffset)
  880. {
  881. DWORD nStartOffset = nOffset;
  882. DWORD Iterations = 0;
  883. /* Return Value [FC_BIND_CONTEXT] at offset 4 */
  884. ALIGN(nOffset, 3);
  885. GenericAttachStruct(resmon_Database[I0_RETURN_VALUE_25].hProperty,
  886. hFrame,
  887. lpData + nOffset,
  888. 20,
  889. nPropertyLevel);
  890. nOffset += 20;
  891. return(nOffset);
  892. }
  893. DWORD ResourceId_Handler_4(
  894. HFRAME hFrame,
  895. LPBYTE lpData,
  896. DWORD nOffset,
  897. DWORD FrameLength,
  898. LPDWORD lpdwPointerDataOffset)
  899. {
  900. DWORD nStartOffset = nOffset;
  901. DWORD Iterations = 0;
  902. /* RPC_RESID ResourceId [FC_BIND_CONTEXT] at offset 12 */
  903. ALIGN(nOffset, 3);
  904. GenericAttachStruct(resmon_Database[I0_RPC_RESID_RESOURCEID_8].hProperty,
  905. hFrame,
  906. lpData + nOffset,
  907. 20,
  908. nPropertyLevel);
  909. nOffset += 20;
  910. return(nOffset);
  911. }
  912. DWORD ResourceId_Handler_5(
  913. HFRAME hFrame,
  914. LPBYTE lpData,
  915. DWORD nOffset,
  916. DWORD FrameLength,
  917. LPDWORD lpdwPointerDataOffset)
  918. {
  919. DWORD nStartOffset = nOffset;
  920. DWORD Iterations = 0;
  921. /* RPC_RESID ResourceId [FC_BIND_CONTEXT] at offset 16 */
  922. ALIGN(nOffset, 3);
  923. GenericAttachStruct(resmon_Database[I0_RPC_RESID_RESOURCEID_8].hProperty,
  924. hFrame,
  925. lpData + nOffset,
  926. 20,
  927. nPropertyLevel);
  928. nOffset += 20;
  929. return(nOffset);
  930. }
  931. DWORD InBuffer_Handler_6(
  932. HFRAME hFrame,
  933. LPBYTE lpData,
  934. DWORD nOffset,
  935. DWORD FrameLength,
  936. LPDWORD lpdwPointerDataOffset)
  937. {
  938. DWORD nStartOffset = nOffset;
  939. DWORD Iterations = 0;
  940. *lpdwPointerDataOffset = nOffset + 4;
  941. /* UCHAR InBuffer [unique ptr] at offset 24 */
  942. if (!fIgnorePointers)
  943. {
  944. {
  945. BOOL OldfIgnoreFlatPart;
  946. OldfIgnoreFlatPart = fIgnoreFlatPart;
  947. fIgnoreFlatPart = FALSE;
  948. ALIGN(nOffset, 3);
  949. nOffset += 4;
  950. nOffset -= 4;
  951. if (DWORDAT(lpData + nOffset) != 0)
  952. {
  953. nOffset = InBuffer_Handler_11(hFrame, lpData, *lpdwPointerDataOffset, FrameLength, lpdwPointerDataOffset);
  954. }
  955. fIgnoreFlatPart = OldfIgnoreFlatPart;
  956. }
  957. }
  958. else
  959. {
  960. nOffset += 4;
  961. }
  962. return(nOffset);
  963. }
  964. DWORD OutBuffer_Handler_7(
  965. HFRAME hFrame,
  966. LPBYTE lpData,
  967. DWORD nOffset,
  968. DWORD FrameLength,
  969. LPDWORD lpdwPointerDataOffset)
  970. {
  971. DWORD nStartOffset = nOffset;
  972. DWORD Iterations = 0;
  973. /* UCHAR OutBuffer [FC_CVARRAY] at offset 42 */
  974. if (!fConformanceIsSet)
  975. {
  976. ALIGN(nOffset, 3);
  977. Conformance = DWORDAT(lpData + nOffset);
  978. fConformanceIsSet = TRUE;
  979. nOffset += 4;
  980. }
  981. {
  982. DWORD i = 0, OldfIgnorePointers = FALSE, ElementSize, OldOffset, FlatSize;
  983. nOffset += 4;
  984. Conformance = DWORDAT(lpData + nOffset);
  985. nOffset += 4;
  986. Iterations = Conformance;
  987. ElementSize = 1;
  988. FlatSize = Conformance * ElementSize;
  989. OldOffset = nOffset;
  990. if (!fIgnoreFlatPart)
  991. {
  992. if (!fIgnorePointers)
  993. {
  994. *lpdwPointerDataOffset = nOffset + FlatSize;
  995. ALIGN(*lpdwPointerDataOffset, 3);
  996. }
  997. ALIGN(nOffset, 0);
  998. if ((nOffset+FlatSize) > FrameLength) FlatSize = FrameLength - nOffset;
  999. GenericAttachAnything(resmon_Database[I0_UCHAR_OUTBUFFER______26].hProperty, hFrame, lpData + nOffset, FlatSize, nPropertyLevel);
  1000. nOffset += FlatSize;
  1001. nOffset = OldOffset;
  1002. }
  1003. nOffset = OldOffset + FlatSize;
  1004. }
  1005. return(nOffset);
  1006. }
  1007. DWORD ResourceTypeName_Handler_8(
  1008. HFRAME hFrame,
  1009. LPBYTE lpData,
  1010. DWORD nOffset,
  1011. DWORD FrameLength,
  1012. LPDWORD lpdwPointerDataOffset)
  1013. {
  1014. DWORD nStartOffset = nOffset;
  1015. DWORD Iterations = 0;
  1016. /* LPCWSTR ResourceTypeName [FC_C_WSTRING] at offset 2 */
  1017. ALIGN(nOffset, 3);
  1018. nOffset += 8;
  1019. {
  1020. DWORD Length;
  1021. Length = DWORDAT(lpData + nOffset) * sizeof(wchar_t);
  1022. nOffset += 4;
  1023. if ((nOffset+Length) > FrameLength) return(FrameLength);
  1024. GenericAttachUnicodeString(resmon_Database[I0_LPCWSTR_RESOURCETYPENAME_27].hProperty, hFrame, lpData + nOffset, Length, nPropertyLevel);
  1025. nOffset += Length;
  1026. }
  1027. return(nOffset);
  1028. }
  1029. DWORD InBuffer_Handler_9(
  1030. HFRAME hFrame,
  1031. LPBYTE lpData,
  1032. DWORD nOffset,
  1033. DWORD FrameLength,
  1034. LPDWORD lpdwPointerDataOffset)
  1035. {
  1036. DWORD nStartOffset = nOffset;
  1037. DWORD Iterations = 0;
  1038. *lpdwPointerDataOffset = nOffset + 4;
  1039. /* UCHAR InBuffer [unique ptr] at offset 56 */
  1040. if (!fIgnorePointers)
  1041. {
  1042. {
  1043. BOOL OldfIgnoreFlatPart;
  1044. OldfIgnoreFlatPart = fIgnoreFlatPart;
  1045. fIgnoreFlatPart = FALSE;
  1046. ALIGN(nOffset, 3);
  1047. nOffset += 4;
  1048. nOffset -= 4;
  1049. if (DWORDAT(lpData + nOffset) != 0)
  1050. {
  1051. nOffset = InBuffer_Handler_12(hFrame, lpData, *lpdwPointerDataOffset, FrameLength, lpdwPointerDataOffset);
  1052. }
  1053. fIgnoreFlatPart = OldfIgnoreFlatPart;
  1054. }
  1055. }
  1056. else
  1057. {
  1058. nOffset += 4;
  1059. }
  1060. return(nOffset);
  1061. }
  1062. DWORD OutBuffer_Handler_10(
  1063. HFRAME hFrame,
  1064. LPBYTE lpData,
  1065. DWORD nOffset,
  1066. DWORD FrameLength,
  1067. LPDWORD lpdwPointerDataOffset)
  1068. {
  1069. DWORD nStartOffset = nOffset;
  1070. DWORD Iterations = 0;
  1071. /* UCHAR OutBuffer [FC_CVARRAY] at offset 74 */
  1072. if (!fConformanceIsSet)
  1073. {
  1074. ALIGN(nOffset, 3);
  1075. Conformance = DWORDAT(lpData + nOffset);
  1076. fConformanceIsSet = TRUE;
  1077. nOffset += 4;
  1078. }
  1079. {
  1080. DWORD i = 0, OldfIgnorePointers = FALSE, ElementSize, OldOffset, FlatSize;
  1081. nOffset += 4;
  1082. Conformance = DWORDAT(lpData + nOffset);
  1083. nOffset += 4;
  1084. Iterations = Conformance;
  1085. ElementSize = 1;
  1086. FlatSize = Conformance * ElementSize;
  1087. OldOffset = nOffset;
  1088. if (!fIgnoreFlatPart)
  1089. {
  1090. if (!fIgnorePointers)
  1091. {
  1092. *lpdwPointerDataOffset = nOffset + FlatSize;
  1093. ALIGN(*lpdwPointerDataOffset, 3);
  1094. }
  1095. ALIGN(nOffset, 0);
  1096. if ((nOffset+FlatSize) > FrameLength) FlatSize = FrameLength - nOffset;
  1097. GenericAttachAnything(resmon_Database[I0_UCHAR_OUTBUFFER______26].hProperty, hFrame, lpData + nOffset, FlatSize, nPropertyLevel);
  1098. nOffset += FlatSize;
  1099. nOffset = OldOffset;
  1100. }
  1101. nOffset = OldOffset + FlatSize;
  1102. }
  1103. return(nOffset);
  1104. }
  1105. DWORD InBuffer_Handler_11(
  1106. HFRAME hFrame,
  1107. LPBYTE lpData,
  1108. DWORD nOffset,
  1109. DWORD FrameLength,
  1110. LPDWORD lpdwPointerDataOffset)
  1111. {
  1112. DWORD nStartOffset = nOffset;
  1113. DWORD Iterations = 0;
  1114. /* UCHAR InBuffer [FC_CARRAY] at offset 28 */
  1115. if (!fConformanceIsSet)
  1116. {
  1117. ALIGN(nOffset, 3);
  1118. Conformance = DWORDAT(lpData + nOffset);
  1119. fConformanceIsSet = TRUE;
  1120. nOffset += 4;
  1121. }
  1122. {
  1123. DWORD i = 0, OldfIgnorePointers = FALSE, ElementSize, OldOffset, FlatSize;
  1124. Iterations = Conformance;
  1125. ElementSize = 1;
  1126. FlatSize = Conformance * ElementSize;
  1127. OldOffset = nOffset;
  1128. if (!fIgnoreFlatPart)
  1129. {
  1130. if (!fIgnorePointers)
  1131. {
  1132. *lpdwPointerDataOffset = nOffset + FlatSize;
  1133. ALIGN(*lpdwPointerDataOffset, 3);
  1134. }
  1135. ALIGN(nOffset, 0);
  1136. if ((nOffset+FlatSize) > FrameLength) FlatSize = FrameLength - nOffset;
  1137. GenericAttachAnything(resmon_Database[I0_UCHAR_INBUFFER______28].hProperty, hFrame, lpData + nOffset, FlatSize, nPropertyLevel);
  1138. nOffset += FlatSize;
  1139. nOffset = OldOffset;
  1140. }
  1141. nOffset = OldOffset + FlatSize;
  1142. }
  1143. return(nOffset);
  1144. }
  1145. DWORD InBuffer_Handler_12(
  1146. HFRAME hFrame,
  1147. LPBYTE lpData,
  1148. DWORD nOffset,
  1149. DWORD FrameLength,
  1150. LPDWORD lpdwPointerDataOffset)
  1151. {
  1152. DWORD nStartOffset = nOffset;
  1153. DWORD Iterations = 0;
  1154. /* UCHAR InBuffer [FC_CARRAY] at offset 60 */
  1155. if (!fConformanceIsSet)
  1156. {
  1157. ALIGN(nOffset, 3);
  1158. Conformance = DWORDAT(lpData + nOffset);
  1159. fConformanceIsSet = TRUE;
  1160. nOffset += 4;
  1161. }
  1162. {
  1163. DWORD i = 0, OldfIgnorePointers = FALSE, ElementSize, OldOffset, FlatSize;
  1164. Iterations = Conformance;
  1165. ElementSize = 1;
  1166. FlatSize = Conformance * ElementSize;
  1167. OldOffset = nOffset;
  1168. if (!fIgnoreFlatPart)
  1169. {
  1170. if (!fIgnorePointers)
  1171. {
  1172. *lpdwPointerDataOffset = nOffset + FlatSize;
  1173. ALIGN(*lpdwPointerDataOffset, 3);
  1174. }
  1175. ALIGN(nOffset, 0);
  1176. if ((nOffset+FlatSize) > FrameLength) FlatSize = FrameLength - nOffset;
  1177. GenericAttachAnything(resmon_Database[I0_UCHAR_INBUFFER______28].hProperty, hFrame, lpData + nOffset, FlatSize, nPropertyLevel);
  1178. nOffset += FlatSize;
  1179. nOffset = OldOffset;
  1180. }
  1181. nOffset = OldOffset + FlatSize;
  1182. }
  1183. return(nOffset);
  1184. }