// stdafx.cpp : 只包括标准包含文件的源文件 // BurndiscTest2.pch 将作为预编译头 // stdafx.obj 将包含预编译类型信息 #include "stdafx.h" HMODULE g_hBurdisc = NULL; IBurndisc* g_IBurndisc = NULL; /************************************************************************/ /* 函数:[4/1/2018 Home]; /* 描述:; /* 参数:; /* [IN] :; /* [OUT] :; /* [IN/OUT] :; /* 返回:void; /* 注意:; /* 示例:; /* /* 修改:; /* 日期:; /* 内容:; /************************************************************************/ bool LoadIBurndiscLibrary(bool IsNeroModel) { g_hBurdisc = (HMODULE)LoadLibrary(_T("Burndiscs.dll")); if (g_hBurdisc) { ICreateIBurndisc pCreateBurndisc = (ICreateIBurndisc)GetProcAddress(g_hBurdisc, "CreateIBurndisc"); if (pCreateBurndisc) { g_IBurndisc = pCreateBurndisc(IsNeroModel); return true; } } return false; } /************************************************************************/ /* 函数:[4/1/2018 Home]; /* 描述:; /* 参数:; /* [IN] :; /* [OUT] :; /* [IN/OUT] :; /* 返回:void; /* 注意:; /* 示例:; /* /* 修改:; /* 日期:; /* 内容:; /************************************************************************/ void FreeIBurndiscLibrary() { if (g_IBurndisc) g_IBurndisc->Release(); g_IBurndisc = NULL; if (g_hBurdisc) FreeLibrary(g_hBurdisc); } BOOL NERO_CALLBACK_ATTR _IdleCallback(void *pUserData) { return false; } NeroUserDlgInOut NERO_CALLBACK_ATTR _UserDialog(void *pUserData, NeroUserDlgInOut type, void *data) { return DLG_RETURN_EXIT; } BOOL NERO_CALLBACK_ATTR _ProgressCallback(void *pUserData, DWORD dwProgressInPercent) { printf("%03d%%\r", dwProgressInPercent); return false; } BOOL NERO_CALLBACK_ATTR _AbortedCallback(void *pUserData) { // printf("Abort ?\n"); return false; } void NERO_CALLBACK_ATTR _AddLogLine(void *pUserData, NERO_TEXT_TYPE type, const char *text) { char *header = " "; const char *start; switch (type) { case NERO_TEXT_INFO: /* informative text */ header = "i "; break; case NERO_TEXT_STOP: /* some operation stopped prematurely */ header = "# "; break; case NERO_TEXT_EXCLAMATION: /* important information */ header = "! "; break; case NERO_TEXT_QUESTION: /* a question which requires an answer */ header = "? "; break; case NERO_TEXT_DRIVE: /* a message concerning a CD-ROM drive or recorder */ header = "- "; break; default: break; } start = text; while (start) { const char *end = strchr(start, '\n'); int len = end ? (int)(end - start) : strlen(start); fputs(header, stdout); fwrite(start, 1, len, stdout); // clear rest of line len = 79 - strlen(header) - len; while (--len >= 0) { putchar(' '); } puts(""); start = end ? end + 1 : NULL; } } void NERO_CALLBACK_ATTR _SetPhaseCallback(void *pUserData, const char *text) { int len; printf(" %s", text); // clear rest of line len = 79 - strlen(text) - 5; while (--len >= 0) { putchar(' '); } putchar('\r'); } void NERO_CALLBACK_ATTR _DisableAbortCallback(void *pUserData, BOOL enableAbort) { if (!enableAbort) puts("The current process cannot be interrupted"); else puts("The process can be interrupted again"); } void NERO_CALLBACK_ATTR _SetMajorPhaseCallback(void *pUserData, NERO_MAJOR_PHASE phase, void *reserved) { } DWORD NERO_CALLBACK_ATTR _WriteIOCallback(void *pUserData, BYTE *pBuffer, DWORD dwLen) { return fwrite(pBuffer, 1, dwLen, (FILE *)pUserData); } BOOL NERO_CALLBACK_ATTR _EOFCallback(void *pUserData) { return feof((FILE *)pUserData); } BOOL NERO_CALLBACK_ATTR _ErrorCallback(void *pUserData) { return ferror((FILE *)pUserData); } DWORD NERO_CALLBACK_ATTR _ReadIOCallback(void *pUserData, BYTE *pBuffer, DWORD dwLen) { return fread(pBuffer, 1, dwLen, (FILE *)pUserData); }