SetFilePointerEx (kernel32)
Last changed: -188.122.148.98

.
Summary

C# Signature:

[DllImport("kernel32.dll")]
static extern bool SetFilePointerEx(IntPtr hFile, long liDistanceToMove,
   IntPtr lpNewFilePointer, uint dwMoveMethod);

C# Signature:

[DllImport("kernel32.dll")]
public static extern bool SetFilePointerEx(
     SafeFileHandle hFile, long liDistanceToMove,
     out long lpNewFilePointer, uint dwMoveMethod);

User-Defined Types:

None.

Notes:

None.

Tips & Tricks:

The third argument (lpNewFilePointer) is of type LARGE_INTEGER, which has a size of 64 bits. For this reason use a UInt64 for this argument. (See sample below)

Sample Code:

UInt64 n = 0; //it is important to use UInt64, because the 3rd argument is of type PLARGE_INTEGER, where LARGE_INTEGER has a size of 64 bits.

IntPtr ptr = new IntPtr(&n);

SetFilePointerEx(handle, 0, ptr, FILE_CURRENT);//ptr contains current location of file pointer. handle is a pointer to an open file handle.

Alternative Managed API:

Do you know one? Please contribute it!

Documentation

LARGE_INTEGER - http://msdn.microsoft.com/en-us/library/aa383713(VS.85).aspx

UInt64 - http://msdn.microsoft.com/en-us/library/system.uint64.aspx