OpenFile (kernel32)
Last changed: -91.151.77.78

.
Summary

C# Signature:

[DllImport("kernel32.dll", BestFitMapping = false, ThrowOnUnmappableChar = true))]
static extern int OpenFile([System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.LPStr)]string lpFileName, out OFSTRUCT lpReOpenBuff,
   [Enum.OpenFile] uStyle);

User-Defined Types:

[System.Runtime.InteropServices.StructLayout(LayoutKind.Sequential)]
public struct OFSTRUCT
{
  public byte cBytes;
  public byte fFixedDisc;
  public UInt16 nErrCode;
  public UInt16 Reserved1;
  public UInt16 Reserved2;
  [System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValTStr, SizeConst = 128)]
  public string szPathName;
}

VB.NET Signature:

Private Declare Function OpenFile Lib "kernel32.dll" (ByVal lpFileName As String, ByRef lpReOpenBuff As OFSTRUCT, ByVal uStyle As Long) As Long

User-Defined Types:

<System.Runtime.InteropServices.StructLayout(LayoutKind.Sequential)> _
Public Structure OFSTRUCT
    Public cBytes As Byte
    Public fFixedDisc As Byte
    Public nErrCode As UInt16
    Public Reserved1 As UInt16
    Public Reserved2 As UInt16
    <System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValTStr, SizeConst:=128)> _
    Public szPathName As String
End Structure

Notes:

None.

Tips & Tricks:

Please add some!

Sample Code:

Private Const OF_EXIST As Long = &H4000
Private Const OF_ERROR As Long = -1
Private Const OFS_MAXPATHNAME As Long = 128

Public Function FileExists(ByVal sFile As String) As Boolean
    Dim lRetVal As Long
    Dim of As OFSTRUCT

    lRetVal = OpenFile(sFile, of, OF_EXIST)
    If lRetVal <> OF_ERROR Then
        FileExists = True
    Else
        FileExists = False
    End If
End Function

Alternative Managed API:

Do you know one? Please contribute it!

Documentation
OpenFile on MSDN