TIB Armazenamento Personalizado

Após bastante pesquisa e algumas dicas dadasaqu, Finalmente consegui encontre um layout doFS segmento (usado pelo Windows para armazenar dados TIB). De particular interesse para mim é oArbitraryUserPointer membro fornecido no PSDK:

typedef struct _NT_TIB {
    struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList;
    PVOID StackBase;
    PVOID StackLimit;
    PVOID SubSystemTib;
    union {
        PVOID FiberData;
        DWORD Version;
    };
    PVOID ArbitraryUserPointer;
    struct _NT_TIB *Self;
} NT_TIB;

Quão seguro é exatamente o uso dessa variável (no Vista e acima)? e ainda existe em x64?

Secundário é o acesso dessa variável. Estou usando o MSVC e, como tal, tenho acesso ao__readfsdword & __readgsqword intrínseca, no entanto, MSDN por algum motivo, marca-o como instruções privilegiadas:

Essas intrínsecas estão disponíveis apenas no modo kernel e as rotinas estão disponíveis apenas como intrínseca

Eles são naturalmente Apenas kernel, mas por que eles estão marcados como tal, apenas documentação incorreta? (meus documentos offline do VS 2008 não possuem essa cláusula).

Finalmente, é seguro acessarArbitraryUserPointer diretamente através de um único__readfsdword(0x14) ou é preferível usá-lo através do endereço TIB linear? (que ainda exigirá uma leitura deFS).

questionAnswers(4)

yourAnswerToTheQuestion