какая польза от функции DosPathToSessionPath? - PullRequest
0 голосов
/ 31 мая 2010

Я делаю небольшой анализ файловых функций в ядре DLL. Я заметил, что эта функция называется DosPathToSessionPath. Я погуглил за это. Там нет много документации по этому поводу. Кто-нибудь может сказать мне, в чем польза этой функции?

1 Ответ

0 голосов
/ 28 июля 2010

DosPathToSessionPath не задокументировано. Вот небольшой код C #, который использует DosPathToSessionPath:

using System;
using System.Runtime.InteropServices;

namespace DosPathToSessionPath {
    static class NativeMethods {
        [DllImport ("kernel32.dll", CharSet = CharSet.Unicode)]
        [return: MarshalAs(UnmanagedType.Bool)]
        internal static extern bool DosPathToSessionPath (
            uint sessionId, String pInPath, out IntPtr ppOutPath);

        [DllImport ("kernel32.dll")]
        internal static extern uint WTSGetActiveConsoleSessionId ();

        [DllImport ("kernel32.dll", SetLastError = true, ExactSpelling = true)]
        internal static extern IntPtr LocalFree (IntPtr hMem);
    }
    class Program {
        static void Main (string[] args) {
            uint sessionId = NativeMethods.WTSGetActiveConsoleSessionId ();
            string filePath = @"C:\Program Files";
            IntPtr ppOutPath;
            bool statusCode = NativeMethods.DosPathToSessionPath (
                                    sessionId, filePath, out ppOutPath);
            if (statusCode) {
                string outPath = Marshal.PtrToStringAuto (ppOutPath);
                Console.WriteLine (outPath);
                ppOutPath = NativeMethods.LocalFree (ppOutPath);
            }
        }
    }
}

Не ясно, в каких ситуациях следует использовать эту функцию. Путь сеанса - это путь типа \Sessions\1\DosDevices\C:\Program Files или C:\Users\Oleg\AppData\Local\VirtualStore\Program Files?

Этот код вы видите в качестве отправной точки некоторых экспериментов. В настоящее время выходной путь DosPathToSessionPath (ppOutPath) всегда совпадает с входным путем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...