NeroCBUI.idl 29 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040
  1. /******************************************************************************
  2. |* THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
  3. |* ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
  4. |* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  5. |* PARTICULAR PURPOSE.
  6. |*
  7. |* Copyright 1995-2005 Nero AG. All Rights Reserved.
  8. |*-----------------------------------------------------------------------------
  9. |* NeroSDK / NeroCBUI
  10. |*
  11. |* PROGRAM: NeroCBUI.idl
  12. |*
  13. |* PURPOSE: Interface Definition Language file for NeroCBUI library.
  14. ******************************************************************************/
  15. import "oaidl.idl";
  16. #define DECLARE_NEROCBUI_STRUCT(name) typedef long LP##name; typedef long LPC##name
  17. #define DECLARE_NEROCBUI_HANDLE(name) typedef void * name
  18. // The following lines define some of the datatypes from the NeroAPI.h that are
  19. // used here. We must let them be known to the MIDL compiler but we must also
  20. // make sure that the definitions we make do not get to the generated .H file.
  21. //
  22. cpp_quote("#if 0")
  23. //cpp_quote("#ifdef REGISTER_PROXY_DLL")
  24. DECLARE_NEROCBUI_STRUCT(NERO_SCSI_DEVICE_INFO);
  25. DECLARE_NEROCBUI_STRUCT(NERO_SCSI_DEVICE_INFOS);
  26. DECLARE_NEROCBUI_HANDLE(NERO_DEVICEHANDLE);
  27. typedef LONG NERO_TEXT_TYPE;
  28. typedef LONG NERO_CD_FORMAT;
  29. typedef LONG NEROAPI_BURN_ERROR;
  30. typedef LONG NEROAPI_CDRW_ERASE_MODE;
  31. typedef LONG NERO_MEDIA_TYPE;
  32. typedef LONG NERO_MEDIA_SET;
  33. typedef LONG NERO_MAJOR_PHASE;
  34. typedef LONG NeroUserDlgInOut;
  35. typedef LONG NERO_WAITCD_TYPE;
  36. cpp_quote("#endif")
  37. cpp_quote("#ifdef REGISTER_PROXY_DLL")
  38. cpp_quote("#include \"..\\..\\NeroAPIPackage\\Include\\NeroAPIGlue.h\"")
  39. cpp_quote("#endif")
  40. cpp_quote("typedef NERO_SCSI_DEVICE_INFO * LPNERO_SCSI_DEVICE_INFO;")
  41. cpp_quote("typedef const NERO_SCSI_DEVICE_INFO * LPCNERO_SCSI_DEVICE_INFO;")
  42. cpp_quote("typedef NERO_SCSI_DEVICE_INFOS * LPNERO_SCSI_DEVICE_INFOS;")
  43. cpp_quote("typedef const NERO_SCSI_DEVICE_INFOS * LPCNERO_SCSI_DEVICE_INFOS;")
  44. [
  45. uuid(b3267063-8ab4-464d-a13c-1517bd6dc6f4),
  46. version(1.6),
  47. helpstring("NeroCBUI 1.6 Type Library")
  48. ]
  49. library NEROCBUILib
  50. {
  51. importlib("stdole32.tlb");
  52. importlib("stdole2.tlb");
  53. [
  54. uuid(9871f8af-152a-4651-834c-cdc5fe61c14c)
  55. ]
  56. // This object should first be created to pass the module handle for NeroCBUI
  57. // to use. Language can also be set here. This object has to persist as long
  58. // as NeroCBUI is used. On destruction of this object NeroCBUI is deinitialized.
  59. //
  60. coclass InitSettings
  61. {
  62. [default] interface IInitSettings3;
  63. interface IInitSettings2;
  64. interface IInitSettings;
  65. interface IInformation;
  66. };
  67. // This is the burn settings object. It is directly creatable by the client.
  68. // The client can set the initial burn settings for this object.
  69. //
  70. [
  71. uuid(ec39bf14-ca12-46cd-8ea2-b48d5a44350a)
  72. ]
  73. coclass BurnSettings
  74. {
  75. [default] interface IBurnSettings;
  76. };
  77. // This is the recorder combobox object. The client should create the object
  78. // and acquire the IRecorderCombobox and INERO_SCSI_DEVICE_INFO interfaces
  79. // first to set the working parameters. Then the client should create the
  80. // actual Win32 window through IChildWindow interface. The selected recorder
  81. // can be retrieved using INERO_SCSI_DEVICE_INFO interface.
  82. //
  83. [
  84. uuid(f495ebbe-a068-41fb-89b6-c605d20a2df3)
  85. ]
  86. coclass RecorderCombobox
  87. {
  88. [default] interface IRecorderCombobox3;
  89. interface IRecorderCombobox2;
  90. interface IRecorderCombobox;
  91. interface INERO_SCSI_DEVICE_INFO;
  92. interface IChildWindow;
  93. };
  94. // The burn settings window object should be assigned its working parameters
  95. // first through IBurnSettingsDlg and INERO_SCSI_DEVICE_INFO interfaces.
  96. // Then the client should create the actual Win32 window through IChildWindow
  97. // interface.
  98. //
  99. [
  100. uuid(e6028af3-ee0a-4e49-a043-c44437680ad8)
  101. ]
  102. coclass BurnSettingsDlg
  103. {
  104. [default] interface IBurnSettingsDlg;
  105. interface INERO_SCSI_DEVICE_INFO;
  106. interface IMfcPropertyPage;
  107. };
  108. [
  109. uuid(0b1511cd-37ee-4f0a-9647-cb2785b68a29)
  110. ]
  111. coclass BurnSettingsDlgParam
  112. {
  113. [default] interface IBurnSettingsDlg;
  114. interface INERO_SCSI_DEVICE_INFO;
  115. };
  116. // The progress window object should first be assigned its working parameters
  117. // through IBurnProgressDlg interface and then the actual Win32 window should
  118. // be created through IChildWindow. After the window is in place, IBurnProgressDlg
  119. // should be used again to initiate the actual burn process.
  120. //
  121. [
  122. uuid(a861a366-0c7a-484b-9116-f366bf0fa23f)
  123. ]
  124. coclass BurnProgressDlg
  125. {
  126. [default] interface IBurnProgressDlg3;
  127. interface IBurnProgressDlg2;
  128. interface IBurnProgressDlg;
  129. interface IModelessDialog;
  130. interface IBurnProgressDlgEx;
  131. };
  132. // The choose recorder dialog object is first assigned the initial recorder
  133. // selection (if needed) through INERO_SCSI_DEVICE_INFO interface and then
  134. // IModalDialog interface should be used to display the modal dialog.
  135. //
  136. [
  137. uuid(0edcdb7d-cd9e-44e6-9e9a-adbaa85540e8)
  138. ]
  139. coclass ChooseRecorderDlg
  140. {
  141. [default] interface INERO_SCSI_DEVICE_INFO;
  142. interface IModalDialog;
  143. };
  144. // The erase settings dialog object is first assigned its working parameters
  145. // through INERO_SCSI_DEVICE_INFO and INEROAPI_CDRW_ERASE_MODE interfaces and just
  146. // then is the dialog displayed through IModalDialog.
  147. //
  148. [
  149. uuid(1c613f47-70c5-4551-a264-f7254139854c)
  150. ]
  151. coclass EraseSettingsDlg
  152. {
  153. [default] interface INEROAPI_CDRW_ERASE_MODE;
  154. interface INERO_SCSI_DEVICE_INFO;
  155. interface IModalDialog;
  156. interface IEraseSettingsDlg2;
  157. interface IEraseSettingsDlg;
  158. };
  159. // The erase disc dialog object is first assigned its working parameters
  160. // and then it is displayed as a modal dialog box.
  161. //
  162. [
  163. uuid(7b9717b1-2d9b-4d14-b2da-d4bf5a28c6af)
  164. ]
  165. coclass EraseDiscDlg
  166. {
  167. [default] interface IEraseDiscDlg4;
  168. interface IEraseDiscDlg3;
  169. interface IEraseDiscDlg2;
  170. interface IEraseDiscDlg;
  171. interface INEROAPI_CDRW_ERASE_MODE;
  172. interface INERO_SCSI_DEVICE_INFO;
  173. interface IModalDialog;
  174. interface IModelessDialog;
  175. };
  176. // The disc info dialog object is first assigned its working parameters
  177. // and then it is displayed as a modal dialog box. NERO_SCSI_DEVICE_INFO
  178. // can be both set and obtained from the object.
  179. //
  180. [
  181. uuid(f1f2ece6-0289-4992-a536-f82dfc6f6d6e)
  182. ]
  183. coclass DiscInfoDlg
  184. {
  185. [default] interface INERO_SCSI_DEVICE_INFO;
  186. interface IModalDialog;
  187. };
  188. [
  189. uuid(940f79d9-2062-41b7-a22f-9e99ffdd1b85)
  190. ]
  191. coclass ImageInfoDlg
  192. {
  193. [default] interface IImageInfoDlg;
  194. interface IMfcPropertyPage;
  195. };
  196. [
  197. uuid(712a2867-02b2-402b-8f8d-74437494dcfb)
  198. ]
  199. coclass ImageInfoDlgParam
  200. {
  201. [default] interface IImageInfoDlg;
  202. };
  203. [
  204. uuid(e5b2709a-0e6b-45d3-83c8-ef90c2ed5340)
  205. ]
  206. coclass ChooseSessionDlg
  207. {
  208. [default] interface IChooseSessionDlg;
  209. interface IModalDialog;
  210. interface INERO_SCSI_DEVICE_INFO;
  211. };
  212. [
  213. uuid(612fbd09-aad2-4f1c-ba97-f56658b1161b)
  214. ]
  215. coclass SpeedCombobox
  216. {
  217. [default] interface ISpeedCombobox2;
  218. interface ISpeedCombobox;
  219. interface INERO_SCSI_DEVICE_INFO;
  220. interface IChildWindow;
  221. };
  222. [
  223. uuid(9e42f1b8-de23-4af5-a79a-0976e9ec5781)
  224. ]
  225. coclass WaitForMediaDlg
  226. {
  227. [default] interface IWaitForMediaDlg;
  228. };
  229. [
  230. uuid(bc91ed21-e702-44e5-aa88-9f2f70e986c6)
  231. ]
  232. coclass UserDlgHandler
  233. {
  234. [default] interface IUserDlgHandler2;
  235. interface IUserDlgHandler;
  236. };
  237. [
  238. uuid(7DDC763F-986B-484A-B08C-7D69DECE27E5),
  239. ]
  240. coclass RoboInfo
  241. {
  242. [default] interface IRoboInfo;
  243. interface INERO_SCSI_DEVICE_INFO;
  244. };
  245. [
  246. uuid(6761E2A8-D567-49EA-8727-5A7A2E0DDAB6),
  247. ]
  248. coclass RoboInfos
  249. {
  250. [default] interface IRoboInfos;
  251. };
  252. [
  253. uuid(2607FACC-5C6C-443C-8D49-3BF0B0005EE3),
  254. ]
  255. coclass ConfigureRoboDlg
  256. {
  257. [default] interface IConfigureRoboDlg;
  258. interface IModalDialog;
  259. interface INERO_SCSI_DEVICE_INFO;
  260. interface IRecorderComboboxCallbacks;
  261. };
  262. }
  263. import "oaidl.idl";
  264. import "ocidl.idl";
  265. [
  266. object,
  267. uuid(98654976-9086-4817-841c-b75b0ac0aaa6),
  268. pointer_default(unique),
  269. local
  270. ]
  271. // This interface implements the functionality of a modeless dialog.
  272. //
  273. interface IModelessDialog : IUnknown
  274. {
  275. HRESULT Create ([in] HWND hWndParent, [in] LPCRECT pRect, [out, retval] HWND * phWndRet);
  276. HRESULT Destroy ();
  277. HRESULT TranslateAccelerator ([in] MSG * pMsg);
  278. }
  279. [
  280. object,
  281. uuid(8268ed13-82f5-4dcc-bb13-95b5c7a64590),
  282. pointer_default(unique),
  283. local
  284. ]
  285. // This interface contains the common functionality of getting and setting the
  286. // NERO_SCSI_DEVICE_INFO information. Some objects inheriting from this interface
  287. // might not need the get part of this interface. In those cases, get method will
  288. // return E_NOTIMPL.
  289. //
  290. interface INERO_SCSI_DEVICE_INFO : IUnknown
  291. {
  292. // This method allows the client to specify a particular recorder to be the default initial
  293. // selection. The default is no selection and the same effect is accomplished if pDeviceInfo
  294. // is NULL or if it is non-NULL but match could not be found (probably bogus NERO_SCSI_DEVICE_INFO).
  295. //
  296. [propput] HRESULT NERO_SCSI_DEVICE_INFO ([in] const LPNERO_SCSI_DEVICE_INFO pDeviceInfo);
  297. // This method should be invoked after the dialog has been displayed and dismissed to retrieve the
  298. // user's selection. if pDeviceInfo is NULL, the method is a no-op. If it is non-NULL, it is
  299. // assumed that it points to at least sizeof(NERO_SCSI_DEVICE_INFO) big buffer which will be filled
  300. // with the user's current selection.
  301. //
  302. [propget] HRESULT NERO_SCSI_DEVICE_INFO ([out, retval] LPNERO_SCSI_DEVICE_INFO * ppDeviceInfo);
  303. }
  304. [
  305. object,
  306. uuid(3bd2799a-b364-405a-a63b-104d7fbfeb8a),
  307. pointer_default(unique),
  308. local
  309. ]
  310. // This interface is normally only implemented by the client when
  311. // the client wants to be notified of the combobox selection change.
  312. //
  313. interface IRecorderComboboxCallbacks : IUnknown
  314. {
  315. HRESULT OnFilterRecorder ([in] LPCNERO_SCSI_DEVICE_INFO pDeviceInfo, [out, retval] BOOL * pbAccept);
  316. HRESULT OnFilterEnd ();
  317. HRESULT OnContentRefreshed ();
  318. HRESULT OnCurSelInUseStatusChange ([in] BOOL bInUse);
  319. };
  320. [
  321. object,
  322. uuid(c76f66ef-b4d7-496b-9ab7-409a965d9c43),
  323. pointer_default(unique),
  324. local
  325. ]
  326. // After creating the RecorderCombobox object and creating the actual
  327. // child window through IChildWindow interface, the following interface
  328. // is used to set the working parameters.
  329. //
  330. interface IRecorderCombobox : IUnknown
  331. {
  332. // If the client is interested in receiving events from this combobox
  333. // it should implement IRecorderComboboxCallbacks interface and pass
  334. // the pointer.
  335. //
  336. [propput] HRESULT Callbacks ([in] IRecorderComboboxCallbacks * pCallbacks);
  337. };
  338. [
  339. object,
  340. uuid(de6f71ce-1faf-405c-8e8e-0a32dc023b59),
  341. pointer_default(unique),
  342. local
  343. ]
  344. interface IRecorderCombobox2 : IRecorderCombobox
  345. {
  346. // Force a refresh on the combobox.
  347. HRESULT Refresh ([in] BOOL bRescan);
  348. // prepend a custom entry to the combo box
  349. HRESULT PrependCustomEntry ([in] HICON hIcon, [in] BSTR bstrText, [in] const void * pUserData);
  350. // append a custom entry to the combo box
  351. HRESULT AppendCustomEntry ([in] HICON hIcon, [in] BSTR bstrText, [in] const void * pUserData);
  352. HRESULT RemoveCustomEntry ([in] const void * pUserData, [out, retval] BOOL * pbSuccess);
  353. // set the current selection to the entry specified by the pUserData
  354. [propput] HRESULT CustomEntry([in] const void * pUserData);
  355. // get the current selection to the entry specified by the pUserData
  356. [propget] HRESULT CustomEntry([out, retval] const void ** pUserData);
  357. };
  358. [
  359. object,
  360. uuid(40a779dc-9ddc-4d02-bf07-717f419c00aa),
  361. pointer_default(unique),
  362. local
  363. ]
  364. interface IRecorderCombobox3 : IRecorderCombobox2
  365. {
  366. [propput] HRESULT DriveByName ([in] BSTR bstrName);
  367. [propput] HRESULT DriveByLetter ([in] BSTR bstrLetter);
  368. }
  369. [
  370. object,
  371. uuid(29c0c344-4c3c-4d4c-bd49-622ccfbd2c2e),
  372. pointer_default(unique),
  373. local
  374. ]
  375. // BurnSettings object is accessed through this interface. It is
  376. // used solely to store burn settings information. The object is normally
  377. // created by the client.
  378. //
  379. interface IBurnSettings : IUnknown
  380. {
  381. // Get and set the burn flags.
  382. //
  383. [propget] HRESULT BurnFlags([out, retval] DWORD * pdwBurnFlags);
  384. [propput] HRESULT BurnFlags([in] DWORD dwBurnFlags);
  385. // Get and set the burn speed.
  386. //
  387. [propget] HRESULT Speed([out, retval] DWORD * pdwSpeed);
  388. [propput] HRESULT Speed([in] DWORD dwSpeed);
  389. };
  390. typedef [v1_enum] enum _tagBURN_SETTINGS_GUI_FLAGS
  391. {
  392. BSGF_DETERMINE_MAXIMUM_SPEED = 1L<< 0,
  393. BSGF_SIMULATION = 1L<< 1,
  394. BSGF_WRITE = 1L<< 2,
  395. BSGF_FINALIZE_CD = 1L<< 3,
  396. BSGF_WRITE_SPEED = 1L<< 4,
  397. BSGF_WRITE_METHOD = 1L<< 5,
  398. BSGF_BURN_PROOF = 1L<< 6,
  399. BSGF_PROGRESS = 1L<< 7,
  400. BSGF_VERIFY_WRITTEN_DATA = 1L<< 8,
  401. }
  402. BURN_SETTINGS_GUI_FLAGS;
  403. [
  404. object,
  405. uuid(0e17506d-ef14-4f3f-92bc-d3ae0739d079),
  406. pointer_default(unique),
  407. local
  408. ]
  409. interface IBurnSettingsDlg : IUnknown
  410. {
  411. // Set the working parameters for this settings window. Flags are yet to
  412. // be defined. IBurnSettings interface points to the object
  413. // created by the client.
  414. //
  415. [propput] HRESULT BurnSettings ([in] IBurnSettings * pBurnSettings);
  416. [propput] HRESULT GUIFlags ([in] DWORD dwFlags);
  417. [propput] HRESULT MediaType ([in] NERO_MEDIA_TYPE mediaType);
  418. };
  419. [
  420. object,
  421. uuid(01e72686-14ec-4a44-be83-6c1cf9bfa2c0),
  422. pointer_default(unique),
  423. local
  424. ]
  425. // This interface is used solely for the purpose of giving the client a
  426. // chance to handle the callback notifications from the NeroAPI engine.
  427. // If the user wants them then the user should implement this interface
  428. // and pass its pointer where appropriate (see IBurnProgressDlg interface
  429. // below).
  430. //
  431. interface IBurnCallbacks : IUnknown
  432. {
  433. HRESULT OnDoneBurn([in] NEROAPI_BURN_ERROR burnError);
  434. HRESULT Progress([in] DWORD dwProgressInPercent, [out, retval] BOOL * pbRetVal);
  435. HRESULT SubtaskProgress([in] DWORD dwProgressInPercent, [out, retval] BOOL * pbRetVal);
  436. HRESULT AddLogLine([in] NERO_TEXT_TYPE type, [in] BSTR bstrLogLine);
  437. HRESULT SetPhase([in] BSTR bstrPhase);
  438. HRESULT SetMajorPhase([in] NERO_MAJOR_PHASE majorPhase);
  439. HRESULT Aborted ([out, retval] BOOL * pbRetVal);
  440. HRESULT DisableAbort ([in] BOOL bAbortEnabled);
  441. }
  442. typedef [v1_enum] enum _tagBURN_PROGRESS_GUI_FLAGS
  443. {
  444. BPGF_TOTAL_TIME = 1L<< 0,
  445. BPGF_CURRENT_ACTION = 1L<< 1,
  446. BPGF_USED_BUFFER = 1L<< 2,
  447. BPGF_CANCEL_BUTTON = 1L<< 3,
  448. BPGF_CLOSE_DISCARD_BUTTON = 1L<< 4,
  449. BPGF_PRINT_BUTTON = 1L<< 6,
  450. BPGF_SAVE_BUTTON = 1L<< 7,
  451. }
  452. BURN_PROGRESS_GUI_FLAGS;
  453. typedef [v1_enum] enum _tagBURN_PROGRESS_CUSTOM_CONTROL_POSITION
  454. {
  455. BPCCP_BOTTOM_RIGHT_CORNER,
  456. }
  457. BURN_PROGRESS_CUSTOM_CONTROL_POSITION;
  458. [
  459. object,
  460. uuid(ee2ae31b-c11d-40ea-a75b-884837328387),
  461. pointer_default(unique),
  462. local
  463. ]
  464. interface IBurnProgressDlgCallbacks : IUnknown
  465. {
  466. HRESULT OnCancel ([out, retval] BOOL * pbAllowCancel);
  467. HRESULT OnDiscard ();
  468. HRESULT OnClose ();
  469. }
  470. [
  471. object,
  472. uuid(f9da148d-0052-4b6f-bb4f-c35e1fd4c5a3),
  473. pointer_default(unique),
  474. local
  475. ]
  476. // After creating the BurnProgressDlg object and creating the actual
  477. // child window through IChildWindow interface, the following interface
  478. // is used to 1) set working parameters to the object with SetParameters
  479. // method and 2) to initiate the burn process itself through one of the
  480. // two variants of burn methods.
  481. //
  482. interface IBurnProgressDlg : IUnknown
  483. {
  484. // Flags are yet to be defined.
  485. //
  486. [propput] HRESULT GUIFlags ([in] DWORD dwFlags);
  487. [propput] HRESULT CompilationName ([in] BSTR bstrCompilationName);
  488. [propput] HRESULT CompilationType ([in] BSTR bstrCompilationType);
  489. [propput] HRESULT CompilationSize ([in] BSTR bstrCompilationSize);
  490. [propput] HRESULT CompilationTime ([in] BSTR bstrCompilationTime);
  491. // Methods used for burning. IBurnCallbacks interface pointer can be NULL. If
  492. // non-NULL, it is assumed that the client wants to be notified during the burn
  493. // process about the major developments.
  494. //
  495. HRESULT Burn([in] const LPNERO_SCSI_DEVICE_INFO pDeviceInfo, [in] NERO_CD_FORMAT cdFormat, [in] const void * pWriteCD, [in] IBurnSettings * pBurnSettings, [in] IBurnCallbacks * pBurnCallbacks);
  496. HRESULT Burn2([in] const LPNERO_SCSI_DEVICE_INFO pDeviceInfo, [in] NERO_CD_FORMAT cdFormat, [in] const void * pWriteCD, [in] DWORD dwBurnFlags, [in] DWORD dwSpeed, [in] IBurnCallbacks * pBurnCallbacks);
  497. // This method is used to cancel the burn process.
  498. //
  499. HRESULT Cancel ();
  500. HRESULT CanCloseParent ([out, retval] BOOL * pbCanClose);
  501. HRESULT AllocateProgressBar ([in] DWORD dwPreProgress, [in] DWORD dwPostProgress);
  502. HRESULT SetProgress([in] DWORD dwProgressInPercent);
  503. HRESULT AddLogLine([in] NERO_TEXT_TYPE type, [in] BSTR bstrLogLine);
  504. HRESULT SetPhase([in] BSTR bstrPhase);
  505. };
  506. [
  507. object,
  508. uuid(2053e9d5-8460-4e52-aba2-832202624365),
  509. pointer_default(unique),
  510. local
  511. ]
  512. interface IBurnProgressDlg2 : IBurnProgressDlg
  513. {
  514. [propput] HRESULT WizardMode ([in] BOOL bWizardMode);
  515. };
  516. [
  517. object,
  518. uuid(fda257a8-46ca-452e-9f3c-05798d3382c0),
  519. pointer_default(unique),
  520. local
  521. ]
  522. interface IExternalChildWindow : IUnknown
  523. {
  524. HRESULT Create ([in] HWND hWndParent, [out, retval] HWND * phWnd);
  525. [propget] HRESULT MinSize ([out, retval] SIZE * pSize);
  526. [propget] HRESULT MaxSize ([out, retval] SIZE * pSize);
  527. };
  528. [
  529. object,
  530. uuid(4aa37a65-74c2-4da1-b98b-3803c6b9c592),
  531. pointer_default(unique),
  532. local
  533. ]
  534. interface IBurnProgressDlg3 : IBurnProgressDlg2
  535. {
  536. HRESULT AddCustomControl ([in] BURN_PROGRESS_CUSTOM_CONTROL_POSITION bpccpWhere, [in] IExternalChildWindow * pControl);
  537. };
  538. [
  539. object,
  540. uuid(3ef6e092-cb60-4edb-bad2-dbcf097c452a),
  541. pointer_default(unique),
  542. local
  543. ]
  544. interface IBurnProgressDlgEx : IUnknown
  545. {
  546. [propput] HRESULT IBurnProgressDlgCallbacks ([in] IBurnProgressDlgCallbacks * pCallbacks);
  547. }
  548. [
  549. object,
  550. uuid(d0509114-6204-41f6-a6da-8fd32eabc82f),
  551. pointer_default(unique),
  552. local
  553. ]
  554. // All objects that display modal dialogs inherit from this interface. It provides
  555. // the simple mechanism of invoking a modal dialog, specifying the parent window
  556. // and getting back the result in terms of IDOK, IDCANCEL, etc.
  557. //
  558. interface IModalDialog : IUnknown
  559. {
  560. HRESULT DoModal ([in] HWND hWndParent, [out, retval] int * piRetVal);
  561. }
  562. [
  563. object,
  564. uuid(30603428-c6bb-45c1-8b35-a02cda5c7086),
  565. pointer_default(unique),
  566. local
  567. ]
  568. interface INEROAPI_CDRW_ERASE_MODE : IUnknown
  569. {
  570. // This method allows the client to change the default initial selection for the erase mode.
  571. //
  572. [propput] HRESULT NEROAPI_CDRW_ERASE_MODE ([in] NEROAPI_CDRW_ERASE_MODE eraseMode);
  573. // After the dialog has been dismissed, the client can get the selected erase mode with this method.
  574. //
  575. [propget] HRESULT NEROAPI_CDRW_ERASE_MODE ([out, retval] NEROAPI_CDRW_ERASE_MODE * pEraseMode);
  576. }
  577. [
  578. object,
  579. uuid(9a45a9f6-fe69-4fe8-9862-751693dc87df),
  580. pointer_default(unique),
  581. local
  582. ]
  583. interface IEraseDiscDlg : IUnknown
  584. {
  585. // This method allows the client to specify the device handle of the recorder.
  586. //
  587. [propput] HRESULT NERO_DEVICEHANDLE ([in] NERO_DEVICEHANDLE aDeviceHandle);
  588. // Get the result of the erase operation. Two variants, integer and string error.
  589. //
  590. [propget] HRESULT ErasingResult ([out, retval] int * piErasingResult);
  591. [propget] HRESULT ErasingResultString ([out, retval] BSTR * pbstrErasingResult);
  592. }
  593. [
  594. object,
  595. uuid(b28dc5d4-9593-4179-aaaa-df3c8f28db72),
  596. pointer_default(unique),
  597. local
  598. ]
  599. interface IEraseDiscDlg2 : IEraseDiscDlg
  600. {
  601. [propput] HRESULT ErasingFlags ([in] DWORD dwFlags);
  602. }
  603. [
  604. object,
  605. uuid(62b3f282-ad7a-42f7-bdb1-b27772bdb61d),
  606. pointer_default(unique),
  607. local
  608. ]
  609. interface IEraseDiscCallbacks : IUnknown
  610. {
  611. HRESULT OnEraseDone ([in] IEraseDiscDlg * pEraseDiscDlg);
  612. };
  613. [
  614. object,
  615. uuid(79b3261b-b57f-493e-a7bd-3325b5f58350),
  616. pointer_default(unique),
  617. local
  618. ]
  619. interface IEraseDiscDlg3 : IEraseDiscDlg2
  620. {
  621. [propput] HRESULT Callbacks ([in] IEraseDiscCallbacks * pCallbacks);
  622. }
  623. [
  624. object,
  625. uuid(d658288d-1d49-4eb9-869e-10e5ddd40d16),
  626. pointer_default(unique),
  627. local
  628. ]
  629. interface IEraseDiscDlg4 : IEraseDiscDlg3
  630. {
  631. [propput] HRESULT NeverShowDialogBox ([in] BOOL bDontShow);
  632. }
  633. [
  634. object,
  635. uuid(cd72cad8-d41a-40b2-9943-01f30b1507cc),
  636. pointer_default(unique),
  637. local
  638. ]
  639. interface IEraseSettingsDlg : IUnknown
  640. {
  641. [propput] HRESULT ModelessErase ([in] BOOL bModelessErase);
  642. [propput] HRESULT Callbacks ([in] IEraseDiscCallbacks * pCallbacks);
  643. }
  644. [
  645. object,
  646. uuid(0040D3ED-84A2-4e56-9539-646BDC57DE4A),
  647. pointer_default(unique),
  648. local
  649. ]
  650. interface IEraseSettingsDlg2 : IEraseSettingsDlg
  651. {
  652. [propget] HRESULT ModelessDlgHWND ([out, retval] HWND* phModelessDlgHWND);
  653. }
  654. [
  655. object,
  656. uuid(0f5ebcfd-2d94-4896-8169-088870dfdbaf),
  657. pointer_default(unique),
  658. local
  659. ]
  660. interface IInitSettings : IUnknown
  661. {
  662. // The client should pass NeroAPI module handle through this property. If no
  663. // or NULL handle is passed, NeroCBUI will try to get the handle of the already
  664. // loaded NeroAPI dll.
  665. //
  666. [propput] HRESULT HMODULE ([in] HMODULE hNeroAPIModule);
  667. // The way to set the language code.
  668. //
  669. [propput] HRESULT LanguageCode ([in] const signed char * psLanguageCode);
  670. }
  671. [
  672. object,
  673. uuid(4baf9833-70bb-4523-8349-5209b5644587),
  674. pointer_default(unique),
  675. local
  676. ]
  677. interface IInitSettings2 : IInitSettings
  678. {
  679. [propput] HRESULT AppTitle ([in] const signed char * psAppTitle);
  680. }
  681. [
  682. object,
  683. uuid(9964816b-df5f-44aa-9b87-f0de3f4c57fc),
  684. pointer_default(unique),
  685. local
  686. ]
  687. interface IInitSettings3 : IInitSettings2
  688. {
  689. [propput] HRESULT CompatibilityMgr ([in] IUnknown * pMgr);
  690. }
  691. [
  692. object,
  693. uuid(5db904aa-9c92-494e-897c-5aaa5337cf2d),
  694. pointer_default(unique),
  695. local
  696. ]
  697. interface IInformation : IUnknown
  698. {
  699. [propget] HRESULT Version ([out] WORD * pwMajHi, [out] WORD * pwMajLo, [out] WORD * pwMinHi, [out] WORD * pwMinLo);
  700. [propget] HRESULT InstallFolder ([out, retval] BSTR * pbstrFolder);
  701. }
  702. [
  703. object,
  704. uuid(f714bdc1-aec8-41de-83d2-db9c9437fdb2),
  705. pointer_default(unique),
  706. local
  707. ]
  708. interface IChildWindow : IUnknown
  709. {
  710. HRESULT Subclass ([in] HWND hWnd, [out, retval] BOOL * pbRetVal);
  711. }
  712. [
  713. object,
  714. uuid(2302b658-de28-4233-96bd-3bb5fb7b747e),
  715. pointer_default(unique),
  716. local
  717. ]
  718. interface IImageInfoDlg: IUnknown
  719. {
  720. [propput] HRESULT ImageFilename ([in] BSTR bstrFilename);
  721. };
  722. [
  723. object,
  724. uuid(35e68486-0c10-41c5-a52a-55d8c0ba61f2),
  725. pointer_default(unique),
  726. local
  727. ]
  728. interface IChooseSessionDlg: IUnknown
  729. {
  730. [propget] HRESULT TrackNumber ([out, retval] DWORD * pdwVal);
  731. };
  732. [
  733. object,
  734. uuid(efbe7cff-6878-4dce-b40d-e21c5d7698b6),
  735. pointer_default(unique),
  736. local
  737. ]
  738. interface ISpeedComboboxCallbacks : IUnknown
  739. {
  740. HRESULT OnContentRefreshed ();
  741. };
  742. [
  743. object,
  744. uuid(4855a95f-969f-49cd-8f5a-ca04e2aa7a62),
  745. pointer_default(unique)
  746. ]
  747. interface ISpeedCombobox : IUnknown
  748. {
  749. [propput] HRESULT Callbacks ([in] ISpeedComboboxCallbacks * pCallbacks);
  750. [propput] HRESULT MediaType ([in] NERO_MEDIA_TYPE mediaType);
  751. [propget] HRESULT Speed([out, retval] DWORD * pdwSpeed);
  752. [propget] HRESULT SpeedInKBs ([out, retval] DWORD * pdwSpeedInKBs);
  753. [propput] HRESULT HideWhenEmpty ([in] BOOL bHide);
  754. };
  755. [
  756. object,
  757. uuid(6c373d24-7575-4507-972c-1814914570c9),
  758. pointer_default(unique)
  759. ]
  760. interface ISpeedCombobox2 : ISpeedCombobox
  761. {
  762. [propput] HRESULT SpeedInKbps ([in] DWORD dwSpeedInKbps);
  763. [propput] HRESULT SpeedInX ([in] DWORD dwSpeedInX);
  764. };
  765. [
  766. object,
  767. uuid(ed8b6cb0-5ab6-4db4-9d61-5dcf28f73d05),
  768. pointer_default(unique),
  769. local
  770. ]
  771. interface IWaitForMediaDlg : IUnknown
  772. {
  773. HRESULT WaitForMedia ([in] HWND hWndParent, [in] NERO_DEVICEHANDLE aDeviceHandle, [in] NERO_MEDIA_SET nms, [in] DWORD dwBurnFlags, [in] void * pCDStamp, [out, retval] BOOL * pbAbort);
  774. }
  775. [
  776. object,
  777. uuid(911fb1f9-6576-4947-bf24-476babe78016),
  778. pointer_default(unique),
  779. local
  780. ]
  781. interface IUserDlgHandler : IUnknown
  782. {
  783. [propput] HRESULT ParentHWND ([in] HWND hWndParent);
  784. HRESULT HandleUserDlg ([in] NeroUserDlgInOut type, [in] void *data, [out, retval] NeroUserDlgInOut * pRetVal);
  785. [propget] HRESULT Aborted ([out, retval] BOOL * pbAborted);
  786. [propput] HRESULT Aborted ([in] BOOL bAborted);
  787. }
  788. [
  789. object,
  790. uuid(283b5786-5984-40fe-bbe2-ce01201a765e),
  791. pointer_default(unique),
  792. local
  793. ]
  794. interface IUserDlgHandler2 : IUserDlgHandler
  795. {
  796. HRESULT AddCustomWaitCDMessage ([in] NERO_WAITCD_TYPE waitcdType, [in] BSTR bstrMessage);
  797. }
  798. /** Robot info interface provides access to robot information mandatory to initialize NeroAPI, if
  799. * duplication system should be used to move disc to and from recorder. */
  800. [
  801. object,
  802. uuid(ABBA3FCD-94DE-4A1A-8494-85554CC2DE17),
  803. pointer_default(unique)
  804. ]
  805. interface IRoboInfo : IUnknown
  806. {
  807. /** Put/Get robot name. */
  808. [propget] HRESULT RoboName([out, retval] BSTR *pbstrRoboName);
  809. [propput] HRESULT RoboName([in] BSTR bstrRoboName);
  810. /** Put/Get printer name. */
  811. [propget] HRESULT PrinterName([out, retval] BSTR *pbstrPrinterName);
  812. [propput] HRESULT PrinterName([in] BSTR bstrPrinterName);
  813. /** Put/Get port type. Currently only COM ports are supported. */
  814. [propget] HRESULT PortType([out, retval] DWORD *pdwPortType);
  815. [propput] HRESULT PortType([in] DWORD dwPortType);
  816. /** Put/Get port number. */
  817. [propget] HRESULT PortNumber([out, retval] DWORD *pdwPortNo);
  818. [propput] HRESULT PortNumber([in] DWORD dwPortNo);
  819. };
  820. /** Configure robot dialog callbacks will notify caller if particular user interactioon is made.
  821. * As parameter of each method we pass current robot infos read from dialog. */
  822. [
  823. object,
  824. uuid(DCE552A9-71FE-4E5C-9B1D-1EE9133F9EC1),
  825. pointer_default(unique)
  826. ]
  827. interface IConfigureRoboDlgCallbacks : IUnknown
  828. {
  829. /** Called if configure robot button was clicked. */
  830. HRESULT OnConfigureRobot([in] IRoboInfo* pRoboInfo);
  831. /** Called if test robot button was clicked. */
  832. HRESULT OnTestRobot([in] IRoboInfo* pRoboInfo);
  833. /** Called if the selection in port type combo was changed. */
  834. HRESULT OnRobotPortChanged([in] IRoboInfo* pRoboInfo);
  835. /** This is currently not supported by NeroAPI but called if the user wishs
  836. * to automatically erase not empty RW discs. */
  837. HRESULT OnRobotBlankCdrw([in] IRoboInfo* pRoboInfo, [in] BOOL bChecked);
  838. };
  839. /** Robot infos list provides standard put/get methods as well as enumeration capability.
  840. * Note, the robot infos are unique for each recorder, i.e. each recorder must have only
  841. * one robot info associated with and we do not accept robot infos without valid robot name.
  842. * Therefore, if robot info without valid robot name will be passed to the put_RoboInfo
  843. * method, we assume we should remove this robot info for specified recorder from the list. */
  844. [
  845. object,
  846. uuid(50C3A98B-9494-4FDB-B24F-73C4E8675F6F),
  847. pointer_default(unique)
  848. ]
  849. interface IRoboInfos : IUnknown
  850. {
  851. /** Get number of currentl available robot infos. */
  852. [propget] HRESULT Count([out, retval] DWORD *pVal);
  853. /** Get robot info for specified recorder. */
  854. [propget] HRESULT RoboInfo([out, retval] IRoboInfo** pVal);
  855. /** Add robot info for specified recorder. If the robot name is invalid (empty)
  856. * we will try to remove this robot info from our list. */
  857. [propput] HRESULT RoboInfo([in] IRoboInfo* newVal);
  858. /** Get robot info by the position number in our list. */
  859. [propget] HRESULT RoboInfoByNumber(DWORD dwNum, [out, retval] IRoboInfo** pVal);
  860. /** Empty robot info list. */
  861. HRESULT Clear();
  862. };
  863. /** Configure robot dialog interface provide methods to get/set robot infos list as well as
  864. * to initialize dialog callbacks defined above. The dialog enables the user to configure
  865. * robot settings like robot name, port type and number as well as printer name, which are
  866. * mandatory to initialize NeroAPI for using robot. Currently we do not associate robot infos
  867. * configured in the dialog to selected recorder automatically but simply return the infos
  868. * if get_RoboInfos method is called. Therefore the caller of IConfigureRoboDlg is responsible
  869. * to associate retrieved infos in NeroAPI. */
  870. [
  871. object,
  872. uuid(7D9DC3B6-9A01-406E-9BE4-BE75944D9B6C),
  873. pointer_default(unique)
  874. ]
  875. interface IConfigureRoboDlg : IUnknown
  876. {
  877. /** If the caller wishs to be notified about special user interaction like changing port type
  878. * or clicking configure robot button, it has to implement callbeck methodd defined above and
  879. * pass it to this method. */
  880. [propput] HRESULT Callbacks(IConfigureRoboDlgCallbacks* pCallbacks);
  881. /** Set stored robot infos, which will be displayed in the dialog. */
  882. [propget] HRESULT RoboInfos([out, retval] IRoboInfos** pVal);
  883. /** Get new or changed by user robot infos. */
  884. [propput] HRESULT RoboInfos([in] IRoboInfos* newVal);
  885. };
  886. // MFC SPECIFIC STUFF !!!
  887. //
  888. cpp_quote("#ifdef __AFX_H__ ")
  889. cpp_quote("#if _MFC_VER < 0x0700")
  890. cpp_quote("typedef AFX_OLDPROPSHEETPAGE * LPAFX_OLDPROPSHEETPAGE;")
  891. cpp_quote("#else")
  892. cpp_quote("typedef LPPROPSHEETPAGE LPAFX_OLDPROPSHEETPAGE;")
  893. cpp_quote("#endif")
  894. cpp_quote("#else")
  895. cpp_quote("typedef long LPAFX_OLDPROPSHEETPAGE;")
  896. cpp_quote("#endif")
  897. cpp_quote("#if 0")
  898. DECLARE_NEROCBUI_STRUCT(AFX_OLDPROPSHEETPAGE);
  899. cpp_quote("#endif")
  900. [
  901. object,
  902. uuid(25398f04-eb36-4cd3-921e-af1aac1a3e61),
  903. pointer_default(unique),
  904. local
  905. ]
  906. interface IMfcPropertyPage : IUnknown
  907. {
  908. [propget] HRESULT AFX_OLDPROPSHEETPAGE ([out, retval] LPAFX_OLDPROPSHEETPAGE * ppPSP);
  909. }
  910. // PRIVATE INTERFACES !!!
  911. //
  912. [
  913. object,
  914. uuid(a8a66560-7a62-444d-b5e3-629dd8865c80),
  915. pointer_default(unique),
  916. hidden
  917. ]
  918. interface IPrivateDeviceInfos : IUnknown
  919. {
  920. HRESULT Private_NewDeviceInfos ([in] LPNERO_SCSI_DEVICE_INFOS pDeviceInfos);
  921. HRESULT Private_DeviceInfoInUseChange ([in] LPNERO_SCSI_DEVICE_INFO pDeviceInfo, [in] BOOL bInUse);
  922. HRESULT Private_DeviceInfoDiscChange ([in] LPNERO_SCSI_DEVICE_INFO pDeviceInfo, [in] BOOL bInserted);
  923. HRESULT Private_DisplayWaitCursor ([in] BOOL bDisplayIt);
  924. }
  925. [
  926. object,
  927. uuid(671fd79b-c0af-4bb3-9738-e229871732f9),
  928. pointer_default(unique),
  929. local
  930. ]
  931. interface IPrivateImageInfoDlg: IUnknown
  932. {
  933. [propget] HRESULT Private_ImageFilename ([out, retval] BSTR * pbstrFilename);
  934. };