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.

1097 lines
17 KiB

  1. /*++ BUILD Version: 0000 // Increment this if a change has global effects
  2. Copyright (c) 1995 Microsoft Corporation
  3. Module Name:
  4. phone.h
  5. Abstract:
  6. Header file for
  7. Author:
  8. Dan Knudson (DanKn) dd-Mmm-1995
  9. Revision History:
  10. --*/
  11. #define ANY_RT_HPHONE 1
  12. #define ANY_RT_HPHONE_CLOSE 2
  13. #define ANY_RT_HPHONEAPP 3
  14. #define DEVICE_ID 4
  15. #define DEVICE_ID_OPEN 5
  16. #define AllPhoneStates1_0 \
  17. (PHONESTATE_OTHER | \
  18. PHONESTATE_CONNECTED | \
  19. PHONESTATE_DISCONNECTED | \
  20. PHONESTATE_OWNER | \
  21. PHONESTATE_MONITORS | \
  22. PHONESTATE_DISPLAY | \
  23. PHONESTATE_LAMP | \
  24. PHONESTATE_RINGMODE | \
  25. PHONESTATE_RINGVOLUME | \
  26. PHONESTATE_HANDSETHOOKSWITCH | \
  27. PHONESTATE_HANDSETVOLUME | \
  28. PHONESTATE_HANDSETGAIN | \
  29. PHONESTATE_SPEAKERHOOKSWITCH | \
  30. PHONESTATE_SPEAKERVOLUME | \
  31. PHONESTATE_SPEAKERGAIN | \
  32. PHONESTATE_HEADSETHOOKSWITCH | \
  33. PHONESTATE_HEADSETVOLUME | \
  34. PHONESTATE_HEADSETGAIN | \
  35. PHONESTATE_SUSPEND | \
  36. PHONESTATE_RESUME | \
  37. PHONESTATE_DEVSPECIFIC | \
  38. PHONESTATE_REINIT)
  39. #define AllPhoneStates1_4 \
  40. (PHONESTATE_OTHER | \
  41. PHONESTATE_CONNECTED | \
  42. PHONESTATE_DISCONNECTED | \
  43. PHONESTATE_OWNER | \
  44. PHONESTATE_MONITORS | \
  45. PHONESTATE_DISPLAY | \
  46. PHONESTATE_LAMP | \
  47. PHONESTATE_RINGMODE | \
  48. PHONESTATE_RINGVOLUME | \
  49. PHONESTATE_HANDSETHOOKSWITCH | \
  50. PHONESTATE_HANDSETVOLUME | \
  51. PHONESTATE_HANDSETGAIN | \
  52. PHONESTATE_SPEAKERHOOKSWITCH | \
  53. PHONESTATE_SPEAKERVOLUME | \
  54. PHONESTATE_SPEAKERGAIN | \
  55. PHONESTATE_HEADSETHOOKSWITCH | \
  56. PHONESTATE_HEADSETVOLUME | \
  57. PHONESTATE_HEADSETGAIN | \
  58. PHONESTATE_SUSPEND | \
  59. PHONESTATE_RESUME | \
  60. PHONESTATE_DEVSPECIFIC | \
  61. PHONESTATE_REINIT | \
  62. PHONESTATE_CAPSCHANGE | \
  63. PHONESTATE_REMOVED)
  64. #define AllButtonModes \
  65. (PHONEBUTTONMODE_DUMMY | \
  66. PHONEBUTTONMODE_CALL | \
  67. PHONEBUTTONMODE_FEATURE | \
  68. PHONEBUTTONMODE_KEYPAD | \
  69. PHONEBUTTONMODE_LOCAL | \
  70. PHONEBUTTONMODE_DISPLAY)
  71. #define AllButtonStates1_0 \
  72. (PHONEBUTTONSTATE_UP | \
  73. PHONEBUTTONSTATE_DOWN)
  74. #define AllButtonStates1_4 \
  75. (PHONEBUTTONSTATE_UP | \
  76. PHONEBUTTONSTATE_DOWN | \
  77. PHONEBUTTONSTATE_UNKNOWN | \
  78. PHONEBUTTONSTATE_UNAVAIL)
  79. #if DBG
  80. #define PHONEPROLOG(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) \
  81. PhoneProlog(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)
  82. #define PHONEEPILOGSYNC(a1,a2,a3,a4) PhoneEpilogSync(a1,a2,a3,a4)
  83. #define PHONEEPILOGASYNC(a1,a2,a3,a4,a5,a6) PhoneEpilogAsync(a1,a2,a3,a4,a5,a6)
  84. #else
  85. #define PHONEPROLOG(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) \
  86. PhoneProlog(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)
  87. #define PHONEEPILOGSYNC(a1,a2,a3,a4) PhoneEpilogSync(a1,a2,a3)
  88. #define PHONEEPILOGASYNC(a1,a2,a3,a4,a5,a6) PhoneEpilogAsync(a1,a2,a3,a4,a5)
  89. #endif
  90. typedef struct _PPHONECLOSE_PARAMS
  91. {
  92. union
  93. {
  94. OUT LONG lResult;
  95. };
  96. DWORD dwUnused;
  97. union
  98. {
  99. IN HPHONE hPhone;
  100. };
  101. OUT DWORD dwCallbackInstance;
  102. } PHONECLOSE_PARAMS, *PPHONECLOSE_PARAMS;
  103. typedef struct _PHONECONFIGDIALOG_PARAMS
  104. {
  105. union
  106. {
  107. OUT LONG lResult;
  108. };
  109. DWORD dwUnused;
  110. union
  111. {
  112. IN DWORD dwDeviceID;
  113. };
  114. union
  115. {
  116. IN HWND hwndOwner;
  117. };
  118. union
  119. {
  120. IN DWORD dwDeviceClassOffset; // valid offset or
  121. // TAPI_NO_DATA
  122. };
  123. } PHONECONFIGDIALOG_PARAMS, *PPHONECONFIGDIALOG_PARAMS;
  124. typedef struct _PHONEDEVSPECIFIC_PARAMS
  125. {
  126. union
  127. {
  128. OUT LONG lResult;
  129. };
  130. DWORD dwUnused;
  131. union
  132. {
  133. IN DWORD dwRemoteRequestID;
  134. };
  135. IN DWORD hfnPostProcessProc;
  136. union
  137. {
  138. IN HPHONE hPhone;
  139. };
  140. // IN ULONG_PTR lpParams; // pointer to client buffer
  141. IN DWORD hpParams; // pointer to client buffer
  142. union
  143. {
  144. IN DWORD dwParamsOffset;
  145. };
  146. union
  147. {
  148. IN DWORD dwParamsSize;
  149. };
  150. } PHONEDEVSPECIFIC_PARAMS, *PPHONEDEVSPECIFIC_PARAMS;
  151. typedef struct _PHONEGETBUTTONINFO_PARAMS
  152. {
  153. union
  154. {
  155. OUT LONG lResult;
  156. };
  157. DWORD dwUnused;
  158. union
  159. {
  160. IN HPHONE hPhone;
  161. };
  162. union
  163. {
  164. IN DWORD dwButtonLampID;
  165. };
  166. union
  167. {
  168. IN DWORD dwButtonInfoTotalSize; // size of client buffer
  169. OUT DWORD dwButtonInfoOffset; // valid offset on success
  170. };
  171. } PHONEGETBUTTONINFO_PARAMS, *PPHONEGETBUTTONINFO_PARAMS;
  172. typedef struct _PHONEGETDATA_PARAMS
  173. {
  174. union
  175. {
  176. OUT LONG lResult;
  177. };
  178. DWORD dwUnused;
  179. union
  180. {
  181. IN HPHONE hPhone;
  182. };
  183. union
  184. {
  185. IN DWORD dwDataID;
  186. };
  187. union
  188. {
  189. OUT DWORD dwDataOffset;
  190. };
  191. union
  192. {
  193. IN DWORD dwSize;
  194. };
  195. } PHONEGETDATA_PARAMS, *PPHONEGETDATA_PARAMS;
  196. typedef struct _PHONEGETDEVCAPS_PARAMS
  197. {
  198. union
  199. {
  200. OUT LONG lResult;
  201. };
  202. DWORD dwUnused;
  203. union
  204. {
  205. IN HPHONEAPP hPhoneApp;
  206. };
  207. union
  208. {
  209. IN DWORD dwDeviceID;
  210. };
  211. union
  212. {
  213. IN DWORD dwAPIVersion;
  214. };
  215. union
  216. {
  217. IN DWORD dwExtVersion;
  218. };
  219. union
  220. {
  221. IN DWORD dwPhoneCapsTotalSize; // size of client buffer
  222. OUT DWORD dwPhoneCapsOffset; // valid offset on success
  223. };
  224. } PHONEGETDEVCAPS_PARAMS, *PPHONEGETDEVCAPS_PARAMS;
  225. typedef struct _PHONEGETDISPLAY_PARAMS
  226. {
  227. union
  228. {
  229. OUT LONG lResult;
  230. };
  231. DWORD dwUnused;
  232. union
  233. {
  234. IN HPHONE hPhone;
  235. };
  236. union
  237. {
  238. IN DWORD dwDisplayTotalSize; // size of client buffer
  239. OUT DWORD dwDisplayOffset; // valid offset on success
  240. };
  241. } PHONEGETDISPLAY_PARAMS, *PPHONEGETDISPLAY_PARAMS;
  242. typedef struct _PHONEGETGAIN_PARAMS
  243. {
  244. union
  245. {
  246. OUT LONG lResult;
  247. };
  248. DWORD dwUnused;
  249. union
  250. {
  251. IN HPHONE hPhone;
  252. };
  253. union
  254. {
  255. IN DWORD dwHookSwitchDev;
  256. };
  257. union
  258. {
  259. OUT DWORD dwGain;
  260. };
  261. } PHONEGETGAIN_PARAMS, *PPHONEGETGAIN_PARAMS;
  262. typedef struct _PHONEGETHOOKSWITCH_PARAMS
  263. {
  264. union
  265. {
  266. OUT LONG lResult;
  267. };
  268. DWORD dwUnused;
  269. union
  270. {
  271. IN HPHONE hPhone;
  272. };
  273. union
  274. {
  275. OUT DWORD dwHookSwitchDevs;
  276. };
  277. } PHONEGETHOOKSWITCH_PARAMS, *PPHONEGETHOOKSWITCH_PARAMS;
  278. typedef struct _PHONEGETICON_PARAMS
  279. {
  280. union
  281. {
  282. OUT LONG lResult;
  283. };
  284. DWORD dwUnused;
  285. union
  286. {
  287. IN DWORD dwDeviceID;
  288. };
  289. union
  290. {
  291. IN DWORD dwDeviceClassOffset; // valid offset or
  292. // TAPI_NO_DATA
  293. };
  294. union
  295. {
  296. OUT HICON hIcon;
  297. };
  298. } PHONEGETICON_PARAMS, *PPHONEGETICON_PARAMS;
  299. typedef struct _PHONEGETID_PARAMS
  300. {
  301. union
  302. {
  303. OUT LONG lResult;
  304. };
  305. DWORD dwUnused;
  306. union
  307. {
  308. IN HPHONE hPhone;
  309. };
  310. union
  311. {
  312. IN DWORD dwDeviceIDTotalSize; // size of client buffer
  313. OUT DWORD dwDeviceIDOffset; // valid offset on success
  314. };
  315. union
  316. {
  317. IN DWORD dwDeviceClassOffset; // always valid offset
  318. };
  319. } PHONEGETID_PARAMS, *PPHONEGETID_PARAMS;
  320. typedef struct _PHONEGETLAMP_PARAMS
  321. {
  322. union
  323. {
  324. OUT LONG lResult;
  325. };
  326. DWORD dwUnused;
  327. union
  328. {
  329. IN HPHONE hPhone;
  330. };
  331. union
  332. {
  333. IN DWORD dwButtonLampID;
  334. };
  335. union
  336. {
  337. OUT DWORD dwLampMode;
  338. };
  339. } PHONEGETLAMP_PARAMS, *PPHONEGETLAMP_PARAMS;
  340. typedef struct _PHONEGETRING_PARAMS
  341. {
  342. union
  343. {
  344. OUT LONG lResult;
  345. };
  346. DWORD dwUnused;
  347. union
  348. {
  349. IN HPHONE hPhone;
  350. };
  351. union
  352. {
  353. OUT DWORD dwRingMode;
  354. };
  355. union
  356. {
  357. OUT DWORD dwVolume;
  358. };
  359. } PHONEGETRING_PARAMS, *PPHONEGETRING_PARAMS;
  360. typedef struct _PHONEGETSTATUS_PARAMS
  361. {
  362. union
  363. {
  364. OUT LONG lResult;
  365. };
  366. DWORD dwUnused;
  367. union
  368. {
  369. IN HPHONE hPhone;
  370. };
  371. union
  372. {
  373. IN DWORD dwPhoneStatusTotalSize; // size of client buffer
  374. OUT DWORD dwPhoneStatusOffset; // valid offset on success
  375. };
  376. } PHONEGETSTATUS_PARAMS, *PPHONEGETSTATUS_PARAMS;
  377. typedef struct _PHONEGETSTATUSMESSAGES_PARAMS
  378. {
  379. union
  380. {
  381. OUT LONG lResult;
  382. };
  383. DWORD dwUnused;
  384. union
  385. {
  386. IN HPHONE hPhone;
  387. };
  388. union
  389. {
  390. OUT DWORD dwPhoneStates;
  391. };
  392. union
  393. {
  394. OUT DWORD dwButtonModes;
  395. };
  396. union
  397. {
  398. OUT DWORD dwButtonStates;
  399. };
  400. } PHONEGETSTATUSMESSAGES_PARAMS, *PPHONEGETSTATUSMESSAGES_PARAMS;
  401. typedef struct _PHONEGETVOLUME_PARAMS
  402. {
  403. union
  404. {
  405. OUT LONG lResult;
  406. };
  407. DWORD dwUnused;
  408. union
  409. {
  410. IN HPHONE hPhone;
  411. };
  412. union
  413. {
  414. IN DWORD dwHookSwitchDev;
  415. };
  416. union
  417. {
  418. OUT DWORD dwVolume;
  419. };
  420. } PHONEGETVOLUME_PARAMS, *PPHONEGETVOLUME_PARAMS;
  421. typedef struct _PHONEINITIALIZE_PARAMS
  422. {
  423. union
  424. {
  425. OUT LONG lResult;
  426. };
  427. DWORD dwUnused;
  428. union
  429. {
  430. OUT HPHONEAPP hPhoneApp;
  431. };
  432. union
  433. {
  434. IN DWORD hInstance;
  435. };
  436. union
  437. {
  438. IN DWORD InitContext;
  439. };
  440. union
  441. {
  442. IN DWORD dwFriendlyNameOffset; // always valid offset
  443. };
  444. union
  445. {
  446. OUT DWORD dwNumDevs;
  447. };
  448. union
  449. {
  450. IN DWORD dwModuleNameOffset; // always valid offset
  451. };
  452. union
  453. {
  454. IN DWORD dwAPIVersion;
  455. };
  456. } PHONEINITIALIZE_PARAMS, *PPHONEINITIALIZE_PARAMS;
  457. typedef struct _PHONENEGOTIATEAPIVERSION_PARAMS
  458. {
  459. union
  460. {
  461. OUT LONG lResult;
  462. };
  463. DWORD dwUnused;
  464. union
  465. {
  466. IN HPHONEAPP hPhoneApp;
  467. };
  468. union
  469. {
  470. IN DWORD dwDeviceID;
  471. };
  472. union
  473. {
  474. IN DWORD dwAPILowVersion;
  475. };
  476. union
  477. {
  478. IN DWORD dwAPIHighVersion;
  479. };
  480. union
  481. {
  482. OUT DWORD dwAPIVersion;
  483. };
  484. union
  485. {
  486. OUT DWORD dwExtensionIDOffset; // valid offset if success
  487. };
  488. union
  489. {
  490. IN OUT DWORD dwSize;
  491. };
  492. } PHONENEGOTIATEAPIVERSION_PARAMS, *PPHONENEGOTIATEAPIVERSION_PARAMS;
  493. typedef struct _PHONENEGOTIATEEXTVERSION_PARAMS
  494. {
  495. union
  496. {
  497. OUT LONG lResult;
  498. };
  499. DWORD dwUnused;
  500. union
  501. {
  502. IN HPHONEAPP hPhoneApp;
  503. };
  504. union
  505. {
  506. IN DWORD dwDeviceID;
  507. };
  508. union
  509. {
  510. IN DWORD dwAPIVersion;
  511. };
  512. union
  513. {
  514. IN DWORD dwExtLowVersion;
  515. };
  516. union
  517. {
  518. IN DWORD dwExtHighVersion;
  519. };
  520. union
  521. {
  522. OUT DWORD dwExtVersion;
  523. };
  524. } PHONENEGOTIATEEXTVERSION_PARAMS, *PPHONENEGOTIATEEXTVERSION_PARAMS;
  525. typedef struct _PHONEOPEN_PARAMS
  526. {
  527. union
  528. {
  529. OUT LONG lResult;
  530. };
  531. DWORD dwUnused;
  532. union
  533. {
  534. IN HPHONEAPP hPhoneApp;
  535. };
  536. union
  537. {
  538. IN DWORD dwDeviceID;
  539. };
  540. union
  541. {
  542. OUT HPHONE hPhone;
  543. };
  544. union
  545. {
  546. IN DWORD dwAPIVersion;
  547. };
  548. union
  549. {
  550. IN DWORD dwExtVersion;
  551. };
  552. DWORD OpenContext;
  553. union
  554. {
  555. IN DWORD dwPrivilege;
  556. };
  557. //
  558. // The following is a "remote phone handle". When the client is
  559. // remotesp.tsp running on a remote machine, this will be some
  560. // non-NULL value, and tapisrv should use this handle in status/etc
  561. // indications to the client rather than the std hPhone. If the
  562. // client is not remote.tsp thne this value will be NULL.
  563. //
  564. union
  565. {
  566. IN HPHONE hRemotePhone;
  567. };
  568. } PHONEOPEN_PARAMS, *PPHONEOPEN_PARAMS;
  569. typedef struct _PHONESELECTEXTVERSION_PARAMS
  570. {
  571. union
  572. {
  573. OUT LONG lResult;
  574. };
  575. DWORD dwUnused;
  576. union
  577. {
  578. IN HPHONE hPhone;
  579. };
  580. union
  581. {
  582. IN DWORD dwExtVersion;
  583. };
  584. } PHONESELECTEXTVERSION_PARAMS, *PPHONESELECTEXTVERSION_PARAMS;
  585. typedef struct _PHONESETBUTTONINFO_PARAMS
  586. {
  587. union
  588. {
  589. OUT LONG lResult;
  590. };
  591. DWORD dwUnused;
  592. union
  593. {
  594. IN DWORD dwRemoteRequestID;
  595. };
  596. union
  597. {
  598. IN HPHONE hPhone;
  599. };
  600. union
  601. {
  602. IN DWORD dwButtonLampID;
  603. };
  604. union
  605. {
  606. IN DWORD dwButtonInfoOffset; // always valid offset
  607. };
  608. } PHONESETBUTTONINFO_PARAMS, *PPHONESETBUTTONINFO_PARAMS;
  609. typedef struct _PHONESETDATA_PARAMS
  610. {
  611. union
  612. {
  613. OUT LONG lResult;
  614. };
  615. DWORD dwUnused;
  616. union
  617. {
  618. IN DWORD dwRemoteRequestID;
  619. };
  620. union
  621. {
  622. IN HPHONE hPhone;
  623. };
  624. union
  625. {
  626. IN DWORD dwDataID;
  627. };
  628. union
  629. {
  630. IN DWORD dwDataOffset; // always valid offset
  631. };
  632. union
  633. {
  634. IN DWORD dwSize;
  635. };
  636. } PHONESETDATA_PARAMS, *PPHONESETDATA_PARAMS;
  637. typedef struct _PHONESETDISPLAY_PARAMS
  638. {
  639. union
  640. {
  641. OUT LONG lResult;
  642. };
  643. DWORD dwUnused;
  644. union
  645. {
  646. IN DWORD dwRemoteRequestID;
  647. };
  648. union
  649. {
  650. IN HPHONE hPhone;
  651. };
  652. union
  653. {
  654. IN DWORD dwRow;
  655. };
  656. union
  657. {
  658. IN DWORD dwColumn;
  659. };
  660. union
  661. {
  662. IN DWORD dwDisplayOffset; // always valid offset
  663. };
  664. union
  665. {
  666. IN DWORD dwSize;
  667. };
  668. } PHONESETDISPLAY_PARAMS, *PPHONESETDISPLAY_PARAMS;
  669. typedef struct _PHONESETGAIN_PARAMS
  670. {
  671. union
  672. {
  673. OUT LONG lResult;
  674. };
  675. DWORD dwUnused;
  676. union
  677. {
  678. IN DWORD dwRemoteRequestID;
  679. };
  680. union
  681. {
  682. IN HPHONE hPhone;
  683. };
  684. union
  685. {
  686. IN DWORD dwHookSwitchDev;
  687. };
  688. union
  689. {
  690. IN DWORD dwGain;
  691. };
  692. } PHONESETGAIN_PARAMS, *PPHONESETGAIN_PARAMS;
  693. typedef struct _PHONESETHOOKSWITCH_PARAMS
  694. {
  695. union
  696. {
  697. OUT LONG lResult;
  698. };
  699. DWORD dwUnused;
  700. union
  701. {
  702. IN DWORD dwRemoteRequestID;
  703. };
  704. union
  705. {
  706. IN HPHONE hPhone;
  707. };
  708. union
  709. {
  710. IN DWORD dwHookSwitchDevs;
  711. };
  712. union
  713. {
  714. IN DWORD dwHookSwitchMode;
  715. };
  716. } PHONESETHOOKSWITCH_PARAMS, *PPHONESETHOOKSWITCH_PARAMS;
  717. typedef struct _PHONESETLAMP_PARAMS
  718. {
  719. union
  720. {
  721. OUT LONG lResult;
  722. };
  723. DWORD dwUnused;
  724. union
  725. {
  726. IN DWORD dwRemoteRequestID;
  727. };
  728. union
  729. {
  730. IN HPHONE hPhone;
  731. };
  732. union
  733. {
  734. IN DWORD dwButtonLampID;
  735. };
  736. union
  737. {
  738. IN DWORD dwLampMode;
  739. };
  740. } PHONESETLAMP_PARAMS, *PPHONESETLAMP_PARAMS;
  741. typedef struct _PHONESETRING_PARAMS
  742. {
  743. union
  744. {
  745. OUT LONG lResult;
  746. };
  747. DWORD dwUnused;
  748. union
  749. {
  750. IN DWORD dwRemoteRequestID;
  751. };
  752. union
  753. {
  754. IN HPHONE hPhone;
  755. };
  756. union
  757. {
  758. IN DWORD dwRingMode;
  759. };
  760. union
  761. {
  762. IN DWORD dwVolume;
  763. };
  764. } PHONESETRING_PARAMS, *PPHONESETRING_PARAMS;
  765. typedef struct _PHONESETSTATUSMESSAGES_PARAMS
  766. {
  767. union
  768. {
  769. OUT LONG lResult;
  770. };
  771. DWORD dwUnused;
  772. union
  773. {
  774. IN HPHONE hPhone;
  775. };
  776. union
  777. {
  778. IN DWORD dwPhoneStates;
  779. };
  780. union
  781. {
  782. IN DWORD dwButtonModes;
  783. };
  784. union
  785. {
  786. IN DWORD dwButtonStates;
  787. };
  788. } PHONESETSTATUSMESSAGES_PARAMS, *PPHONESETSTATUSMESSAGES_PARAMS;
  789. typedef struct _PHONESETVOLUME_PARAMS
  790. {
  791. union
  792. {
  793. OUT LONG lResult;
  794. };
  795. DWORD dwUnused;
  796. union
  797. {
  798. IN DWORD dwRemoteRequestID;
  799. };
  800. union
  801. {
  802. IN HPHONE hPhone;
  803. };
  804. union
  805. {
  806. IN DWORD dwHookSwitchDev;
  807. };
  808. union
  809. {
  810. IN DWORD dwVolume;
  811. };
  812. } PHONESETVOLUME_PARAMS, *PPHONESETVOLUME_PARAMS;
  813. typedef struct _PHONESHUTDOWN_PARAMS
  814. {
  815. union
  816. {
  817. OUT LONG lResult;
  818. };
  819. DWORD dwUnused;
  820. union
  821. {
  822. IN HPHONEAPP hPhoneApp;
  823. };
  824. } PHONESHUTDOWN_PARAMS, *PPHONESHUTDOWN_PARAMS;