На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! правила раздела Алгоритмы
1. Помните, что название темы должно хоть как-то отражать ее содержимое (не создавайте темы с заголовком ПОМОГИТЕ, HELP и т.д.). Злоупотребление заглавными буквами в заголовках тем ЗАПРЕЩЕНО.
2. При создании темы постарайтесь, как можно более точно описать проблему, а не ограничиваться общими понятиями и определениями.
3. Приводимые фрагменты исходного кода старайтесь выделять тегами code.../code
4. Помните, чем подробнее Вы опишете свою проблему, тем быстрее получите вразумительный совет
5. Запрещено поднимать неактуальные темы (ПРИМЕР: запрещено отвечать на вопрос из серии "срочно надо", заданный в 2003 году)
6. И не забывайте о кнопочках TRANSLIT и РУССКАЯ КЛАВИАТУРА, если не можете писать в русской раскладке :)
Модераторы: Akina, shadeofgray
  
> Список Pipes в системе
    Может кому будет интересно - вот функция (недокумент.), показывает все пипы в системе (выдрано из проекта, модет не очень работать, но мысля есть):
    ExpandedWrap disabled
      <br>#include <windows.h><br>#include <stdio.h><br><br>#define FileDirectoryInformation 1<br>#define STATUS_NO_MORE_FILES 0x80000006L<br><br>typedef struct<br>{<br>    USHORT Length;<br>    USHORT MaximumLength;<br>    PWSTR  Buffer;<br>} UNICODE_STRING, *PUNICODE_STRING;<br><br>typedef struct<br>{<br>    LONG Status;<br>    ULONG Information;<br>} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;<br><br>typedef struct {<br>    ULONG NextEntryOffset;<br>    ULONG FileIndex;<br>    LARGE_INTEGER CreationTime;<br>    LARGE_INTEGER LastAccessTime;<br>    LARGE_INTEGER LastWriteTime;<br>    LARGE_INTEGER ChangeTime;<br>    LARGE_INTEGER EndOfFile;<br>    LARGE_INTEGER AllocationSize;<br>    ULONG FileAttributes;<br>    ULONG FileNameLength;<br>    union {<br>        struct {<br>            WCHAR FileName[1];<br>        } FileDirectoryInformationClass;<br><br>        struct {<br>            DWORD dwUknown1;<br>            WCHAR FileName[1];<br>        } FileFullDirectoryInformationClass;<br><br>        struct {<br>            DWORD dwUknown2;<br>            USHORT AltFileNameLen;<br>            WCHAR AltFileName[12];<br>            WCHAR FileName[1];<br>        } FileBothDirectoryInformationClass;<br>    };<br>} FILE_QUERY_DIRECTORY, *PFILE_QUERY_DIRECTORY;<br><br><br>typedef LONG (WINAPI *PROCNTQDF)( HANDLE,HANDLE,PVOID,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,<br>                                  UINT,BOOL,PUNICODE_STRING,BOOL );<br><br>PROCNTQDF NtQueryDirectoryFile;<br>void main(void)<br>{<br>    LONG ntStatus;<br>    IO_STATUS_BLOCK IoStatus;<br>    HANDLE hPipe;<br>    BOOL bReset = TRUE;<br>    PFILE_QUERY_DIRECTORY DirInfo,<br>                          TmpInfo;<br><br><br>    NtQueryDirectoryFile = (PROCNTQDF)GetProcAddress(<br>                                      GetModuleHandle("ntdll"),<br>                                      "NtQueryDirectoryFile"<br>                                      );<br><br>    if (!NtQueryDirectoryFile)<br>       return;<br><br>    hPipe = CreateFile("\\\\.\\Pipe\\",GENERIC_READ,<br>                       FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,<br>                       NULL,OPEN_EXISTING,0,NULL);<br><br>   if(hPipe == INVALID_HANDLE_VALUE)  return;<br><br>   DirInfo = (PFILE_QUERY_DIRECTORY) new BYTE[1024];<br><br>   printf("Pipe name (Number of instances, Maximum instances)\n\n");<br>   while(1)<br>   {<br>       ntStatus = NtQueryDirectoryFile(hPipe,NULL,NULL,NULL,&IoStatus,DirInfo,1024,<br>                                       FileDirectoryInformation,FALSE,NULL,bReset);<br><br>       if (ntStatus!=NO_ERROR)<br>       {<br>          if (ntStatus == STATUS_NO_MORE_FILES) break;<br>          return;<br>       }<br><br>       TmpInfo = DirInfo;<br>       while(1)<br>       {<br>          if(TmpInfo->NextEntryOffset==0)<br>            break;<br><br>          TmpInfo->FileDirectoryInformationClass.FileName[TmpInfo->FileNameLength/sizeof(WCHAR)] = NULL;<br><br>          wprintf(L"\%s (\%d, \%d)\n",TmpInfo->FileDirectoryInformationClass.FileName,<br>                                   TmpInfo->EndOfFile.LowPart,<br>                                   TmpInfo->AllocationSize.LowPart );<br><br>          TmpInfo = (PFILE_QUERY_DIRECTORY)((DWORD)TmpInfo+TmpInfo->NextEntryOffset);<br>       }<br><br>       bReset = FALSE;<br>   }<br><br>   delete DirInfo;<br>   CloseHandle(hPipe);<br>}<br><br>
    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
    0 пользователей:


    Рейтинг@Mail.ru
    [ Script execution time: 0,0165 ]   [ 15 queries used ]   [ Generated: 27.04.24, 07:28 GMT ]