bool SmartPhoneSN::Adb_Manager_Init()
{
HANDLE hread_cmd = NULL, hwrite_out = NULL;
SECURITY_ATTRIBUTES sa;
STARTUPINFO si;
PROCESS_INFORMATION pi;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;
if (!CreatePipe(&hread_cmd, &hdle_write_cmd, &sa, 0))
{
MTRACE (g_hEBOOT_DEBUG, "SmartPhoneSN::Adb_Manager_Init() : CreatePipe() write fail...");
return FALSE;
}
//MTRACE (g_hEBOOT_DEBUG, "Adb_Manager::Adb_Manager_Init(): createpipe1 success!");
if (!CreatePipe(&hdle_read_out, &hwrite_out, &sa, 0))
{
MTRACE (g_hEBOOT_DEBUG, "SmartPhoneSN::Adb_Manager_Init() : CreatePipe() read fail...");
return FALSE;
}
//MTRACE (g_hEBOOT_DEBUG, "Adb_Manager::Adb_Manager_Init(): createpipe2 success!");
ZeroMemory(&si, sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);
GetStartupInfo(&si);
si.hStdError = hwrite_out;
si.hStdOutput = hwrite_out;
si.hStdInput = hread_cmd;
si.wShowWindow = SW_HIDE;
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
if (!CreateProcess("c:\\windows\\system32\\cmd.exe", NULL, NULL, NULL, TRUE, NULL, NULL, NULL, &si, &pi))
{
//MTRACE_ERR (g_hEBOOT_DEBUG, "Adb_Manager::Adb_Manager_Init(): create cmd.exe process fail!");
return FALSE;
}
//MTRACE (g_hEBOOT_DEBUG, "Adb_Manager::Adb_Manager_Init(): create cmd.exe process success!");
CloseHandle(hread_cmd);
CloseHandle(hwrite_out);
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
//MTRACE (g_hEBOOT_DEBUG, "Adb_Manager::Adb_Manager_Init(): hdle_write_cmd = %08X, hdle_read_out = %08X",hdle_write_cmd,hdle_read_out);
return TRUE;
}
int SmartPhoneSN::Adb_Manager_Write(char *cmd_line, int cmd_length)
{
char cmd_buf[100];
memset(cmd_buf, 0, sizeof(cmd_buf));
memcpy(cmd_buf, cmd_line, cmd_length);
cmd_buf[cmd_length] = '\r';
cmd_buf[cmd_length + 1] = '\n';
DWORD bytesWritten = 0;
if (!WriteFile(hdle_write_cmd, cmd_buf, cmd_length + 2, &bytesWritten, NULL))
{
return 0;
}
return (int)(bytesWritten);
}
int SmartPhoneSN::Adb_Manager_Read(ADB_READ_BUF *adb_read_buf, int buf_size)
{
DWORD bytesRead = 0;
if (!ReadFile(hdle_read_out, adb_read_buf->rd_buf, buf_size, &bytesRead, NULL))
{
return 0;
}
adb_read_buf->rd_buf[bytesRead] = '\0';
return (int)bytesRead;
}
bool SmartPhoneSN::Adb_WR_Cmd(char *cmd_line, int cmd_length)
{
if (!(Adb_Manager_Write(cmd_line, cmd_length)))
{
return FALSE;
}
Sleep(800);
memset(&read_buf, 0, r_bufsize);
if (!(Adb_Manager_Read(&read_buf, r_bufsize)))
{
return FALSE;
}
MTRACE (g_hEBOOT_DEBUG, "SmartPhoneSN::Adb_WR_Cmd(): read_buf is = %s", read_buf.rd_buf);
return TRUE;
}
int SmartPhoneSN::Adb_Manager_Deinit()
{
//Adb_WR_Cmd("exit",strlen("exit"));
Adb_WR_Cmd("adb kill-server", strlen("adb kill-server"));
// MTRACE(g_hEBOOT_DEBUG, "ATB_MR::Scan_Devices_FunProc(): close cmd.exe");
memset(&read_buf, 0, r_bufsize);
CloseHandle(hdle_write_cmd);
// MTRACE(g_hEBOOT_DEBUG, "Adb_Manager::~Adb_Manager(): close hdle_write_cmd");
CloseHandle(hdle_read_out);
// MTRACE(g_hEBOOT_DEBUG, "Adb_Manager::~Adb_Manager(): close hdle_read_out");
return 0;
}
ADB管道
最新推荐文章于 2023-02-09 15:05:42 发布