INFO: Win32s Translated Pointers Guaranteed for 32K (100833)
The information in this article applies to:
- Microsoft Win32s 1.3c
- Microsoft Win32s 1.0
- Microsoft Win32s 1.1
- Microsoft Win32s 1.2
- Microsoft Win32s 1.3
- Microsoft Win32s 1.30a
This article was previously published under Q100833 SUMMARY
Translated pointers are guaranteed to be valid only for 32K, rather than
64K, which selectors are usually limited to. This limitation is for
performance reasons.
Selectors are tiled every 32K. A 0:32 pointer can be quickly translated
into a 16:16 pointer, which will be valid for a minimum of 32K. In other
words, the offset portion of the 16:16 pointer is not guaranteed to be 0
(zero) when translated. As a result, even though the translated selectors
have a limit of 64K, the offset passed to the 16-bit side may be as large
as 32K-1.
Selectors are created on a 32K alignment so that if you pass several
pointers to the same range, the Universal Thunk (UT) uses the same
selector. Selectors are freed when application terminates.
The alternative is to create a selector for each and every translation,
which is very slow.
Modification Type: | Major | Last Reviewed: | 3/12/2004 |
---|
Keywords: | kbinfo kbprogramming kbThunks KB100833 |
---|
|