2010-05-31 5 views
0

Я делаю небольшой анализ в файловых функциях в dll ядра. Я заметил эту функцию: DosPathToSessionPath. Я искал ее. Об этом мало документировано. Может ли кто-нибудь сказать мне, что такое использование этой функции?Что такое функция DosPathToSessionPath?

ответ

0

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) всегда совпадает с входным путем.

+0

Это было на самом деле вовремя до, фактически, когда я исследовал эту функцию. Было замечено, что эта функция идентифицирует только тип пути. С его помощью определяется пространство ядра frm (например: \ Sessions \ 1 \ DosDevices \ Drive \ Program Files) или пользовательский режим frm. – kiddo

Смежные вопросы