Dan Kegel, you wrote:
To check whether we're too early in process setup to check global flags, I compare the arguments of RtlCreateHeap with the ones used by the call in virtual_init(). This is not especially clean, but I couldn't think of anything better.
I was thinking, couldn't you place the RtlCreateHeap implementation with an internal function, that takes an extra argument (boolean or flags) to indicate whether to do this initialization step or not ? Then, call the internal function from virtual_init() with the boolean set, and have RtlCreateHeap just calling it, without the boolean set. I've seen something like this being done elsewhere (but for different reasons)
I'm not sure whether this would be acceptable (performance-wise?) but it'd be cleaner I think.
HTH, Joris