TIB Almacenamiento personalizado

Después de buscar un poco en Google y algunas pistas dadasaqu, Finalmente logré encontrar un diseño delFS segmento (utilizado por Windows para almacenar datos TIB). De particular interés para mí es elArbitraryUserPointer miembro proporcionado en el 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é tan seguro es exactamente usar esta variable (en Vista y superior)? y todavía existe en x64?

Secundario a eso es el acceso de esta variable. Estoy usando MSVC, y como tal tengo acceso a la__readfsdword & __readgsqword intrínsecos, sin embargo, MSDN por alguna razón marca estas instrucciones privilegiadas:

stas intrínsecas solo están disponibles en modo kernel, y las rutinas solo están disponibles como intrínsecas.

Son, por supuesto,n kernel solamente, pero ¿por qué están marcados como tales, solo documentación incorrecta? (mis documentos de VS 2008 sin conexión no tienen esta cláusula).

Finalmente, ¿es seguro acceder aArbitraryUserPointer directamente a través de un solo__readfsdword(0x14) o ¿se prefiere usarlo a través de la dirección TIB lineal? (que aún requerirá una lectura deFS).

Respuestas a la pregunta(4)

Su respuesta a la pregunta