[ CnUnix ] in KIDS 글 쓴 이(By): Debussy (드뷔시) 날 짜 (Date): 1994년11월16일(수) 21시50분26초 KST 제 목(Title): [Re]거시기.... Win32s에서 16비트 dll를 불러쓰려면, 또는 그 반대로 하려면 그냥은 안됩니다. 말씀하셨다시피, Universal Thunk를 이용해야 합니다. Thunk라는 것은 function call을 중간에서 가로채서 특별한 일을 수행하고나서 원래의 작업을 계속하도록 하게 한다는 뜻입니다. 32비트 플랫 메모리를 사용하는 어플리케이션이 16비트 dll을 사용하려면 32비트 어드레싱 즉, 0:32(selector:offset)방식에 맞도록 16비트 dll호출을 thunk해야 합니다. 그반대, 즉 16어플리케이션이 32비트 dll을 쓸려면 16비트 어드레싱 16:16방식 에 맞게 32비트 dll호출을 thunk를 해야 합니다. 그리고 16비트에서와 32비트에서는 다른 스택 포인터를 사용하기때문에 여기에 대해서도 미리 생각해 두어야 합니다. 만일 32비트에서 16비트를 사용하려면 16비트에서의 스택 포인터 SS:SP를 SS:ESP로 복사하여 쓰고 당연히 SS:ESP는 복사되기 전에 어떤 장소에 대피시켜놓아야 합니다. 그외 몇가지 더 생각할게 더 있겠지요.. 도움이 되셨기를 바라면서... Debussy. |