Reactos
at master 88 lines 2.8 kB view raw
1/* 2 * mountmgr.h 3 * 4 * Mount Manager mounted devices interface 5 * 6 * This file is part of the ReactOS DDK package. 7 * 8 * Contributors: 9 * Magnus Olsen <greatlord@reactos.org> 10 * Amine Khaldi <amine.khaldi@reactos.org> 11 * Hermès Bélusca-Maïto <hermes.belusca-maito@reactos.org> 12 * 13 * THIS SOFTWARE IS NOT COPYRIGHTED 14 * 15 * This source code is offered for use in the public domain. You may 16 * use, modify or distribute it freely. 17 * 18 * This code is distributed in the hope that it will be useful but 19 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY 20 * DISCLAIMED. This includes but is not limited to warranties of 21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 22 * 23 */ 24 25#ifndef _MOUNTDEV_ 26#define _MOUNTDEV_ 27 28#pragma once 29 30#include <mountmgr.h> 31 32#ifdef __cplusplus 33extern "C" { 34#endif 35 36/* Windows 2003 fixed the required access for some IOCTLs */ 37#if (NTDDI_VERSION >= NTDDI_WS03) 38 #define EXPECTED_ACCESS (FILE_READ_ACCESS | FILE_WRITE_ACCESS) 39#else 40 #define EXPECTED_ACCESS FILE_ANY_ACCESS 41#endif 42 43#if (NTDDI_VERSION >= NTDDI_WIN2K) 44 45#define IOCTL_MOUNTDEV_QUERY_UNIQUE_ID CTL_CODE(MOUNTDEVCONTROLTYPE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS) 46#define IOCTL_MOUNTDEV_QUERY_SUGGESTED_LINK_NAME CTL_CODE(MOUNTDEVCONTROLTYPE, 3, METHOD_BUFFERED, FILE_ANY_ACCESS) 47#define IOCTL_MOUNTDEV_LINK_CREATED CTL_CODE(MOUNTDEVCONTROLTYPE, 4, METHOD_BUFFERED, EXPECTED_ACCESS) 48#define IOCTL_MOUNTDEV_LINK_DELETED CTL_CODE(MOUNTDEVCONTROLTYPE, 5, METHOD_BUFFERED, EXPECTED_ACCESS) 49 50typedef struct _MOUNTDEV_UNIQUE_ID { 51 USHORT UniqueIdLength; 52 UCHAR UniqueId[1]; 53} MOUNTDEV_UNIQUE_ID, *PMOUNTDEV_UNIQUE_ID; 54 55typedef struct _MOUNTDEV_SUGGESTED_LINK_NAME { 56 BOOLEAN UseOnlyIfThereAreNoOtherLinks; 57 USHORT NameLength; 58 WCHAR Name[1]; 59} MOUNTDEV_SUGGESTED_LINK_NAME, *PMOUNTDEV_SUGGESTED_LINK_NAME; 60 61#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ 62 63#if (NTDDI_VERSION >= NTDDI_WINXP) 64 65#define IOCTL_MOUNTDEV_QUERY_STABLE_GUID CTL_CODE(MOUNTDEVCONTROLTYPE, 6, METHOD_BUFFERED, FILE_ANY_ACCESS) 66 67typedef struct _MOUNTDEV_STABLE_GUID { 68 GUID StableGuid; 69} MOUNTDEV_STABLE_GUID, *PMOUNTDEV_STABLE_GUID; 70 71#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ 72 73/* NOTE: Support for IOCTL_MOUNTDEV_UNIQUE_ID_CHANGE_NOTIFY 74 * seems to have been removed from official WDK in Vista+ */ 75#define IOCTL_MOUNTDEV_UNIQUE_ID_CHANGE_NOTIFY CTL_CODE(MOUNTDEVCONTROLTYPE, 1, METHOD_BUFFERED, EXPECTED_ACCESS) 76typedef struct _MOUNTDEV_UNIQUE_ID_CHANGE_NOTIFY_OUTPUT { 77 ULONG Size; 78 USHORT OldUniqueIdOffset; 79 USHORT OldUniqueIdLength; 80 USHORT NewUniqueIdOffset; 81 USHORT NewUniqueIdLength; 82} MOUNTDEV_UNIQUE_ID_CHANGE_NOTIFY_OUTPUT, *PMOUNTDEV_UNIQUE_ID_CHANGE_NOTIFY_OUTPUT; 83 84#ifdef __cplusplus 85} /* extern "C" */ 86#endif 87 88#endif /* _MOUNTDEV_ */