stdafx.cpp 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. // stdafx.cpp : 只包括标准包含文件的源文件
  2. // BurndiscTest2.pch 将作为预编译头
  3. // stdafx.obj 将包含预编译类型信息
  4. #include "stdafx.h"
  5. HMODULE g_hBurdisc = NULL;
  6. IBurndisc* g_IBurndisc = NULL;
  7. /************************************************************************/
  8. /* 函数:[4/1/2018 Home];
  9. /* 描述:;
  10. /* 参数:;
  11. /* [IN] :;
  12. /* [OUT] :;
  13. /* [IN/OUT] :;
  14. /* 返回:void;
  15. /* 注意:;
  16. /* 示例:;
  17. /*
  18. /* 修改:;
  19. /* 日期:;
  20. /* 内容:;
  21. /************************************************************************/
  22. bool LoadIBurndiscLibrary(bool IsNeroModel)
  23. {
  24. g_hBurdisc = (HMODULE)LoadLibrary(_T("Burndiscs.dll"));
  25. if (g_hBurdisc)
  26. {
  27. ICreateIBurndisc pCreateBurndisc = (ICreateIBurndisc)GetProcAddress(g_hBurdisc, "CreateIBurndisc");
  28. if (pCreateBurndisc)
  29. {
  30. g_IBurndisc = pCreateBurndisc(IsNeroModel);
  31. return true;
  32. }
  33. }
  34. return false;
  35. }
  36. /************************************************************************/
  37. /* 函数:[4/1/2018 Home];
  38. /* 描述:;
  39. /* 参数:;
  40. /* [IN] :;
  41. /* [OUT] :;
  42. /* [IN/OUT] :;
  43. /* 返回:void;
  44. /* 注意:;
  45. /* 示例:;
  46. /*
  47. /* 修改:;
  48. /* 日期:;
  49. /* 内容:;
  50. /************************************************************************/
  51. void FreeIBurndiscLibrary()
  52. {
  53. if (g_IBurndisc)
  54. g_IBurndisc->Release();
  55. g_IBurndisc = NULL;
  56. if (g_hBurdisc)
  57. FreeLibrary(g_hBurdisc);
  58. }
  59. BOOL NERO_CALLBACK_ATTR _IdleCallback(void *pUserData)
  60. {
  61. return false;
  62. }
  63. NeroUserDlgInOut NERO_CALLBACK_ATTR _UserDialog(void *pUserData, NeroUserDlgInOut type, void *data)
  64. {
  65. return DLG_RETURN_EXIT;
  66. }
  67. BOOL NERO_CALLBACK_ATTR _ProgressCallback(void *pUserData, DWORD dwProgressInPercent)
  68. {
  69. printf("%03d%%\r", dwProgressInPercent);
  70. return false;
  71. }
  72. BOOL NERO_CALLBACK_ATTR _AbortedCallback(void *pUserData)
  73. {
  74. // printf("Abort ?\n");
  75. return false;
  76. }
  77. void NERO_CALLBACK_ATTR _AddLogLine(void *pUserData, NERO_TEXT_TYPE type, const char *text)
  78. {
  79. char *header = " ";
  80. const char *start;
  81. switch (type) {
  82. case NERO_TEXT_INFO: /* informative text */
  83. header = "i ";
  84. break;
  85. case NERO_TEXT_STOP: /* some operation stopped prematurely */
  86. header = "# ";
  87. break;
  88. case NERO_TEXT_EXCLAMATION: /* important information */
  89. header = "! ";
  90. break;
  91. case NERO_TEXT_QUESTION: /* a question which requires an answer */
  92. header = "? ";
  93. break;
  94. case NERO_TEXT_DRIVE: /* a message concerning a CD-ROM drive or recorder */
  95. header = "- ";
  96. break;
  97. default:
  98. break;
  99. }
  100. start = text;
  101. while (start) {
  102. const char *end = strchr(start, '\n');
  103. int len = end ? (int)(end - start) : strlen(start);
  104. fputs(header, stdout);
  105. fwrite(start, 1, len, stdout);
  106. // clear rest of line
  107. len = 79 - strlen(header) - len;
  108. while (--len >= 0) {
  109. putchar(' ');
  110. }
  111. puts("");
  112. start = end ? end + 1 : NULL;
  113. }
  114. }
  115. void NERO_CALLBACK_ATTR _SetPhaseCallback(void *pUserData, const char *text)
  116. {
  117. int len;
  118. printf(" %s", text);
  119. // clear rest of line
  120. len = 79 - strlen(text) - 5;
  121. while (--len >= 0) {
  122. putchar(' ');
  123. }
  124. putchar('\r');
  125. }
  126. void NERO_CALLBACK_ATTR _DisableAbortCallback(void *pUserData, BOOL enableAbort)
  127. {
  128. if (!enableAbort)
  129. puts("The current process cannot be interrupted");
  130. else puts("The process can be interrupted again");
  131. }
  132. void NERO_CALLBACK_ATTR _SetMajorPhaseCallback(void *pUserData, NERO_MAJOR_PHASE phase, void *reserved)
  133. {
  134. }
  135. DWORD NERO_CALLBACK_ATTR _WriteIOCallback(void *pUserData, BYTE *pBuffer, DWORD dwLen)
  136. {
  137. return fwrite(pBuffer, 1, dwLen, (FILE *)pUserData);
  138. }
  139. BOOL NERO_CALLBACK_ATTR _EOFCallback(void *pUserData)
  140. {
  141. return feof((FILE *)pUserData);
  142. }
  143. BOOL NERO_CALLBACK_ATTR _ErrorCallback(void *pUserData)
  144. {
  145. return ferror((FILE *)pUserData);
  146. }
  147. DWORD NERO_CALLBACK_ATTR _ReadIOCallback(void *pUserData, BYTE *pBuffer, DWORD dwLen)
  148. {
  149. return fread(pBuffer, 1, dwLen, (FILE *)pUserData);
  150. }