|
Imports System.Runtime.InteropServices
Public Class Form1
' ********************************************************
' * 構造体定義
' ********************************************************
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Ansi)> _
Public Class INDIVIDUALINFO
Public dwOriginalSize As Integer = 1
Public dwCompressedSize As Integer = 1
Public dwCRC As Integer = 1
Public uFlag As Integer = 1
Public uOSType As Integer = 1
Public wRatio As Short = 1
Public wDate As Short = 1
Public wTime As Short = 1
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=513)> _
Public szFileName As String = "A"
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=3)> _
Public dummy1 As String = "B"
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=8)> _
Public szAttribute As String = "C"
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=8)> _
Public szMode As String = "D"
End Class
<DllImport("Kernel32.dll", CharSet:=CharSet.Ansi, EntryPoint:="RtlMoveMemory")> _
Private Shared Sub CopyMyStruct( _
ByVal forFile As Byte(), _
<[In](), Out()> ByVal Source As INDIVIDUALINFO, _
ByVal Length As Integer)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Dim data As New INDIVIDUALINFO()
Dim forFile As Byte() = New Byte(Marshal.SizeOf(data) - 1) {}
CopyMyStruct(forFile, data, Marshal.SizeOf(data))
System.IO.File.WriteAllBytes("struct_test.dat", forFile)
End Sub
End Class
| |