97 lines
2.1 KiB
C
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 );
|
||
|
}
|