The most likely reason is that the debug thread returned FALSE, and no DLL is loaded.
The function WriteProcessMemory() must be called to insert the string included FILEPATH of the DLL to be loaded into the virtual space of target process, such as
// Copy the DLL's pathname to the remote process's address space
if (!WriteProcessMemory(hProcess, "d:\\test\\mydll.dll",
(PVOID) pszLibFile, cb, NULL)) __leave;
About how to create remote thread, please refer to the excellent book "Advanced Windows" by Jeffrey Richter