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.

622 lines
19 KiB

  1. //+-------------------------------------------------------------------------
  2. //
  3. // Microsoft Windows
  4. //
  5. // Copyright (C) Microsoft Corporation, 1990 - 2000
  6. //
  7. // File: eeinfo.hxx
  8. //
  9. //--------------------------------------------------------------------------
  10. /* --------------------------------------------------------------------
  11. File: eeinfo.hxx
  12. Description:
  13. The extended error definitions that are used by other parts of
  14. the runtime.
  15. History:
  16. Kamen Moutafov (KamenM) Mar 2000 - Created
  17. -------------------------------------------------------------------- */
  18. #if _MSC_VER > 1000
  19. #pragma once
  20. #endif // _MSC_VER > 1000
  21. #ifndef __EEINFO__
  22. #define __EEINFO__
  23. const USHORT EEInfoValidInputFlags = EEInfoUseFileTime;
  24. const long EEInfoGCInvalid = 0;
  25. const long EEInfoGCApplication = 1;
  26. const long EEInfoGCRuntime = 2;
  27. const long EEInfoGCSecurityProvider = 3;
  28. const long EEInfoGCNPFS = 4;
  29. const long EEInfoGCRDR = 5;
  30. const long EEInfoGCNMP = 6; // generic for named pipes - sometimes
  31. // we don't know whether it's RDR or NPFS
  32. const long EEInfoGCIO = 7; // generic for IO - sometimes we don't
  33. // know what type of file it is
  34. const long EEInfoGCWinsock = 8;
  35. const long EEInfoGCAuthz = 9;
  36. const long EEInfoGCLPC = 10;
  37. // const long EEInfoGCCOM = 11; // put as #define in rpcasync.h
  38. // const long EEInfoGCFRS = 12; // put as #define in rpcasync.h
  39. // The notation for the detection location constant names is
  40. // the full method name with the scope operator (::) replaced with
  41. // the double underscore (__).
  42. const short EEInfoDLInvalid = 0;
  43. const short EEInfoDLRaiseExc = 1;
  44. const short EEInfoDLAbortCall = 2;
  45. const short EEInfoDLApi = 3;
  46. const short EEInfoDLDealWithLRPCRequest10 = 10;
  47. const short EEInfoDLDealWithLRPCRequest20 = 11;
  48. const short EEInfoDLDealWithLRPCRequest30 = 12;
  49. const short EEInfoDLDealWithLRPCRequest40 = 13;
  50. const short EEInfoDLLrpcMessageToRpcMessage10 = 20;
  51. const short EEInfoDLLrpcMessageToRpcMessage20 = 21;
  52. const short EEInfoDLLrpcMessageToRpcMessage30 = 22;
  53. const short EEInfoDLDealWithRequestMessage10 = 30;
  54. const short EEInfoDLDealWithRequestMessage20 = 31;
  55. const short EEInfoDLDealWithRequestMessage30 = 32;
  56. const short EEInfoDLCheckSecurity10 = 40;
  57. const short EEInfoDLDealWithBindMessage10 = 50;
  58. const short EEInfoDLDealWithBindMessage20 = 51;
  59. const short EEInfoDLDealWithBindMessage30 = 52;
  60. const short EEInfoDLDealWithBindMessage40 = 53;
  61. const short EEInfoDLDealWithBindMessage50 = 54;
  62. const short EEInfoDLDealWithBindMessage60 = 55;
  63. const short EEInfoDLFindServerCredentials10 = 60;
  64. const short EEInfoDLFindServerCredentials20 = 61;
  65. const short EEInfoDLFindServerCredentials30 = 62;
  66. const short EEInfoDLAcceptFirstTime10 = 70;
  67. const short EEInfoDLAcceptFirstTime20 = 73;
  68. const short EEInfoDLAcceptThirdLeg10 = 71;
  69. const short EEInfoDLAcceptThirdLeg20 = 72;
  70. const short EEInfoDLAcceptThirdLeg30 = 73;
  71. const short EEInfoDLAcceptThirdLeg40 = 74;
  72. const short EEInfoDLAssociationRequested10 = 80;
  73. const short EEInfoDLAssociationRequested20 = 81;
  74. const short EEInfoDLAssociationRequested30 = 82;
  75. const short EEInfoDLCompleteSecurityToken10 = 90;
  76. const short EEInfoDLCompleteSecurityToken20 = 91;
  77. const short EEInfoDLAcquireCredentialsForClient10 = 100;
  78. const short EEInfoDLAcquireCredentialsForClient20 = 101;
  79. const short EEInfoDLAcquireCredentialsForClient30 = 102;
  80. const short EEInfoDLInquireDefaultPrincName10 = 110;
  81. const short EEInfoDLInquireDefaultPrincName20 = 111;
  82. const short EEInfoDLSignOrSeal10 = 120;
  83. const short EEInfoDLVerifyOrUnseal10 = 130;
  84. const short EEInfoDLVerifyOrUnseal20 = 131;
  85. const short EEInfoDLInitializeFirstTime10 = 140;
  86. const short EEInfoDLInitializeFirstTime20 = 141;
  87. const short EEInfoDLInitializeFirstTime30 = 142;
  88. const short EEInfoDLInitializeThirdLeg10 = 150;
  89. const short EEInfoDLInitializeThirdLeg20 = 151;
  90. const short EEInfoDLInitializeThirdLeg30 = 152;
  91. const short EEInfoDLInitializeThirdLeg40 = 153;
  92. const short EEInfoDLInitializeThirdLeg50 = 154;
  93. const short EEInfoDLInitializeThirdLeg60 = 155;
  94. const short EEInfoDLInitializeThirdLeg70 = 156;
  95. const short EEInfoDLImpersonateClient10 = 160;
  96. const short EEInfoDLDispatchToStub10 = 170;
  97. const short EEInfoDLDispatchToStub20 = 171;
  98. const short EEInfoDLDispatchToStubWorker10 = 180;
  99. const short EEInfoDLDispatchToStubWorker20 = 181;
  100. const short EEInfoDLDispatchToStubWorker30 = 182;
  101. const short EEInfoDLDispatchToStubWorker40 = 183;
  102. const short EEInfoDLNMPOpen10 = 190;
  103. const short EEInfoDLNMPOpen20 = 191;
  104. const short EEInfoDLNMPOpen30 = 192;
  105. const short EEInfoDLNMPOpen40 = 193;
  106. const short EEInfoDLNMPSyncSend10 = 200;
  107. const short EEInfoDLNMPSyncSendReceive10 = 210;
  108. const short EEInfoDLNMPSyncSendReceive20 = 220;
  109. const short EEInfoDLNMPSyncSendReceive30 = 221;
  110. const short EEInfoDLCOSend10 = 230;
  111. const short EEInfoDLCOSubmitRead10 = 240;
  112. const short EEInfoDLCOSubmitSyncRead10 = 250;
  113. const short EEInfoDLCOSubmitSyncRead20 = 251;
  114. const short EEInfoDLCOSyncRecv10 = 260;
  115. const short EEInfoDLWSCheckForShutdowns10 = 270;
  116. const short EEInfoDLWSCheckForShutdowns20 = 271;
  117. const short EEInfoDLWSCheckForShutdowns30 = 272;
  118. const short EEInfoDLWSCheckForShutdowns40 = 273;
  119. const short EEInfoDLWSCheckForShutdowns50 = 274;
  120. const short EEInfoDLWSSyncSend10 = 280;
  121. const short EEInfoDLWSSyncSend20 = 281;
  122. const short EEInfoDLWSSyncSend30 = 282;
  123. const short EEInfoDLWSSyncRecv10 = 290;
  124. const short EEInfoDLWSSyncRecv20 = 291;
  125. const short EEInfoDLWSSyncRecv30 = 292;
  126. const short EEInfoDLWSServerListenCommon10 = 300;
  127. const short EEInfoDLWSServerListenCommon20 = 301;
  128. const short EEInfoDLWSServerListenCommon30 = 302;
  129. const short EEInfoDLWSOpen10 = 310;
  130. const short EEInfoDLWSOpen20 = 311;
  131. const short EEInfoDLWSOpen30 = 312;
  132. const short EEInfoDLWSOpen40 = 313;
  133. const short EEInfoDLWSOpen50 = 314;
  134. const short EEInfoDLWSOpen60 = 315;
  135. const short EEInfoDLWSOpen80 = 317;
  136. const short EEInfoDLWSOpen90 = 318;
  137. const short EEInfoDLNextAddress10 = 320;
  138. const short EEInfoDLNextAddress20 = 321;
  139. const short EEInfoDLNextAddress30 = 322;
  140. const short EEInfoDLNextAddress40 = 323;
  141. const short EEInfoDLWSBind10 = 330;
  142. const short EEInfoDLWSBind30 = 332;
  143. const short EEInfoDLWSBind40 = 333;
  144. const short EEInfoDLWSBind45 = 335;
  145. const short EEInfoDLWSBind50 = 334;
  146. const short EEInfoDLIPBuildAddressVector10 = 340;
  147. const short EEInfoDLGetStatusForTimeout10 = 350;
  148. const short EEInfoDLGetStatusForTimeout20 = 351;
  149. const short EEInfoDLOSF_CCONNECTION__SendFragment10 = 360;
  150. const short EEInfoDLOSF_CCONNECTION__SendFragment20 = 361;
  151. const short EEInfoDLOSF_CCALL__ReceiveReply10 = 370;
  152. const short EEInfoDLOSF_CCALL__ReceiveReply20 = 371;
  153. const short EEInfoDLOSF_CCALL__FastSendReceive10 = 380;
  154. const short EEInfoDLOSF_CCALL__FastSendReceive20 = 381;
  155. const short EEInfoDLOSF_CCALL__FastSendReceive30 = 382;
  156. const short EEInfoDLLRPC_BINDING_HANDLE__AllocateCCall10 = 390;
  157. const short EEInfoDLLRPC_BINDING_HANDLE__AllocateCCall20 = 391;
  158. const short EEInfoDLLRPC_ADDRESS__ServerSetupAddress10 = 400;
  159. const short EEInfoDLLRPC_ADDRESS__HandleInvalidAssociationReference10 = 410;
  160. const short EEInfoDLInitializeAuthzSupportIfNecessary10 = 420;
  161. const short EEInfoDLInitializeAuthzSupportIfNecessary20 = 421;
  162. const short EEInfoDLCreateDummyResourceManagerIfNecessary10 = 430;
  163. const short EEInfoDLCreateDummyResourceManagerIfNecessary20 = 431;
  164. const short EEInfoDLLRPC_SCALL__GetAuthorizationContext10 = 440;
  165. const short EEInfoDLLRPC_SCALL__GetAuthorizationContext20 = 441;
  166. const short EEInfoDLLRPC_SCALL__GetAuthorizationContext30 = 442;
  167. const short EEInfoDLSCALL__DuplicateAuthzContext10 = 450;
  168. const short EEInfoDLSCALL__CreateAndSaveAuthzContextFromToken10 = 460;
  169. const short EEInfoDLSECURITY_CONTEXT__GetAccessToken10 = 470;
  170. const short EEInfoDLSECURITY_CONTEXT__GetAccessToken20 = 471;
  171. const short EEInfoDLOSF_SCALL__GetAuthorizationContext10 = 480;
  172. const short EEInfoDLOSF_SCALL__GetAuthorizationContext20 = 490;
  173. const short EEInfoDLEpResolveEndpoint10 = 500;
  174. const short EEInfoDLEpResolveEndpoint20 = 501;
  175. const short EEInfoDLEpResolveEndpoint30 = 502;
  176. const short EEInfoDLEpResolveEndpoint40 = 503;
  177. const short EEInfoDLOSF_SCALL__GetBuffer10 = 510;
  178. const short EEInfoDLLRPC_SCALL__ImpersonateClient10 = 520;
  179. const short EEInfoDLSetMaximumLengths10 = 530;
  180. const short EEInfoDLLRPC_CASSOCIATION__ActuallyDoBinding10 = 540;
  181. const short EEInfoDLLRPC_CASSOCIATION__ActuallyDoBinding20 = 541;
  182. const short EEInfoDLLRPC_CASSOCIATION__ActuallyDoBinding30 = 542;
  183. const short EEInfoDLLRPC_CASSOCIATION__ActuallyDoBinding40 = 543;
  184. const short EEInfoDLLRPC_CASSOCIATION__CreateBackConnection10 = 550;
  185. const short EEInfoDLLRPC_CASSOCIATION__CreateBackConnection20 = 551;
  186. const short EEInfoDLLRPC_CASSOCIATION__CreateBackConnection30 = 552;
  187. const short EEInfoDLRpcpLookupAccountName10 = 560;
  188. const short EEInfoDLLRPC_CASSOCIATION__OpenLpcPort20 = 561;
  189. const short EEInfoDLLRPC_CASSOCIATION__OpenLpcPort30 = 562;
  190. const short EEInfoDLLRPC_CASSOCIATION__OpenLpcPort40 = 563;
  191. const short EEInfoDLRegisterEntries10 = 570;
  192. const short EEInfoDLRegisterEntries20 = 571;
  193. const short EEInfoDLNDRSContextUnmarshall2_10 = 580;
  194. const short EEInfoDLNDRSContextUnmarshall2_20 = 581;
  195. const short EEInfoDLNDRSContextUnmarshall2_30 = 582;
  196. const short EEInfoDLNDRSContextUnmarshall2_40 = 583;
  197. const short EEInfoDLNDRSContextUnmarshall2_50 = 584;
  198. const short EEInfoDLNDRSContextUnmarshall2_60 = 585;
  199. const short EEInfoDLNDRSContextMarshall2_10 = 590;
  200. const short EEInfoDLWinsockDatagramSend10 = 600;
  201. const short EEInfoDLWinsockDatagramSend20 = 601;
  202. const short EEInfoDLWinsockDatagramReceive10 = 610;
  203. const short EEInfoDLWinsockDatagramReceive20 = 611;
  204. const short EEInfoDLWinsockDatagramSubmitReceive10 = 620;
  205. const short EEInfoDLWinsockDatagramSubmitReceive20 = 621;
  206. const short EEInfoDLDG_CCALL__CancelAsyncCall10 = 630;
  207. const short EEInfoDLDG_CCALL__DealWithTimeout10 = 640;
  208. const short EEInfoDLDG_CCALL__DealWithTimeout20 = 641;
  209. const short EEInfoDLDG_CCALL__DealWithTimeout30 = 642;
  210. const short EEInfoDLDG_CCALL__DispatchPacket10 = 650;
  211. const short EEInfoDLDG_CCALL__ReceiveSinglePacket10 = 660;
  212. const short EEInfoDLDG_CCALL__ReceiveSinglePacket20 = 661;
  213. const short EEInfoDLDG_CCALL__ReceiveSinglePacket30 = 662;
  214. const short EEInfoDLWinsockDatagramResolve10 = 670;
  215. const short EEInfoDLWinsockDatagramCreate10 = 680;
  216. const short EEInfoDLTCP_QueryLocalAddress10 = 690;
  217. const short EEInfoDLTCP_QueryLocalAddress20 = 691;
  218. const short EEInfoDLOSF_CASSOCIATION__ProcessBindAckOrNak10 = 700;
  219. const short EEInfoDLOSF_CASSOCIATION__ProcessBindAckOrNak20 = 701;
  220. const short EEInfoDLMatchMsPrincipalName10 = 710;
  221. const short EEInfoDLCompareRdnElement10 = 720;
  222. const short EEInfoDLMatchFullPathPrincipalName10 = 730;
  223. const short EEInfoDLMatchFullPathPrincipalName20 = 731;
  224. const short EEInfoDLMatchFullPathPrincipalName30 = 732;
  225. const short EEInfoDLMatchFullPathPrincipalName40 = 733;
  226. const short EEInfoDLMatchFullPathPrincipalName50 = 734;
  227. const short EEInfoDLRpcCertGeneratePrincipalName10 = 740;
  228. const short EEInfoDLRpcCertGeneratePrincipalName20 = 741;
  229. const short EEInfoDLRpcCertGeneratePrincipalName30 = 742;
  230. const short EEInfoDLRpcCertVerifyContext10 = 750;
  231. const short EEInfoDLRpcCertVerifyContext20 = 751;
  232. const short EEInfoDLRpcCertVerifyContext30 = 752;
  233. const short EEInfoDLRpcCertVerifyContext40 = 753;
  234. const short EEInfoDLOSF_BINDING_HANDLE__NegotiateTransferSyntax10 = 761;
  235. const short EEInfoDLOSF_ASSOCIATION__IsMyAssocGroupId10 = 770;
  236. const short EEInfoDLRpcpLookupAccountSid10 = 780;
  237. const short EEInfoDLGetMachineAccountSid10 = 790;
  238. const short EEInfoDLGetMachineAccountSid20 = 791;
  239. const short EEInfoDLGetMachineAccountSid30 = 792;
  240. const short EEInfoDLGetMachineAccountSid40 = 793;
  241. const short EEInfoDLOSF_SCONNECTION__AcceptFirstTime = 800;
  242. const short EEInfoDLOSF_SCONNECTION__AcceptThirdLeg = 810;
  243. const short EEInfoDLOSF_BINDING_HANDLE__AcquireCredentialsForTransport10 = 820;
  244. const short EEInfoDLOSF_BINDING_HANDLE__AcquireCredentialsForTransport20 = 821;
  245. extern "C"
  246. {
  247. void
  248. FreeEEInfoChain (
  249. IN ExtendedErrorInfo *EEInfo
  250. );
  251. void
  252. FreeEEInfoRecordShallow (
  253. IN ExtendedErrorInfo *InfoToFree
  254. );
  255. void
  256. FreeEEInfoPrivateParam (
  257. IN ExtendedErrorParam *Param
  258. );
  259. void
  260. FreeEEInfoPublicParam (
  261. IN OUT RPC_EE_INFO_PARAM *Param,
  262. IN BOOL CopyStrings
  263. );
  264. void
  265. FreeEEInfoRecord (
  266. IN ExtendedErrorInfo *EEInfo
  267. );
  268. }
  269. // 128 is a one-record, four parameters with PVals, no computer
  270. // name pickled length. 32 is an arbitrary safety margin. Each
  271. // transport must be able to transmit at least that much EEInfo
  272. const size_t MinimumTransportEEInfoLength = 128 + 32;
  273. size_t
  274. EstimateSizeOfEEInfo (
  275. void
  276. );
  277. RPC_STATUS
  278. PickleEEInfo (
  279. IN ExtendedErrorInfo *EEInfo,
  280. IN OUT unsigned char *Buffer,
  281. IN size_t BufferSize
  282. );
  283. extern "C"
  284. {
  285. RPC_STATUS
  286. UnpickleEEInfo (
  287. IN OUT unsigned char *Buffer,
  288. IN size_t BufferSize,
  289. OUT ExtendedErrorInfo **EEInfo
  290. );
  291. }
  292. void
  293. TrimEEInfoToLength (
  294. IN size_t MaxLength,
  295. OUT size_t *NeededLength
  296. );
  297. //
  298. // Unpickles the EE info and then attaches it to the current thread.
  299. //
  300. void
  301. UnpickleEEInfoFromBuffer (
  302. IN PVOID Buffer,
  303. IN size_t SizeOfPickledData
  304. );
  305. // the generic routine for private adding of
  306. // error info. This function should not be called
  307. // directly. Rather, one of the overloaded
  308. // RpcpErrorAddRecord functions below should be used.
  309. // If there isn't one for your needs, you can always add one
  310. void
  311. RpcpErrorAddRecord (
  312. ULONG GeneratingComponent,
  313. ULONG Status,
  314. USHORT DetectionLocation,
  315. int NumberOfParameters,
  316. ExtendedErrorParam *Params
  317. );
  318. void
  319. RpcpErrorAddRecord (
  320. IN ULONG GeneratingComponent,
  321. IN ULONG Status,
  322. IN USHORT DetectionLocation,
  323. IN ULONG Long,
  324. IN short Short,
  325. IN ULONG Long2
  326. );
  327. void
  328. RpcpErrorAddRecord (
  329. IN ULONG GeneratingComponent,
  330. IN ULONG Status,
  331. IN USHORT DetectionLocation,
  332. IN ULONG Long,
  333. IN short Short,
  334. IN ULONG Long2,
  335. IN ULONG Long3
  336. );
  337. void
  338. RpcpErrorAddRecord (
  339. IN ULONG GeneratingComponent,
  340. IN ULONG Status,
  341. IN USHORT DetectionLocation,
  342. IN ULONG Long,
  343. IN ULONG Long2
  344. );
  345. void
  346. RpcpErrorAddRecord (
  347. IN ULONG GeneratingComponent,
  348. IN ULONG Status,
  349. IN USHORT DetectionLocation,
  350. IN ULONG Long,
  351. IN ULONG Long2,
  352. IN ULONG Long3
  353. );
  354. void
  355. RpcpErrorAddRecord (
  356. IN ULONG GeneratingComponent,
  357. IN ULONG Status,
  358. IN USHORT DetectionLocation,
  359. IN ULONG Long
  360. );
  361. void
  362. RpcpErrorAddRecord (
  363. IN ULONG GeneratingComponent,
  364. IN ULONG Status,
  365. IN USHORT DetectionLocation,
  366. IN LPWSTR String1,
  367. IN LPWSTR String2
  368. );
  369. void
  370. RpcpErrorAddRecord (
  371. IN ULONG GeneratingComponent,
  372. IN ULONG Status,
  373. IN USHORT DetectionLocation,
  374. IN LPWSTR String1,
  375. IN LPWSTR String2,
  376. IN ULONG Long1,
  377. IN ULONG Long2
  378. );
  379. void
  380. RpcpErrorAddRecord (
  381. IN ULONG GeneratingComponent,
  382. IN ULONG Status,
  383. IN USHORT DetectionLocation,
  384. IN LPWSTR String1,
  385. IN LPWSTR String2,
  386. IN ULONG Long1,
  387. IN ULONGLONG PVal1
  388. );
  389. void
  390. RpcpErrorAddRecord (
  391. IN ULONG GeneratingComponent,
  392. IN ULONG Status,
  393. IN USHORT DetectionLocation,
  394. IN LPWSTR String,
  395. IN ULONG Long
  396. );
  397. void
  398. RpcpErrorAddRecord (
  399. IN ULONG GeneratingComponent,
  400. IN ULONG Status,
  401. IN USHORT DetectionLocation,
  402. IN LPWSTR String,
  403. IN ULONG Long1,
  404. IN ULONG Long2
  405. );
  406. void
  407. RpcpErrorAddRecord (
  408. IN ULONG GeneratingComponent,
  409. IN ULONG Status,
  410. IN USHORT DetectionLocation,
  411. IN ULONG Long1,
  412. IN ULONG Long2,
  413. IN LPWSTR String,
  414. IN ULONG Long3
  415. );
  416. void
  417. RpcpErrorAddRecord (
  418. IN ULONG GeneratingComponent,
  419. IN ULONG Status,
  420. IN USHORT DetectionLocation,
  421. IN LPWSTR String
  422. );
  423. void
  424. RpcpErrorAddRecord (
  425. IN ULONG GeneratingComponent,
  426. IN ULONG Status,
  427. IN USHORT DetectionLocation,
  428. IN LPSTR String
  429. );
  430. void
  431. RpcpErrorAddRecord (
  432. IN ULONG GeneratingComponent,
  433. IN ULONG Status,
  434. IN USHORT DetectionLocation,
  435. IN ULONG Long,
  436. IN ULONGLONG PVal1,
  437. IN ULONGLONG PVal2
  438. );
  439. void
  440. RpcpErrorAddRecord (
  441. IN ULONG GeneratingComponent,
  442. IN ULONG Status,
  443. IN USHORT DetectionLocation,
  444. IN ULONG Long,
  445. IN ULONGLONG PVal1
  446. );
  447. void
  448. RpcpErrorAddRecord (
  449. IN ULONG GeneratingComponent,
  450. IN ULONG Status,
  451. IN USHORT DetectionLocation,
  452. IN ULONGLONG PVal1,
  453. IN ULONGLONG PVal2,
  454. IN ULONG Long
  455. );
  456. void
  457. RpcpErrorAddRecord (
  458. IN ULONG GeneratingComponent,
  459. IN ULONG Status,
  460. IN USHORT DetectionLocation,
  461. IN ULONGLONG PVal1,
  462. IN ULONGLONG PVal2,
  463. IN ULONG Long1,
  464. IN ULONG Long2
  465. );
  466. void
  467. RpcpErrorAddRecord (
  468. IN ULONG GeneratingComponent,
  469. IN ULONG Status,
  470. IN USHORT DetectionLocation,
  471. IN ULONGLONG PVal1,
  472. IN ULONGLONG PVal2
  473. );
  474. void
  475. RpcpErrorAddRecord (
  476. IN ULONG GeneratingComponent,
  477. IN ULONG Status,
  478. IN USHORT DetectionLocation,
  479. IN ULONGLONG PVal1,
  480. IN ULONG LVal1
  481. );
  482. inline void
  483. RpcpErrorAddRecord (
  484. IN ULONG GeneratingComponent,
  485. IN ULONG Status,
  486. IN USHORT DetectionLocation
  487. )
  488. {
  489. RpcpErrorAddRecord (GeneratingComponent,
  490. Status,
  491. DetectionLocation,
  492. 0,
  493. NULL);
  494. }
  495. void
  496. RpcpErrorAddRecord (
  497. IN ULONG GeneratingComponent,
  498. IN ULONG Status,
  499. IN USHORT DetectionLocation,
  500. IN ULONG LVal1,
  501. IN ULONGLONG PVal1,
  502. IN ULONG LVal2
  503. );
  504. void
  505. RpcpErrorAddRecord (
  506. IN ULONG GeneratingComponent,
  507. IN ULONG Status,
  508. IN USHORT DetectionLocation,
  509. IN ULONG LVal1,
  510. IN ULONG LVal2,
  511. IN ULONG LVal3,
  512. IN ULONGLONG PVal1
  513. );
  514. void
  515. RpcpErrorAddRecord (
  516. IN ULONG GeneratingComponent,
  517. IN ULONG Status,
  518. IN USHORT DetectionLocation,
  519. IN ULONG LVal1,
  520. IN ULONG LVal2,
  521. IN ULONG LVal3,
  522. IN ULONG LVal4
  523. );
  524. void
  525. RpcpErrorAddRecord (
  526. IN ULONG GeneratingComponent,
  527. IN ULONG Status,
  528. IN USHORT DetectionLocation,
  529. IN ULONGLONG PVal1,
  530. IN ULONGLONG PVal2,
  531. IN ULONGLONG PVal3,
  532. IN ULONGLONG PVal4
  533. );
  534. void
  535. NukeStaleEEInfoIfNecessary (
  536. IN RPC_STATUS exception
  537. );
  538. void
  539. AddComputerNameToChain (
  540. ExtendedErrorInfo *EEInfo
  541. );
  542. void
  543. StripComputerNameIfRedundant (
  544. ExtendedErrorInfo *EEInfo
  545. );
  546. extern BOOL g_fSendEEInfo;
  547. typedef enum tagComputerNameAllocators
  548. {
  549. cnaMidl,
  550. cnaNew
  551. } ComputerNameAllocators;
  552. LPWSTR
  553. AllocateAndGetComputerName (
  554. IN ComputerNameAllocators AllocatorToUse,
  555. IN COMPUTER_NAME_FORMAT NameToRetrieve,
  556. IN size_t ExtraBytes,
  557. IN int StartingOffset,
  558. OUT DWORD *Size
  559. );
  560. #endif // EEINFO