static void VertexBufferDescTest(void) { HRESULT rc; D3DVERTEXBUFFERDESC desc; union mem_t { D3DVERTEXBUFFERDESC desc2; unsigned char buffer[512]; } mem; memset(&desc, 0, sizeof(desc)); desc.dwSize = sizeof(desc); desc.dwCaps = 0; desc.dwFVF = D3DFVF_XYZ; desc.dwNumVertices = 1; rc = IDirect3D7_CreateVertexBuffer(lpD3D, &desc, &lpVBufSrc, 0); ok(rc==D3D_OK || rc==E_OUTOFMEMORY, "CreateVertexBuffer returned: %x\n", rc); if (!lpVBufSrc) { trace("IDirect3D7::CreateVertexBuffer() failed with an error %x\n", rc); goto out; } memset(mem.buffer, 0x12, 512); mem.desc2.dwSize = sizeof(D3DVERTEXBUFFERDESC)*2; rc = IDirect3DVertexBuffer7_GetVertexBufferDesc(lpVBufSrc, &mem.desc2); if(rc != D3D_OK) skip("GetVertexBuffer Failed!\n"); ok( mem.desc2.dwSize == sizeof(D3DVERTEXBUFFERDESC)*2, "Size returned from GetVertexBufferDesc does not match the value put in\n" ); ok( mem.buffer[sizeof(D3DVERTEXBUFFERDESC)+1] == 0x12, "GetVertexBufferDesc cleared outside of the struct!\n"); out: IDirect3DVertexBuffer7_Release(lpVBufSrc); }