I haven't done this before, but have been researching for my own project. This is how I think it should work... define the struct in your "callee" class namespace: namespace myNS { [StructLayout(LayoutKind.Sequential)] public struct DateTimeStruct{...} class Callee{ [DllImport("CarChipSDK", EntryPoint="GetDateTime")] public static extern bool GetDateTime (out DateTimeStruct dateTime); } } in "Caller" add MyNS as reference, add new DateTimeStruct variable and then call your function, passing this variable by reference: using MyNS; ... DateTimeStruct dts; ... Callee.GetDateTime(out dts); ... // now you can use dts members: int hr = dts.hour; Let me know if this works. Tym!