0

ssdt シャドウの NtUserShowWindow 関数を独自の関数 MyNtUserShowWindow に置き換えました。しかし、MyNtUserShowWindow 関数では、NtUserInternalGetWindowText 関数を呼び出してウィンドウ タイトルを取得しようとしましたが、常に 0 (失敗したことを意味します) を返します。どうしてか分かりません?

いくつかのコードブロー:

BOOL MyNtUserShowWindow(
    IN HWND hWnd,
    IN int nCmdShow )
{
    LPWSTR buffer = NULL;
    SIZE_T memSize;
    int strLen;
    NTSTATUS status;

    memSize = MAX_PATH + 1;
    if (NT_SUCCESS(ZwAllocateVirtualMemory( ZwCurrentProcess(),
                                            &buffer,
                                            0,
                                            &memSize,
                                            MEM_COMMIT | MEM_RESERVE | MEM_TOP_DOWN,
                                            PAGE_READWRITE )))
    {
        strLen = NtUserInternalGetWindowText( hWnd, buffer, MAX_PATH );
        KdPrint(( "the get window len is %d, buffer is %S\n", strLen, buffer)); // strLen = 0

    }

    ......
}
4

1 に答える 1