Windows2000/private/ntos/io/open.c
2020-09-30 17:12:32 +02:00

97 lines
2.1 KiB
C

/*++
Copyright (c) 1989 Microsoft Corporation
Module Name:
open.c
Abstract:
This module contains the code to implement the NtOpenFile system
service.
Author:
Darryl E. Havens (darrylh) 25-Oct-1989
Environment:
Kernel mode
Revision History:
--*/
#include "iop.h"
#ifdef ALLOC_PRAGMA
#pragma alloc_text(PAGE, NtOpenFile)
#endif
NTSTATUS
NtOpenFile(
OUT PHANDLE FileHandle,
IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes,
OUT PIO_STATUS_BLOCK IoStatusBlock,
IN ULONG ShareAccess,
IN ULONG OpenOptions
)
/*++
Routine Description:
This service opens a file or a device. It is used to establish a file
handle to the open device/file that can then be used in subsequent
operations to perform I/O operations on.
Arguments:
FileHandle - A pointer to a variable to receive the handle to the open file.
DesiredAccess - Supplies the types of access that the caller would like to
the file.
ObjectAttributes - Supplies the attributes to be used for file object (name,
SECURITY_DESCRIPTOR, etc.)
IoStatusBlock - Specifies the address of the caller's I/O status block.
ShareAccess - Supplies the types of share access that the caller would like
to the file.
OpenOptions - Caller options for how to perform the open.
Return Value:
The function value is the final completion status of the open/create
operation.
--*/
{
// Simply invoke the common I/O file creation routine to perform the work.
PAGED_CODE();
return IoCreateFile( FileHandle,
DesiredAccess,
ObjectAttributes,
IoStatusBlock,
(PLARGE_INTEGER) NULL,
0L,
ShareAccess,
FILE_OPEN,
OpenOptions,
(PVOID) NULL,
0L,
CreateFileTypeNone,
(PVOID) NULL,
0 );
}