эта проблема решена. изменяя смещение, расположенное в 8 и 12, и изменяя параметр указателя на другое значение.

ешно извлек структурный объект из допустимого указателя, используя функцию PtrToStructure (в VB.NET), но результат некоторых членов объекта не корректен (по сравнению с примером C ++):

код:

StructLayout(LayoutKind.Explicit, pack:=1, CharSet:=CharSet.Ansi)> _
    Public Structure MyStruct

        <FieldOffset(0)> _
        Dim Width As UInt32 ' 350 correct
        <FieldOffset(4)> _
        Dim Height As UInt32 ' 466 correct
        <FieldOffset(20)> _
        Dim Buffer As IntPtr ' variable but correct
        <FieldOffset(24)> _
        Dim BufferPitch As Integer ' 1408 correct
        <FieldOffset(16)> _
        Dim SurfaceType As Integer ' -2147483645 correct
        <FieldOffset(unknow)> _
        Dim WindowWidth As UInt32 ' must be 356, tested from 0 to 230
        <FieldOffset(unknow)> _
        Dim WindowHeight As UInt32 ' must be 495, tested from 0 to 100
        <FieldOffset(15)> _
        Dim ScreenHeight As UInt32 ' 768 correct
        <FieldOffset(36)> _
        Dim ScreenWidth As UInt32 ' 1366 correct
        <FieldOffset(44)> _
        Dim ScreenDepth As UInt32 ' 32 correct
End Structure

я не могу найти точные значения для параметра FieldOffset WindowWidth и WindowHeight. вопрос почему и как их исправить?

struct myStruct 
{ 
    U32 Width; // U32 = 32-bit unsigned integer 
    U32 Height; 
    VOID_PTR Buffer;
    S32 BufferPitch; // 32-bit signed integer 
    COPY_FLAGS SurfaceType; // integer 
    U32 WindowWidth; 
    U32 WindowHeight; 
    U32 ScreenWidth; 
    U32 ScreenHeight; 
    U32 ScreenDepth; 
}

Ответы на вопрос(0)

Ваш ответ на вопрос