Windows Vista MUP Changes - PowerPoint PPT Presentation

1 / 15
About This Presentation
Title:

Windows Vista MUP Changes

Description:

All IO operations (not just create) go through MUP. Drive letter paths go though MUP as well ... Create cancel requires IRP cancellation support. Works only if ... – PowerPoint PPT presentation

Number of Views:233
Avg rating:3.0/5.0
Slides: 16
Provided by: rameshs6
Category:
Tags: mup | changes | create | vista | windows

less

Transcript and Presenter's Notes

Title: Windows Vista MUP Changes


1
Windows Vista MUP Changes
  • Ramesh Shankar
  • November 17, 2005

2
Highlights
  • MUP is MUP.SYS, DFS client is DFSC.SYS
  • New redirector model to help filters
  • One attachment filters all
  • New APIs
  • FsRtlRegisterUncProviderEx()
  • FsRtlCancellableWaitForIoCompletion()
  • FsRtlMupGetProviderInfoFromFileObject()
  • FsRtlMupGetProviderIdFromName()

3
Highlights
  • Redirector device names are symbolic links to MUP
  • \Device\WinDfs doesnt exist anymore
  • NtQueryObject()/QueryDosDevice() trick wont work
    anymore
  • New prefix resolution IOCTL IOCTL_REDIR_QUERY_P
    ATH_EX
  • QUERY_PATH_REQUEST_EX structure
  • Redirectors need to support Windows Vista no
    hang initiative

4
Highlights
  • Provider order change doesnt require reboot
  • Cant disable DFS client

5
New Redirector Model
  • Surrogates and redirectors
  • CSC, DFSC gt surrogates
  • MUP registers as filesystem
  • Redirector registers with MUP using
    FsRtlRegisterUncProviderEx()
  • Unnamed device object
  • Device name
  • LH RDBSS (dynamic and static) uses
    FsRtlRegisterUncProviderEx()
  • Static RDBSS will be updated
  • Redirector must not register as filesystem
  • Filters attach to MUP, not to (Windows Vista)
    redirector

6
New Redirector Model
  • Redirector device name is symbolic link to MUP
  • All IO operations (not just create) go through
    MUP
  • Drive letter paths go though MUP as well
  • FILE_OBJECTs DEVICE_OBJECT is MUPs
  • Cant find redirector from FILE_OBJECT directly
  • Use FsRtlMupGetProviderInfoFromFileObject()
  • MUP to redirector calls have APCs enabled
  • User threads may get suspended
  • Watch out for deadlocks

7
New Redirector Model
  • Filters see IO to DFS client and all Windows
    Vista redirectors with one attachment
  • No double filtering issue of DFS client and
    SMB
  • Redirectors using FsRtlRegisterUncProvider()
    require separate attachment as in XP/W2K3
  • Attach to MUP, not to redirector by (hardcoded)
    name

8
IOCTL_REDIR_QUERY_PATH_EX
  • Issued for redirector registering with
    FsRtlRegisterUncProviderEx()
  • QUERY_PATH_REQUEST_EX structure
  • EA buffer to pass credentials
  • Request buffer ! Response buffer
  • Name in UNICODE_STRING
  • Claim either \\server\share or \\server

9
IOCTL_REDIR_QUERY_PATH_EX
  • Use recommended NTSTATUS codes to fail prefix
    resolution
  • Map error encountered to one of recommended
    errors
  • STATUS_BAD_NETWORK_PATH
  • STATUS_BAD_NETWORK_NAME
  • STATUS_LOGON_FAILURE
  • STATUS_ACCESS_DENIED
  • Few others
  • Surface STATUS_LOGON_FAILURE, STATUS_ACCESS_DENIED
    serves as feedback to user

10
Windows Vista No Hang support
  • Abort IO on thread termination by app/user
  • Creates can be cancelled
  • Not just thread termination
  • MUPs prefix resolution is interruptible wait
  • FsRtlCancellableWaitForIoCompletion()
  • Use API to handle thread termination case
  • Use to implement interruptible wait
  • Calls from MUP have APCs enabled
  • IRP cancel support required

11
Windows Vista No Hang support
  • Interruptible wait via API only handles thread
    termination case
  • Create cancel requires IRP cancellation support
  • Works only if redirectors do their part
  • Redirector responsible for synchronisation,
    cleanup etc
  • Both prefix resolution and create should be
    cancellable

12
Getting provider name
  • FILE_OBJECTs DEVICE_OBJECT points to MUP
  • Use FsRtlMupGetProviderInfoFromFileObject()
  • Filtering/identifying specific provider
  • Name to provider ID using FsRtlMupGetProviderIdF
    romName()
  • Compare provider ID per IO
  • Provider ID stable across provider load/unload
  • Provider can change on offline to online
    transition (CSC)

13
FsRtlRegisterUncProvider()
  • Strongly discouraged
  • MUP behaves like in XP/W2K3
  • STATUS_REPASE after provider is determined
  • IO does not go through MUP
  • Prevents double filtering
  • Filter attaches directly to redirector
  • Named device object
  • Redirector registers as filesystem
  • DEVICE_OBJECT of FILE_OBJECT points to redirector
  • Redirector receives IOCTL_REDIR_QUERY_PATH

14
Pending
  • Doc Using credentials in IOCTL_REDIR_QUERY_PATH_E
    X
  • IRP_MJ_QUERY_INFORMATION, FileNameInformation for
    DFS paths
  • LH server currently returns physical paths
    instead of logical

15
  • ?
Write a Comment
User Comments (0)
About PowerShow.com