title: How to declarate LARGE_INTEGER in C#
body: <p>the code below(in C++) is what I am trying the convert into C#</p>
  
  <pre><code>DWORD Func_X_4(DWORD arg1, DWORD arg2, DWORD arg3)
  {
  LARGE_INTEGER result = {1, 0};
  LARGE_INTEGER temp1 = {0};
  LARGE_INTEGER temp2 = {0};
  LARGE_INTEGER temp3 = {0};
  LARGE_INTEGER temp4 = {0};
  for(int x = 0; x &lt; 32; ++x)
  {
      if(arg2 &amp; 1)
      {
          temp1.LowPart = arg3;
          temp1.HighPart = 0;
          temp2.QuadPart = temp1.QuadPart * result.QuadPart;
          temp3.LowPart = arg1;
          temp3.HighPart = 0;
          temp4.QuadPart = temp2.QuadPart % temp3.QuadPart;
          result.QuadPart = temp4.QuadPart;
      }
      arg2 &gt;&gt;= 1;
      temp1.LowPart = arg3;
      temp1.HighPart = 0;
      temp1.QuadPart *= temp1.QuadPart;
      temp2.LowPart = arg1;
      temp2.HighPart = 0;
      temp3.QuadPart = temp1.QuadPart % temp2.QuadPart;
      arg3 = temp3.LowPart;
      if(!arg2)
          break;
  }
  return result.LowPart;
  }
  </code></pre>
  
  <p>Here I tried to translate the code,but it's too messy and I never worked with Large integers before.</p>
  
  <p>Structure:</p>
  
  <pre><code>public struct LARGE_INTEGER
  {
      UInt32 LowPart;
      Int32 HighPart;
      Int32 QuadPart;
  }
  </code></pre>
  
  <p>Translated function:</p>
  
  <pre><code>    public Int32 Func_X_4(Int32 arg1, Int32 arg2, Int32 arg3)
      {
      LARGE_INTEGER result = {1, 0}; //this and the four below,are they correct?
      LARGE_INTEGER temp1 = {0, 0};
      LARGE_INTEGER temp2 = {0, 0};
      LARGE_INTEGER temp3 = {0, 0};
      LARGE_INTEGER temp4 = {0, 0};
      for(int x = 0; x &lt; 32; ++x)
      {
          if(arg2 &amp; 1==0) //correct?
          {
              temp1.LowPart = arg3;
              temp1.HighPart = 0;
              temp2.QuadPart = temp1.QuadPart * result.QuadPart;
              temp3.LowPart = arg1;
              temp3.HighPart = 0;
              temp4.QuadPart = temp2.QuadPart % temp3.QuadPart;
              result.QuadPart = temp4.QuadPart;
          }
          arg2 &gt;&gt;= 1;
          temp1.LowPart = arg3;
          temp1.HighPart = 0;
          temp1.QuadPart *= temp1.QuadPart;
          temp2.LowPart = arg1;
          temp2.HighPart = 0;
          temp3.QuadPart = temp1.QuadPart % temp2.QuadPart;
          arg3 = temp3.LowPart;
          if(arg2 != 0) //correct?
          break;
      }
      return result.LowPart;
  }
  </code></pre>
  
  <p>Problems:
  The first problem is that I haven't found a LARGE_INTEGER type variable in C#,so I created a strucure,I'd like to know if there is actually.
  As for the second problem,the function is not right,nothing worked.</p>
  
  <p>Any help on that particular question will be greatfuly appreciated!
  Thank you in advance.</p>