C# で次の構造体をモデル化するタスクがあります。
typedef struct _SHELLEXECUTEINFO {
DWORD cbSize;
ULONG fMask;
HWND hwnd;
LPCTSTR lpVerb;
LPCTSTR lpFile;
LPCTSTR lpParameters;
LPCTSTR lpDirectory;
int nShow;
HINSTANCE hInstApp;
LPVOID lpIDList;
LPCTSTR lpClass;
HKEY hkeyClass;
DWORD dwHotKey;
union {
HANDLE hIcon;
HANDLE hMonitor;
} DUMMYUNIONNAME;
HANDLE hProcess;
} SHELLEXECUTEINFO, *LPSHELLEXECUTEINFO;
組合は、ここでそのようにモデル化できます
[StructLayout(LayoutKind.Explicit)]
struct Union
{
[FieldOffset(0)]
IntPtr hIcon;
[FieldOffset(4)]
IntPtr hMonitor;
}
これにより、IntPtr のサイズが 32 ビット マシンでは 4 から 64 ビット マシンでは 8 に変化するため、FieldOffset を使用するときにこれをどのように補正するかを考えました。機械?