Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 指向D3D11设备vtable的正确指针_C++_Directx_Comobject - Fatal编程技术网

C++ 指向D3D11设备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

在以下情况下,如何获取指向vtable的指针:

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那样调用它;将