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.

577 lines
17 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. // The notation for the detection location constant names is
  39. // the full method name with the scope operator (::) replaced with
  40. // the double underscore (__).
  41. const short EEInfoDLInvalid = 0;
  42. const short EEInfoDLRaiseExc = 1;
  43. const short EEInfoDLAbortCall = 2;
  44. const short EEInfoDLApi = 3;
  45. const short EEInfoDLDealWithLRPCRequest10 = 10;
  46. const short EEInfoDLDealWithLRPCRequest20 = 11;
  47. const short EEInfoDLDealWithLRPCRequest30 = 12;
  48. const short EEInfoDLDealWithLRPCRequest40 = 13;
  49. const short EEInfoDLLrpcMessageToRpcMessage10 = 20;
  50. const short EEInfoDLLrpcMessageToRpcMessage20 = 21;
  51. const short EEInfoDLLrpcMessageToRpcMessage30 = 22;
  52. const short EEInfoDLDealWithRequestMessage10 = 30;
  53. const short EEInfoDLDealWithRequestMessage20 = 31;
  54. const short EEInfoDLDealWithRequestMessage30 = 32;
  55. const short EEInfoDLCheckSecurity10 = 40;
  56. const short EEInfoDLDealWithBindMessage10 = 50;
  57. const short EEInfoDLDealWithBindMessage20 = 51;
  58. const short EEInfoDLDealWithBindMessage30 = 52;
  59. const short EEInfoDLDealWithBindMessage40 = 53;
  60. const short EEInfoDLDealWithBindMessage50 = 54;
  61. const short EEInfoDLDealWithBindMessage60 = 55;
  62. const short EEInfoDLFindServerCredentials10 = 60;
  63. const short EEInfoDLFindServerCredentials20 = 61;
  64. const short EEInfoDLFindServerCredentials30 = 62;
  65. const short EEInfoDLAcceptFirstTime10 = 70;
  66. const short EEInfoDLAcceptFirstTime20 = 73;
  67. const short EEInfoDLAcceptThirdLeg10 = 71;
  68. const short EEInfoDLAcceptThirdLeg20 = 72;
  69. const short EEInfoDLAcceptThirdLeg30 = 73;
  70. const short EEInfoDLAcceptThirdLeg40 = 74;
  71. const short EEInfoDLAssociationRequested10 = 80;
  72. const short EEInfoDLAssociationRequested20 = 81;
  73. const short EEInfoDLAssociationRequested30 = 82;
  74. const short EEInfoDLCompleteSecurityToken10 = 90;
  75. const short EEInfoDLCompleteSecurityToken20 = 91;
  76. const short EEInfoDLAcquireCredentialsForClient10 = 100;
  77. const short EEInfoDLAcquireCredentialsForClient20 = 101;
  78. const short EEInfoDLAcquireCredentialsForClient30 = 102;
  79. const short EEInfoDLInquireDefaultPrincName10 = 110;
  80. const short EEInfoDLInquireDefaultPrincName20 = 111;
  81. const short EEInfoDLSignOrSeal10 = 120;
  82. const short EEInfoDLVerifyOrUnseal10 = 130;
  83. const short EEInfoDLVerifyOrUnseal20 = 131;
  84. const short EEInfoDLInitializeFirstTime10 = 140;
  85. const short EEInfoDLInitializeFirstTime20 = 141;
  86. const short EEInfoDLInitializeFirstTime30 = 142;
  87. const short EEInfoDLInitializeThirdLeg10 = 150;
  88. const short EEInfoDLInitializeThirdLeg20 = 151;
  89. const short EEInfoDLInitializeThirdLeg30 = 152;
  90. const short EEInfoDLInitializeThirdLeg40 = 153;
  91. const short EEInfoDLInitializeThirdLeg50 = 154;
  92. const short EEInfoDLInitializeThirdLeg60 = 155;
  93. const short EEInfoDLInitializeThirdLeg70 = 156;
  94. const short EEInfoDLImpersonateClient10 = 160;
  95. const short EEInfoDLDispatchToStub10 = 170;
  96. const short EEInfoDLDispatchToStub20 = 171;
  97. const short EEInfoDLDispatchToStubWorker10 = 180;
  98. const short EEInfoDLDispatchToStubWorker20 = 181;
  99. const short EEInfoDLDispatchToStubWorker30 = 182;
  100. const short EEInfoDLDispatchToStubWorker40 = 183;
  101. const short EEInfoDLNMPOpen10 = 190;
  102. const short EEInfoDLNMPOpen20 = 191;
  103. const short EEInfoDLNMPOpen30 = 192;
  104. const short EEInfoDLNMPOpen40 = 193;
  105. const short EEInfoDLNMPSyncSend10 = 200;
  106. const short EEInfoDLNMPSyncSendReceive10 = 210;
  107. const short EEInfoDLNMPSyncSendReceive20 = 220;
  108. const short EEInfoDLNMPSyncSendReceive30 = 221;
  109. const short EEInfoDLCOSend10 = 230;
  110. const short EEInfoDLCOSubmitRead10 = 240;
  111. const short EEInfoDLCOSubmitSyncRead10 = 250;
  112. const short EEInfoDLCOSubmitSyncRead20 = 251;
  113. const short EEInfoDLCOSyncRecv10 = 260;
  114. const short EEInfoDLWSCheckForShutdowns10 = 270;
  115. const short EEInfoDLWSCheckForShutdowns20 = 271;
  116. const short EEInfoDLWSCheckForShutdowns30 = 272;
  117. const short EEInfoDLWSCheckForShutdowns40 = 273;
  118. const short EEInfoDLWSCheckForShutdowns50 = 274;
  119. const short EEInfoDLWSSyncSend10 = 280;
  120. const short EEInfoDLWSSyncSend20 = 281;
  121. const short EEInfoDLWSSyncSend30 = 282;
  122. const short EEInfoDLWSSyncRecv10 = 290;
  123. const short EEInfoDLWSSyncRecv20 = 291;
  124. const short EEInfoDLWSSyncRecv30 = 292;
  125. const short EEInfoDLWSServerListenCommon10 = 300;
  126. const short EEInfoDLWSServerListenCommon20 = 301;
  127. const short EEInfoDLWSServerListenCommon30 = 302;
  128. const short EEInfoDLWSOpen10 = 310;
  129. const short EEInfoDLWSOpen20 = 311;
  130. const short EEInfoDLWSOpen30 = 312;
  131. const short EEInfoDLWSOpen40 = 313;
  132. const short EEInfoDLWSOpen50 = 314;
  133. const short EEInfoDLWSOpen60 = 315;
  134. const short EEInfoDLWSOpen80 = 317;
  135. const short EEInfoDLWSOpen90 = 318;
  136. const short EEInfoDLNextAddress10 = 320;
  137. const short EEInfoDLNextAddress20 = 321;
  138. const short EEInfoDLNextAddress30 = 322;
  139. const short EEInfoDLNextAddress40 = 323;
  140. const short EEInfoDLWSBind10 = 330;
  141. const short EEInfoDLWSBind20 = 331;
  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 EEInfoDLLRPC_CASSOCIATION__OpenLpcPort10 = 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 EEInfoDLNDRSContextMarshall2_10 = 590;
  199. const short EEInfoDLWinsockDatagramSend10 = 600;
  200. const short EEInfoDLWinsockDatagramSend20 = 601;
  201. const short EEInfoDLWinsockDatagramReceive10 = 610;
  202. const short EEInfoDLWinsockDatagramReceive20 = 611;
  203. const short EEInfoDLWinsockDatagramSubmitReceive10 = 620;
  204. const short EEInfoDLWinsockDatagramSubmitReceive20 = 621;
  205. const short EEInfoDLDG_CCALL__CancelAsyncCall10 = 630;
  206. const short EEInfoDLDG_CCALL__DealWithTimeout10 = 640;
  207. const short EEInfoDLDG_CCALL__DealWithTimeout20 = 641;
  208. const short EEInfoDLDG_CCALL__DealWithTimeout30 = 642;
  209. const short EEInfoDLDG_CCALL__DispatchPacket10 = 650;
  210. const short EEInfoDLDG_CCALL__ReceiveSinglePacket10 = 660;
  211. const short EEInfoDLDG_CCALL__ReceiveSinglePacket20 = 661;
  212. const short EEInfoDLDG_CCALL__ReceiveSinglePacket30 = 662;
  213. const short EEInfoDLWinsockDatagramResolve10 = 670;
  214. const short EEInfoDLWinsockDatagramCreate10 = 680;
  215. const short EEInfoDLTCP_QueryLocalAddress10 = 690;
  216. const short EEInfoDLTCP_QueryLocalAddress20 = 691;
  217. const short EEInfoDLOSF_CASSOCIATION__ProcessBindAckOrNak10 = 700;
  218. const short EEInfoDLOSF_CASSOCIATION__ProcessBindAckOrNak20 = 701;
  219. const short EEInfoDLMatchMsPrincipalName10 = 710;
  220. const short EEInfoDLCompareRdnElement10 = 720;
  221. const short EEInfoDLMatchFullPathPrincipalName10 = 730;
  222. const short EEInfoDLMatchFullPathPrincipalName20 = 731;
  223. const short EEInfoDLMatchFullPathPrincipalName30 = 732;
  224. const short EEInfoDLMatchFullPathPrincipalName40 = 733;
  225. const short EEInfoDLMatchFullPathPrincipalName50 = 734;
  226. const short EEInfoDLRpcCertGeneratePrincipalName10 = 740;
  227. const short EEInfoDLRpcCertGeneratePrincipalName20 = 741;
  228. const short EEInfoDLRpcCertGeneratePrincipalName30 = 742;
  229. const short EEInfoDLRpcCertVerifyContext10 = 750;
  230. const short EEInfoDLRpcCertVerifyContext20 = 751;
  231. const short EEInfoDLRpcCertVerifyContext30 = 752;
  232. const short EEInfoDLRpcCertVerifyContext40 = 753;
  233. const short EEInfoDLOSF_BINDING_HANDLE__NegotiateTransferSyntax10 = 761;
  234. void
  235. FreeEEInfoChain (
  236. IN ExtendedErrorInfo *EEInfo
  237. );
  238. void
  239. FreeEEInfoRecordShallow (
  240. IN ExtendedErrorInfo *InfoToFree
  241. );
  242. // 128 is a one-record, four parameters with PVals, no computer
  243. // name pickled length. 32 is an arbitrary safety margin. Each
  244. // transport must be able to transmit at least that much EEInfo
  245. const size_t MinimumTransportEEInfoLength = 128 + 32;
  246. size_t
  247. EstimateSizeOfEEInfo (
  248. void
  249. );
  250. RPC_STATUS
  251. PickleEEInfo (
  252. IN ExtendedErrorInfo *EEInfo,
  253. IN OUT unsigned char *Buffer,
  254. IN size_t BufferSize
  255. );
  256. RPC_STATUS
  257. UnpickleEEInfo (
  258. IN OUT unsigned char *Buffer,
  259. IN size_t BufferSize,
  260. OUT ExtendedErrorInfo **EEInfo
  261. );
  262. void
  263. TrimEEInfoToLength (
  264. IN size_t MaxLength,
  265. OUT size_t *NeededLength
  266. );
  267. //
  268. // Unpickles the EE info and then attaches it to the current thread.
  269. //
  270. void
  271. UnpickleEEInfoFromBuffer (
  272. IN PVOID Buffer,
  273. IN size_t SizeOfPickledData
  274. );
  275. // the generic routine for private adding of
  276. // error info. This function should not be called
  277. // directly. Rather, one of the overloaded
  278. // RpcpErrorAddRecord functions below should be used.
  279. // If there isn't one for your needs, you can always add one
  280. void
  281. RpcpErrorAddRecord (
  282. ULONG GeneratingComponent,
  283. ULONG Status,
  284. USHORT DetectionLocation,
  285. int NumberOfParameters,
  286. ExtendedErrorParam *Params
  287. );
  288. void
  289. RpcpErrorAddRecord (
  290. IN ULONG GeneratingComponent,
  291. IN ULONG Status,
  292. IN USHORT DetectionLocation,
  293. IN ULONG Long,
  294. IN short Short,
  295. IN ULONG Long2
  296. );
  297. void
  298. RpcpErrorAddRecord (
  299. IN ULONG GeneratingComponent,
  300. IN ULONG Status,
  301. IN USHORT DetectionLocation,
  302. IN ULONG Long,
  303. IN short Short,
  304. IN ULONG Long2,
  305. IN ULONG Long3
  306. );
  307. void
  308. RpcpErrorAddRecord (
  309. IN ULONG GeneratingComponent,
  310. IN ULONG Status,
  311. IN USHORT DetectionLocation,
  312. IN ULONG Long,
  313. IN ULONG Long2
  314. );
  315. void
  316. RpcpErrorAddRecord (
  317. IN ULONG GeneratingComponent,
  318. IN ULONG Status,
  319. IN USHORT DetectionLocation,
  320. IN ULONG Long,
  321. IN ULONG Long2,
  322. IN ULONG Long3
  323. );
  324. void
  325. RpcpErrorAddRecord (
  326. IN ULONG GeneratingComponent,
  327. IN ULONG Status,
  328. IN USHORT DetectionLocation,
  329. IN ULONG Long
  330. );
  331. void
  332. RpcpErrorAddRecord (
  333. IN ULONG GeneratingComponent,
  334. IN ULONG Status,
  335. IN USHORT DetectionLocation,
  336. IN LPWSTR String1,
  337. IN LPWSTR String2
  338. );
  339. void
  340. RpcpErrorAddRecord (
  341. IN ULONG GeneratingComponent,
  342. IN ULONG Status,
  343. IN USHORT DetectionLocation,
  344. IN LPWSTR String1,
  345. IN LPWSTR String2,
  346. IN ULONG Long1,
  347. IN ULONG Long2
  348. );
  349. void
  350. RpcpErrorAddRecord (
  351. IN ULONG GeneratingComponent,
  352. IN ULONG Status,
  353. IN USHORT DetectionLocation,
  354. IN LPWSTR String1,
  355. IN LPWSTR String2,
  356. IN ULONG Long1,
  357. IN ULONGLONG PVal1
  358. );
  359. void
  360. RpcpErrorAddRecord (
  361. IN ULONG GeneratingComponent,
  362. IN ULONG Status,
  363. IN USHORT DetectionLocation,
  364. IN LPWSTR String,
  365. IN ULONG Long
  366. );
  367. void
  368. RpcpErrorAddRecord (
  369. IN ULONG GeneratingComponent,
  370. IN ULONG Status,
  371. IN USHORT DetectionLocation,
  372. IN LPWSTR String,
  373. IN ULONG Long1,
  374. IN ULONG Long2
  375. );
  376. void
  377. RpcpErrorAddRecord (
  378. IN ULONG GeneratingComponent,
  379. IN ULONG Status,
  380. IN USHORT DetectionLocation,
  381. IN ULONG Long1,
  382. IN ULONG Long2,
  383. IN LPWSTR String,
  384. IN ULONG Long3
  385. );
  386. void
  387. RpcpErrorAddRecord (
  388. IN ULONG GeneratingComponent,
  389. IN ULONG Status,
  390. IN USHORT DetectionLocation,
  391. IN LPWSTR String
  392. );
  393. void
  394. RpcpErrorAddRecord (
  395. IN ULONG GeneratingComponent,
  396. IN ULONG Status,
  397. IN USHORT DetectionLocation,
  398. IN LPSTR String
  399. );
  400. void
  401. RpcpErrorAddRecord (
  402. IN ULONG GeneratingComponent,
  403. IN ULONG Status,
  404. IN USHORT DetectionLocation,
  405. IN ULONG Long,
  406. IN ULONGLONG PVal1,
  407. IN ULONGLONG PVal2
  408. );
  409. void
  410. RpcpErrorAddRecord (
  411. IN ULONG GeneratingComponent,
  412. IN ULONG Status,
  413. IN USHORT DetectionLocation,
  414. IN ULONG Long,
  415. IN ULONGLONG PVal1
  416. );
  417. void
  418. RpcpErrorAddRecord (
  419. IN ULONG GeneratingComponent,
  420. IN ULONG Status,
  421. IN USHORT DetectionLocation,
  422. IN ULONGLONG PVal1,
  423. IN ULONGLONG PVal2,
  424. IN ULONG Long
  425. );
  426. void
  427. RpcpErrorAddRecord (
  428. IN ULONG GeneratingComponent,
  429. IN ULONG Status,
  430. IN USHORT DetectionLocation,
  431. IN ULONGLONG PVal1,
  432. IN ULONGLONG PVal2,
  433. IN ULONG Long1,
  434. IN ULONG Long2
  435. );
  436. void
  437. RpcpErrorAddRecord (
  438. IN ULONG GeneratingComponent,
  439. IN ULONG Status,
  440. IN USHORT DetectionLocation,
  441. IN ULONGLONG PVal1,
  442. IN ULONGLONG PVal2
  443. );
  444. void
  445. RpcpErrorAddRecord (
  446. IN ULONG GeneratingComponent,
  447. IN ULONG Status,
  448. IN USHORT DetectionLocation,
  449. IN ULONGLONG PVal1,
  450. IN ULONG LVal1
  451. );
  452. inline void
  453. RpcpErrorAddRecord (
  454. IN ULONG GeneratingComponent,
  455. IN ULONG Status,
  456. IN USHORT DetectionLocation
  457. )
  458. {
  459. RpcpErrorAddRecord (GeneratingComponent,
  460. Status,
  461. DetectionLocation,
  462. 0,
  463. NULL);
  464. }
  465. void
  466. RpcpErrorAddRecord (
  467. IN ULONG GeneratingComponent,
  468. IN ULONG Status,
  469. IN USHORT DetectionLocation,
  470. IN ULONG LVal1,
  471. IN ULONGLONG PVal1,
  472. IN ULONG LVal2
  473. );
  474. void
  475. RpcpErrorAddRecord (
  476. IN ULONG GeneratingComponent,
  477. IN ULONG Status,
  478. IN USHORT DetectionLocation,
  479. IN ULONG LVal1,
  480. IN ULONG LVal2,
  481. IN ULONG LVal3,
  482. IN ULONGLONG PVal1
  483. );
  484. void
  485. RpcpErrorAddRecord (
  486. IN ULONG GeneratingComponent,
  487. IN ULONG Status,
  488. IN USHORT DetectionLocation,
  489. IN ULONG LVal1,
  490. IN ULONG LVal2,
  491. IN ULONG LVal3,
  492. IN ULONG LVal4
  493. );
  494. void
  495. NukeStaleEEInfoIfNecessary (
  496. IN RPC_STATUS exception
  497. );
  498. void
  499. AddComputerNameToChain (
  500. ExtendedErrorInfo *EEInfo
  501. );
  502. void
  503. StripComputerNameIfRedundant (
  504. ExtendedErrorInfo *EEInfo
  505. );
  506. extern BOOL g_fSendEEInfo;
  507. typedef enum tagComputerNameAllocators
  508. {
  509. cnaMidl,
  510. cnaNew
  511. } ComputerNameAllocators;
  512. LPWSTR
  513. AllocateAndGetComputerName (
  514. IN ComputerNameAllocators AllocatorToUse,
  515. IN COMPUTER_NAME_FORMAT NameToRetrieve,
  516. IN size_t ExtraBytes,
  517. IN int StartingOffset,
  518. OUT DWORD *Size
  519. );
  520. #endif // EEINFO