C++ 指向D3D11设备vtable的正确指针
在以下情况下,如何获取指向vtable的指针:C++ 指向D3D11设备vtable的正确指针,c++,directx,comobject,C++,Directx,Comobject,在以下情况下,如何获取指向vtable的指针: ID3D11Device *dev; //the pointer to the device interface 这就是我现在拥有的,我认为这是不对的 uintptr_t* pInterfaceVTable = *(uintptr_t**)dev; 如果是,那么如何获取成员函数?再说一遍,这就是我现在拥有的 uintptr_t** g_deviceFunctionAddresses = new uintptr_t*[D3D11
ID3D11Device *dev; //the pointer to the device interface
这就是我现在拥有的,我认为这是不对的
uintptr_t* pInterfaceVTable = *(uintptr_t**)dev;
如果是,那么如何获取成员函数?再说一遍,这就是我现在拥有的
uintptr_t** g_deviceFunctionAddresses = new uintptr_t*[D3D11_DEVICE_METHOD_COUNT];
if(dev != NULL && swapchain != NULL){
for(int i=0; i<D3D11_DEVICE_METHOD_COUNT; i++){
g_deviceFunctionAddresses[i] = (uintptr_t*)pInterfaceVTable[i];
}
smplvtablefunction = pInterfaceVTable[functionoffset];
}
我在这个问题上被卡住了一段时间。vtable在标题中定义为ID3D11DeviceVtbl。不过,您需要将d3d11.h作为一个C头包含在内,否则您将得到带有隐藏vtable的类定义。DWORD*vt=*reinterpret\u castdev;在32位程序中,每个索引是一个函数4字节指针。是否有针对此的演练类型?2.是否有一种语法可以只给我函数的地址,而不是像d3d11dev->checkcounter那样调用它;将