Re: 如何判断函数HvpGetCellMapped返回值的'具体'类型?

Windows内核调试

如何判断函数HvpGetCellMapped返回值的'具体'类型?


merry 2009-05-12, 23:13 下午

调用函数HvpGetCellMapped得到一个返回值c7018c0c,但是函数HvpGetCellMapped的返回类型是union(_CELL_DATA),如下:

typedef struct _CELL_DATA {
    union _u {
        CM_KEY_NODE      KeyNode;
        CM_KEY_VALUE     KeyValue;
        CM_KEY_SECURITY  KeySecurity;    
        CM_KEY_INDEX     KeyIndex;       
        CM_BIG_DATA      ValueData;      
        HCELL_INDEX      KeyList[1];     
        WCHAR            KeyString[1];   
    } u;
} CELL_DATA, *PCELL_DATA;

Q:如何判断返回值c7018c0c是CM_KEY_NODE,还是CM_KEY_VALUE等其它类型?
谢谢!

 

Re: 如何判断函数HvpGetCellMapped返回值的'具体'类型?


benlong 2009-05-13, 00:38 上午
这个函数返回的只是Cell的地址

Re: 如何判断函数HvpGetCellMapped返回值的'具体'类型?


merry 2009-05-13, 10:39 上午
确实是一个地址值,但是我希望由这个地址(比如:c7018c0c )确定是union中那种类型,
例如:如果是CM_KEY_NODE,则我可以用如下命令查看:

kd> dt nt!_CM_KEY_NODE c7018c0c

所以想确定函数HvpGetCellMapped返回值的'具体'类型。
谢谢!

Re: 如何判断函数HvpGetCellMapped返回值的'具体'类型?


benlong 2009-05-13, 13:43 下午
对于KeyNode、KeyValue和KeySecurity这些结构地址的前两个字节就是其特征签名。比如KeyNode(kn或kl),KeyValue(kv),KeySecurity(ks),这些结构应该可以通过特征签名来判断。

Powered by Community Server Powered by CnForums.Net