internal-r3-nt.h revision 6f82db701c69ae6925eb7e8bf1dfe25c9f951bdd
/* $Id$ */
/** @file
* IPRT - Internal Header for the Native NT code.
*/
/*
* Copyright (C) 2010-2012 Oracle Corporation
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
* General Public License (GPL) as published by the Free Software
* Foundation, in version 2 as it comes in the "COPYING" file of the
* VirtualBox OSE distribution. VirtualBox OSE is distributed in the
* hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
*
* The contents of this file may alternatively be used under the terms
* of the Common Development and Distribution License Version 1.0
* (CDDL) only, as it comes in the "COPYING.CDDL" file of the
* VirtualBox OSE distribution, in which case the provisions of the
* CDDL are applicable instead of those of the GPL.
*
* You may elect to license modified versions of this file under the
* terms and conditions of either the GPL or the CDDL or both.
*/
#ifndef ___internal_r3_nt_h___
#define ___internal_r3_nt_h___
/*******************************************************************************
* Header Files *
*******************************************************************************/
#include <ntstatus.h>
#ifdef IPRT_NT_USE_WINTERNL
# define WIN32_NO_STATUS
# include <windef.h>
# include <winnt.h>
# include <winternl.h>
# define IPRT_NT_NEED_API_GROUP_1
#elif defined(IPRT_NT_USE_WDM)
# include <wdm.h>
# define IPRT_NT_NEED_API_GROUP_1
#else
# include <ntifs.h>
#endif
/*******************************************************************************
* Defined Constants And Macros *
*******************************************************************************/
/** Indicates that we're targetting native NT in the current source. */
#define RT_USE_NATIVE_NT 1
/** Initializes a IO_STATUS_BLOCK. */
/** Similar to INVALID_HANDLE_VALUE in the Windows environment. */
#ifdef DEBUG_bird
/** Enables the "\\!\" NT path pass thru as well as hacks for listing NT object
* directories. */
# define IPRT_WITH_NT_PATH_PASSTHRU 1
#endif
/*******************************************************************************
* Internal Functions *
*******************************************************************************/
int rtNtPathOpen(const char *pszPath, ACCESS_MASK fDesiredAccess, ULONG fFileAttribs, ULONG fShareAccess,
int rtNtPathOpenDir(const char *pszPath, ACCESS_MASK fDesiredAccess, ULONG fShareAccess, ULONG fCreateOptions,
/**
* Internal helper for comparing a WCHAR string with a char string.
*
* @returns @c true if equal, @c false if not.
* @param pwsz1 The first string.
* @param cb1 The length of the first string, in bytes.
* @param psz2 The second string.
* @param cch2 The length of the second string.
*/
DECLINLINE(bool) rtNtCompWideStrAndAscii(WCHAR const *pwsz1, size_t cch1, const char *psz2, size_t cch2)
{
return false;
while (cch2-- > 0)
{
return false;
}
return true;
}
/*******************************************************************************
* NT APIs *
*******************************************************************************/
#ifdef IPRT_NT_NEED_API_GROUP_1
typedef struct _FILE_FS_ATTRIBUTE_INFORMATION
{
extern "C" NTSTATUS NTAPI NtQueryVolumeInformationFile(HANDLE, PIO_STATUS_BLOCK, PVOID, ULONG, FS_INFORMATION_CLASS);
#endif
typedef struct _OBJECT_DIRECTORY_INFORMATION
{
#endif