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
}
......
}