2010-06-18 121 views
2

我'努力工作时的LdrLoadDll功能,并因与that..i没有运气也用Google搜索的一些例子有只字不提知道它究竟没有多少文档或正确的示例..请检查下面的代码。状态失败LdrLoadDll

//declaration function pointer for LdrLoadDll 
typedef NTSTATUS (_stdcall*fp_LdrLoadDll)(
IN PWCHAR PathToFile OPTIONAL, 
IN ULONG Flags OPTIONAL, 
IN PUNICODE_STRING ModuleFileName, 
OUT PHANDLE ModuleHandle); 

//calling LdrLoadDll using getprocaddress 
HANDLE handle; 
    HMODULE module = LoadLibrary(L"ntdll.dll"); 
    fp_LdrLoadDll loadDll; 
    loadDll = (fp_LdrLoadDll)GetProcAddress(module,"LdrLoadDll"); 
    if(loadDll == NULL) 
    { 
     MessageBox(0,L"Not able to load the function",L"LdrLoadDll",&handle); 
    } 
    UNICODE_STRING input; 
    input.Buffer = L"C:\\Desktop\\myDll.dll"; 
    input.Length = wcslen(input.Buffer)*2; 
    input.MaximumLength = wcslen(input.Buffer) +2; 

    NTSTATUS status = loadDll(NULL,LOAD_WITH_ALTERED_SEARCH_PATH,&input,0); 

当我执行上述我没有得到处理niether有效status.Please帮助我这一点。

+0

希望我们看到更多的低层次的东西,像这样的SO – unixman83 2011-07-01 05:05:10

回答

3

它的工作对我来说,当我intialized Unicode字符串像下面

RtlInitUnicodeString(&input,L"myDll.dll"); 
+0

为什么它已经否决了.. – kiddo 2011-05-16 13:29:07