The Old New Thing : Why can't I use the linker to delay-load a function from kernel32?
delay-loadというのは、APIの呼び出しをひとまず別のダミーの関数にしておく。ダミーの関数は、GetProccAddress()を呼び出して、目的の関数のアドレスを取得する。
さて、DLLをロードするには、LoadLibrary()を呼び出さなければならない。DLLがまだ読み込まれていない場合、ダミーの関数は、DLLを読み込まなければならない。しかし、LoadLibrary()はkernel32のDLLの中にある。したがって、Catch-22問題(意味的には、タマゴが先か、ニワトリが先か)に悩まされるのである。
今回も、Catch-22が出てきた。
No comments:
Post a Comment