DX中关于lock函数的有关问题

DX中关于lock函数的问题
在学习用DX开发游戏的时候遇见一个很重要的lock函数,在使用的时候出现了问题

用到的两个变量在之前声明为
LPDIRECTDRAWSURFACE7 lpddsprimary = NULL;
DDSURFACEDESC2 ddsd;

用的时候是这样写的
lpddsprimary->Lock(NULL, &ddsd, DDLOCK_SURFACEMEMORYPTR | DDLOCK_WAIT, NULL));
好多次断点调试都是到这步会出现问题

问题总是说:未处理的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突,
我觉得可能是指针或者是内存没初始化之类的,但是真心不知道该怎么弄了。。。


求高手们给个提示


------解决方案--------------------
应该是lpddsprimary或者是ddsd未被正确的初始化。
------解决方案--------------------
lpddsprimary初始化为NULL,之后呢?
我感觉是之后没有获取/创建对象就直接Lock了。。。
------解决方案--------------------
这是ddsd的初始化,没有看到lpddsprimary的初始化。

引用:
引用:lpddsprimary初始化为NULL,之后呢?
我感觉是之后没有获取/创建对象就直接Lock了。。。

初始化null后有
C/C++ code?1234ZeroMemory(&ddsd, sizeof(DDSURFACEDESC2));ddsd.dwSize        = sizeof(DDSURFACED……

------解决方案--------------------
引用:
引用:这是ddsd的初始化,没有看到lpddsprimary的初始化。

引用:引用:lpddsprimary初始化为NULL,之后呢?
我感觉是之后没有获取/创建对象就直接Lock了。。。

初始化null后有
C/C++ code?1234ZeroMemory……


有初始化。但是,NULL不是一个有效地对象。