InitPerspective (006b59a0) device identifier local is 0x850 bytes, not one DDDEVICEIDENTIFIER2
Frame is 0x854: 006b59a3 SUB ESP,0x854. lpDD is EBP-4 (006b59b0 MOV [EBP-4],0; 006b59f3 LEA ECX,[EBP-4] for DirectDrawCreate). The only other stack object is the buffer passed to IDirectDraw7::GetDeviceIdentifier, 006b5a90 LEA EDX,[EBP-0x854], so it spans EBP-0x854..EBP-4 = 0x850 (2128) bytes. As DDDEVICEIDENTIFIER2 (0x42c) the frame would be 0x430 and the buffer at EBP-0x430. No instruction reads a field of it; its only use is that call. It ends at Stack[-0x8], so it does not overlap lpDD.
Changes 1, applied together
Retype variable
win 0x006b59a0 Stack[-0x858]typeDDDEVICEIDENTIFIER2→byte[2128]