From: Jonathan de Boyne Pollard on
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
<title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
<blockquote cite="mid:hlnc56$61r$1(a)news.eternal-september.org"
type="cite">
<p>After finding some very helpful documentation on the 'net by a
virus writer named z0mbie (Microsoft! Give us some proper
documentation!) I discovered that most people use <code>NtQueryInformationProcess()</code>
and <code>NtSetInformationProcess()</code> to modify the LDT table,
using the undocumented information class 10; [...]</p>
</blockquote>
<p>Aren't alarm bells going off in your head after all of the above? 
You have what are tantamount to big bright neon signs in front of you
saying that this isn't documented, isn't supported, and isn't
guaranteed to work at all.  And — Lo! — your program using undocumented
unsupported things is not working.  Fix your library code so that it
doesn't involve any of this segment register fiddling in the first
place, and make it properly portable.  The Win32 API has supported,
documented, functions for handling thread-local storage, that will work
straightaway, without your needing to muck around with segment
registers yourself at all, and without your coming to Usenet to
complain that you cannot get a program based upon information from a
virus writer to work.  Use them!</p>
<blockquote cite="mid:hlnc56$61r$1(a)news.eternal-september.org"
type="cite">
<p>There's obviously something else I'm missing. Can anyone clue me
in? </p>
</blockquote>
<p>You already have Clue right in front of you: the very lack of
documentation for doing things in the wrong way that you are "loving
Microsoft" for.  Stop complaining about it and start paying attention
to it instead.</p>
</body>
</html>