1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- #ifndef __BRANCH_DEVICE_HLEPER_H
- #define __BRANCH_DEVICE_HLEPER_H
- #pragma once
- const int MAX_PATH_SIZE = 256;
- #include <strsafe.h>
- #include <Shlobj.h>
- #ifdef __cplusplus
- extern "C" {
- #endif
- int GetCurrentRunPath(char *pPath)
- {
- char *pBuf = new char[MAX_PATH_SIZE];
- if (pBuf == NULL)
- return -1;
- ZeroMemory(pBuf,MAX_PATH_SIZE);
- GetModuleFileName(NULL,pBuf,MAX_PATH_SIZE);
- int len = strnlen_s(pBuf,MAX_PATH_SIZE);
- if (len <= 0)
- {
- delete []pBuf;
- return -2;
- }
- char *pch;
- pch = strstr (pBuf,"bin");
- if (pch == NULL)
- return -3;
- int lenDel = strnlen_s(pch,MAX_PATH_SIZE);
- if (len <= 0)
- {
- delete []pBuf;
- return -3;
- }
- strncpy_s(pPath,MAX_PATH_SIZE,pBuf,len-lenDel);
- delete []pBuf;
- return strnlen_s(pPath,MAX_PATH_SIZE);
- }
- // >0 means suc and set the path size
- // pPath store directory path like "C:\Users\{UserName}\AppData\LocalLow"
- // <0 means failed !!
- int GetWriteAvailableDirPath(char *pPath)
- {
- char *pBuf = new char[MAX_PATH_SIZE];
- if (pBuf == NULL)
- return -1;
- ZeroMemory(pBuf,MAX_PATH_SIZE);
- PWSTR pszPath = NULL;
- if(SHGetKnownFolderPath(FOLDERID_LocalAppDataLow, 0, NULL, &pszPath) != S_OK)
- {
- delete[] pBuf;
- return -2;
- }
- WideCharToMultiByte(CP_ACP, 0, pszPath, -1, pBuf, MAX_PATH_SIZE, NULL, NULL);
- CoTaskMemFree((LPVOID)pszPath);
- int len = strnlen_s(pBuf, MAX_PATH_SIZE);
- strncpy_s(pPath, MAX_PATH_SIZE, pBuf, len);
- delete []pBuf;
- return strnlen_s(pPath, MAX_PATH_SIZE);
- }
- #ifdef __cplusplus
- }
- #endif
- #endif //__BRANCH_DEVICE_HLEPER_H
|