UINT_PTR AfsAppLib_GetCredentials (LPCTSTR pszCell, ULONG *pStatus) { UINT_PTR hCreds = 0; ULONG status = 0; UINT_PTR idClient; if ((idClient = AfsAppLib_GetAdminServerClientID()) != 0) { hCreds = asc_CredentialsGet (idClient, pszCell, &status); } else if (OpenClientLibrary()) { LPSTR pszCellA = StringToAnsi (pszCell); afsclient_TokenGetExisting (pszCellA, (PVOID *)&hCreds, (afs_status_p)&status); FreeString (pszCellA, pszCell); CloseClientLibrary(); } if (!hCreds && pStatus) *pStatus = status; return hCreds; }
DWORD WINAPI Import(LPVOID lpParameter) { BOOL bIsDirectory; CHAR szFileName[MAX_PATH]; PBYTE pbFile; LPSTR lpPath, lpFileName; HANDLE hFile, hMap, hFind; DWORD dwFileAttributes, dwSize, dwNewSize, dwCount, dwTotal; FILETYPE FileType; WIN32_FIND_DATA wfd; lpPath = (LPSTR)lpParameter; dwNewSize = dwCount = dwTotal = 0; dwFileAttributes = GetFileAttributes(lpPath); if (dwFileAttributes == INVALID_FILE_ATTRIBUTES) { return 0; } bIsDirectory = dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY; if (bIsDirectory) { sprintf(szFileName, "%s\\*.*", lpPath); hFind = FindFirstFile(szFileName, &wfd); if (hFind == INVALID_HANDLE_VALUE) { return 0; } lpFileName = szFileName; } else { lpFileName = lpPath; } while (ReleaseSemaphore(g_hSemaphore, 1, NULL) == FALSE) { Sleep(1); } do { if (bIsDirectory) { if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { continue; } sprintf(szFileName, "%s\\%s", lpPath, wfd.cFileName); } ++dwTotal; hFile = CreateFile(FILE_NAME, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (hFile == INVALID_HANDLE_VALUE) { printf("CreateFile() failed: %s\n", FILE_NAME); continue; } dwSize = GetFileSize(hFile, NULL); if (dwSize != 0) { hMap = CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, dwSize, NULL); if (hMap == NULL) { printf("CreateFileMapping() failed: %s\n", FILE_NAME); CloseHandle(hFile); continue; } pbFile = (PBYTE)MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, 0, 0, 0); CloseHandle(hMap); if (pbFile == NULL) { printf("MapViewOfFile() failed: %s\n", FILE_NAME); CloseHandle(hFile); continue; } FileType = CheckFileType(pbFile, dwSize, PathFindFileName(FILE_NAME)); if (FileType != UNKNOWN) { ReplaceString(pbDict, pbFile, dwSize); dwNewSize = StringToAnsi(pbFile, FileType, dwSize); ++dwCount; } UnmapViewOfFile(pbFile); if (dwNewSize != 0) { SetFilePointer(hFile, dwNewSize, 0, FILE_BEGIN); SetEndOfFile(hFile); } } CloseHandle(hFile); } while (bIsDirectory && FindNextFile(hFind, &wfd)); if (bIsDirectory) { FindClose(hFind); } WaitForSingleObject(g_hSemaphore, INFINITE); return dwCount; }