The documentation for RtlXxxString and friends in most cases says IRQL must be PASSIVE_LEVEL. Is this a hard and fast rule that the verifier/PREfast/checked build is going to trip me up on, or is some flexibility allowed?
If I can guarantee that the buffers for my UNICODE_STRING are NonPagedPool, can I get away with calling RtlCompareUnicodeString? Or is it more that the RtlCompareUnicodeString routine itself might be paged out?
My DeviceIdentification consists of two UNICODE_STRINGs of arbitrary length, so they need to be managed separately to the DeviceIdentification. The names reflect the name of a network resource that in turn has an arbitrary length (there probably is an actual limit, but it's probably longer than I want to allocate "just in case").