* fhandler.h (fhandler_dev_raw::get_unit): New method. (fhandler_dev_tape::norewind): Eliminate. (fhandler_dev_tape::is_rewind_device): New method. * fhandler_raw.cc (fhandler_dev_raw::open): Open new fixed device name devices using NT internal method. Keep calling fhandler_base::open() for old mount table device mapping compatibility devices. (fhandler_dev_raw::fstat): Eliminate. Settings are done by fhandler_base::fstat() already. * fhandler_tape.cc: Remove `norewind' usage throughout. * ntdll.h: Define FILE_SYNCHRONOUS_IO_NONALERT. Define struct _IO_STATUS_BLOCK. Declare NtOpenFile(). * path.cc (get_raw_device_number): Add new approach for using fixed device names. (win32_device_name): Ditto. (get_device_number): Ditto. Require POSIX path to begin with "/dev/". (mount_info::conv_to_win32_path): Call win32_device_name() instead of get_device_number() after evaluating mount points to allow changing the win32 destination path again. * security.cc (str2buf2uni): Remove `static' to be able to call function from fhandler_dev_raw::open(). * wincap.cc: Set flag has_raw_devices appropriately. * wincap.h: Add flag has_raw_devices.
		
			
				
	
	
		
			166 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			166 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* ntdll.h.  Contains ntdll specific stuff not defined elsewhere.
 | 
						|
 | 
						|
   Copyright 2000, 2001 Red Hat, Inc.
 | 
						|
 | 
						|
   This file is part of Cygwin.
 | 
						|
 | 
						|
   This software is a copyrighted work licensed under the terms of the
 | 
						|
   Cygwin license.  Please consult the file "CYGWIN_LICENSE" for
 | 
						|
   details. */
 | 
						|
 | 
						|
#define STATUS_INFO_LENGTH_MISMATCH ((NTSTATUS) 0xc0000004)
 | 
						|
#define FILE_SYNCHRONOUS_IO_NONALERT 32
 | 
						|
 | 
						|
typedef enum _SYSTEM_INFORMATION_CLASS
 | 
						|
{
 | 
						|
  SystemBasicInformation = 0,
 | 
						|
  SystemProcessesAndThreadsInformation = 5,
 | 
						|
  /* There are a lot more of these... */
 | 
						|
} SYSTEM_INFORMATION_CLASS;
 | 
						|
 | 
						|
typedef struct _SYSTEM_BASIC_INFORMATION
 | 
						|
{
 | 
						|
  ULONG Unknown;
 | 
						|
  ULONG MaximumIncrement;
 | 
						|
  ULONG PhysicalPageSize;
 | 
						|
  ULONG NumberOfPhysicalPages;
 | 
						|
  ULONG LowestPhysicalPage;
 | 
						|
  ULONG HighestPhysicalPage;
 | 
						|
  ULONG AllocationGranularity;
 | 
						|
  ULONG LowestUserAddress;
 | 
						|
  ULONG HighestUserAddress;
 | 
						|
  ULONG ActiveProcessors;
 | 
						|
  ULONG NumberProcessors;
 | 
						|
} SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION;
 | 
						|
 | 
						|
typedef LONG KPRIORITY;
 | 
						|
typedef struct _VM_COUNTERS
 | 
						|
{
 | 
						|
  ULONG PeakVirtualSize;
 | 
						|
  ULONG VirtualSize;
 | 
						|
  ULONG PageFaultCount;
 | 
						|
  ULONG PeakWorkingSetSize;
 | 
						|
  ULONG WorkingSetSize;
 | 
						|
  ULONG QuotaPeakPagedPoolUsage;
 | 
						|
  ULONG QuotaPagedPoolUsage;
 | 
						|
  ULONG QuotaPeakNonPagedPoolUsage;
 | 
						|
  ULONG QuotaNonPagedPoolUsage;
 | 
						|
  ULONG PagefileUsage;
 | 
						|
  ULONG PeakPagefileUsage;
 | 
						|
} VM_COUNTERS, *PVM_COUNTERS;
 | 
						|
 | 
						|
typedef struct _CLIENT_ID
 | 
						|
{
 | 
						|
  HANDLE UniqueProcess;
 | 
						|
  HANDLE UniqueThread;
 | 
						|
} CLIENT_ID, *PCLIENT_ID;
 | 
						|
 | 
						|
typedef enum
 | 
						|
{
 | 
						|
  StateInitialized,
 | 
						|
  StateReady,
 | 
						|
  StateRunning,
 | 
						|
  StateStandby,
 | 
						|
  StateTerminated,
 | 
						|
  StateWait,
 | 
						|
  StateTransition,
 | 
						|
  StateUnknown,
 | 
						|
} THREAD_STATE;
 | 
						|
 | 
						|
typedef enum
 | 
						|
{
 | 
						|
  Executive,
 | 
						|
  FreePage,
 | 
						|
  PageIn,
 | 
						|
  PoolAllocation,
 | 
						|
  DelayExecution,
 | 
						|
  Suspended,
 | 
						|
  UserRequest,
 | 
						|
  WrExecutive,
 | 
						|
  WrFreePage,
 | 
						|
  WrPageIn,
 | 
						|
  WrPoolAllocation,
 | 
						|
  WrDelayExecution,
 | 
						|
  WrSuspended,
 | 
						|
  WrUserRequest,
 | 
						|
  WrEventPair,
 | 
						|
  WrQueue,
 | 
						|
  WrLpcReceive,
 | 
						|
  WrLpcReply,
 | 
						|
  WrVirtualMemory,
 | 
						|
  WrPageOut,
 | 
						|
  WrRendezvous,
 | 
						|
  Spare2,
 | 
						|
  Spare3,
 | 
						|
  Spare4,
 | 
						|
  Spare5,
 | 
						|
  Spare6,
 | 
						|
  WrKernel,
 | 
						|
  MaximumWaitReason
 | 
						|
} KWAIT_REASON;
 | 
						|
 | 
						|
typedef struct _SYSTEM_THREADS
 | 
						|
{
 | 
						|
  LARGE_INTEGER KernelTime;
 | 
						|
  LARGE_INTEGER UserTime;
 | 
						|
  LARGE_INTEGER CreateTime;
 | 
						|
  ULONG WaitTime;
 | 
						|
  PVOID StartAddress;
 | 
						|
  CLIENT_ID ClientId;
 | 
						|
  KPRIORITY Priority;
 | 
						|
  KPRIORITY BasePriority;
 | 
						|
  ULONG ContextSwitchCount;
 | 
						|
  THREAD_STATE State;
 | 
						|
  KWAIT_REASON WaitReason;
 | 
						|
} SYSTEM_THREADS, *PSYSTEM_THREADS;
 | 
						|
 | 
						|
typedef struct _SYSTEM_PROCESSES
 | 
						|
{
 | 
						|
  ULONG NextEntryDelta;
 | 
						|
  ULONG Threadcount;
 | 
						|
  ULONG Reserved1[6];
 | 
						|
  LARGE_INTEGER CreateTime;
 | 
						|
  LARGE_INTEGER UserTime;
 | 
						|
  LARGE_INTEGER KernelTime;
 | 
						|
  UNICODE_STRING ProcessName;
 | 
						|
  KPRIORITY BasePriority;
 | 
						|
  ULONG ProcessId;
 | 
						|
  ULONG InheritedFromProcessId;
 | 
						|
  ULONG HandleCount;
 | 
						|
  ULONG Reserved2[2];
 | 
						|
  VM_COUNTERS VmCounters;
 | 
						|
  IO_COUNTERS IoCounters;
 | 
						|
  SYSTEM_THREADS Threads[1];
 | 
						|
} SYSTEM_PROCESSES, *PSYSTEM_PROCESSES;
 | 
						|
 | 
						|
typedef struct _IO_STATUS_BLOCK
 | 
						|
{
 | 
						|
  NTSTATUS Status;
 | 
						|
  ULONG Information;
 | 
						|
} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
 | 
						|
 | 
						|
/* Function declarations for ntdll.dll.  These don't appear in any
 | 
						|
   standard Win32 header.  */
 | 
						|
extern "C"
 | 
						|
{
 | 
						|
  NTSTATUS NTAPI NtCreateToken (PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES,
 | 
						|
				TOKEN_TYPE, PLUID, PLARGE_INTEGER, PTOKEN_USER,
 | 
						|
				PTOKEN_GROUPS, PTOKEN_PRIVILEGES, PTOKEN_OWNER,
 | 
						|
				PTOKEN_PRIMARY_GROUP, PTOKEN_DEFAULT_DACL,
 | 
						|
				PTOKEN_SOURCE);
 | 
						|
  NTSTATUS NTAPI NtMapViewOfSection (HANDLE, HANDLE, PVOID *, ULONG, ULONG,
 | 
						|
				     PLARGE_INTEGER, PULONG, SECTION_INHERIT,
 | 
						|
				     ULONG, ULONG);
 | 
						|
  NTSTATUS NTAPI NtOpenFile (PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES,
 | 
						|
			     PIO_STATUS_BLOCK, ULONG, ULONG);
 | 
						|
  NTSTATUS NTAPI NtOpenSection (PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES);
 | 
						|
  NTSTATUS NTAPI NtQuerySystemInformation (SYSTEM_INFORMATION_CLASS,
 | 
						|
					   PVOID, ULONG, PULONG);
 | 
						|
  NTSTATUS NTAPI NtUnmapViewOfSection (HANDLE, PVOID);
 | 
						|
  VOID NTAPI RtlInitUnicodeString (PUNICODE_STRING, PCWSTR);
 | 
						|
  ULONG NTAPI RtlNtStatusToDosError (NTSTATUS);
 | 
						|
  NTSTATUS NTAPI ZwQuerySystemInformation (IN SYSTEM_INFORMATION_CLASS,
 | 
						|
					   IN OUT PVOID, IN ULONG,
 | 
						|
					   OUT PULONG);
 | 
						|
}
 |