= null)
{
checked
{
fixed (char* ptr = &MemoryMarshal.GetReference(path))
{
UNICODE_STRING uNICODE_STRING = default(UNICODE_STRING);
uNICODE_STRING.Length = (ushort)(path.Length * 2);
uNICODE_STRING.MaximumLength = (ushort)(path.Length * 2);
uNICODE_STRING.Buffer = (IntPtr)ptr;
UNICODE_STRING uNICODE_STRING2 = uNICODE_STRING;
uint item2 =
NtCreateFile(&item,
desiredAccess, &oBJECT_ATTRIBUTES, &iO_STATUS_BLOCK,
preallocationSize,
fileAttributes,
shareAccess,
createDisposition,
createOptions,
eaBuffer,
eaLength);
return (status: item2, handle: item);
}
}
}
[DllImport("ntdll.dll", ExactSpelling = true)]
public static extern uint RtlNtStatusToDosError(int Status)
static IntPtr CreateDisposition createDisposition
static IntPtr CreateDisposition DesiredAccess FileShare FileAttributes CreateOptions ObjectAttributes void * eaBuffer
static IntPtr CreateDisposition DesiredAccess FileShare FileAttributes CreateOptions ObjectAttributes void uint long * preallocationSize
static IntPtr CreateDisposition DesiredAccess FileShare shareAccess
static IntPtr CreateDisposition DesiredAccess desiredAccess
static IntPtr CreateDisposition DesiredAccess FileShare FileAttributes CreateOptions ObjectAttributes void uint eaLength
static IntPtr CreateDisposition DesiredAccess FileShare FileAttributes CreateOptions ObjectAttributes void uint long SECURITY_QUALITY_OF_SERVICE * securityQualityOfService
static IntPtr rootDirectory
static IntPtr CreateDisposition DesiredAccess FileShare FileAttributes fileAttributes
static IntPtr CreateDisposition DesiredAccess FileShare FileAttributes CreateOptions ObjectAttributes objectAttributes
static IntPtr CreateDisposition DesiredAccess FileShare FileAttributes CreateOptions createOptions
static unsafe uint NtCreateFile(IntPtr *FileHandle, DesiredAccess DesiredAccess, OBJECT_ATTRIBUTES *ObjectAttributes, IO_STATUS_BLOCK *IoStatusBlock, long *AllocationSize, FileAttributes FileAttributes, FileShare ShareAccess, CreateDisposition CreateDisposition, CreateOptions CreateOptions, void *EaBuffer, uint EaLength)
1647 {
1648 checked
1649 {
1651 {
1652 UNICODE_STRING uNICODE_STRING = default(UNICODE_STRING);
1653 uNICODE_STRING.Length = (ushort)(path.Length * 2);
1654 uNICODE_STRING.MaximumLength = (ushort)(path.Length * 2);
1655 uNICODE_STRING.Buffer = (
IntPtr)ptr;
1656 UNICODE_STRING uNICODE_STRING2 = uNICODE_STRING;
1660 uint item2 =
NtCreateFile(&
item,
desiredAccess, &oBJECT_ATTRIBUTES, &iO_STATUS_BLOCK,
preallocationSize,
fileAttributes,
shareAccess,
createDisposition,
createOptions,
eaBuffer,
eaLength);
1662 }
1663 }
1664 }