windows programming 코딩 질문

익명 사용자의 이미지

windows programming 메일 슬롯 공부를 하고 있는데 커널 오브젝트 usage count를 확인할 방법이 없을까요?

상태가 non-signaled로 바뀌는 걸 확인하는 WaitForSingleObject 함수가 있긴 한데 블로킹 방식의 함수라서 제가 원하는 방법은 아닙니다.

만들고자 하는 프로그램은 총 3개인데

1) 메일 슬롯을 만드는 프로그램

2) 메일 슬롯에 사용자로부터 입력된 문자열을 전송하는 sender 프로그램

3) 2)에서 생성된 자식 sender 프로그램 ( 2)에서 인자로 전달받은 메일 슬롯 핸들값이 상속되었는지 확인하는 코드가 있기 때문에 2)와는 약간 다릅니다.)

사실 1)에서는 메일 슬롯을 핸들값 usage count가 0이 될 때 딱 종료시키고 싶습니다.

자신이 생성한 메일 슬롯 리소스를 참조하는 프로세스가 몇 개인지 모르는 상황이기 때문에 참조 횟수가 0인 경우에 반환하는 것이 가장 바람직하다고 생각해서..

여기서 생각해볼 방법은 WaitForSingleObject의 두 번째 인자값이 time-out을 설정하는 값이라서 0 넣는 것이었습니다.

제 예상으로는 상태만 확인 후 바로 반환할 것이라 생각했는데요. 그럼 아직 signaled 상태여서 WAIT_TIMEOUT을 반환할 것이라 기대했는데 왠걸 0이 나옵니다.

이때 심지어 2)에서 메일 슬롯을 사용하고 있는 상황이었는데 말이죠..

뭐가 잘못된 건지 모르겠지만 일단 '1)의 프로그램에서 usage count를 확인하는 방법'에 대해 알고 싶습니다.

좀만 더 욕심을 부린다면 왜 저런 값을 받게 되었는지 알 수 있을까요? ㅜㅜ 답변 부탁드립니다.

shint의 이미지

- 메일슬롯 버퍼에도 제한이 있습니다.
성능은 상당히 좋은 편입니다.
- 단방향 전송이 가능합니다.
- 보안 SAL 을 적용하실 수 있습니다.
- 이런 함수가 보이네요.
GetProcessIoCounters()
GetProcessHandleCount()

- STL 의 list 나 queue 등을 공유해서. 사용하는 방법도 상당히 빠릅니다.
배열 > CAtlMap > STL Port > stl 속도
- 윈도우 네트워크 드라이브를 연결해서. 사용하는 방법도 편하고. 좋습니다.
접속 해제가 되는 문제가 있기도 합니다.
- GPGPU AMP PPL 등을 함께 사용하시면. 굉장한 속도 향상이 있다고 합니다.
http://www.devpia.com/Maeul/Contents/Detail.aspx?BoardID=51&MAEULNO=20&no=8873&page=1

제가 사용하던. MSDN 메일슬롯 예제가 없어졌네요. ㅇ_ㅇ;;
책 예제 소스 보시면 될겁니다.
윈도우 XP 에서는 MailSlot 사용시. 윈도우 서비스 옵션을 변경해줘야 적용이 되기도 하는 어려움이 있습니다.

방금 찾아본 주소 모두 적어봅니다.

Using Mailslots for Interprocess Communication
https://www.codeproject.com/Articles/8527/Using-Mailslots-for-Interprocess-Communication

Interprocess communication using Mailslots
https://autohotkey.com/board/topic/55473-interprocess-communication-using-mailslots/

Creating a Mailslot
https://docs.microsoft.com/ko-kr/windows/desktop/ipc/creating-a-mailslot

프로세스간 통신(IPC) - 메일 슬롯(MailSlot)
http://dakuo.tistory.com/86

커널 오브젝트 그리고 Usage Count
http://robodream.tistory.com/194

[뇌자극 필기] Chapter 7. 프로세스간 통신 (IPC - Inter Process Communcation)
http://blog.naver.com/PostView.nhn?blogId=ruinarts&logNo=220625940423

Chapter 7. 프로세스간 통신(IPC) 1
http://christin2.tistory.com/entry/Chapter-7-프로세스간-통신IPC-1

커널 오브젝트와 Usage Count 란?
http://holyhacker.tistory.com/54

윈도우즈 시스템 프로그래밍 [6] - 커널 오브젝트와 오브젝트 핸들
http://carpedm20.blogspot.com/2012/08/6.html

Windows :: 윈도우 핸들찾기, pid를 이용하여 핸들 가져오기
http://sosal.kr/657

GetProcessHandleCount function
https://docs.microsoft.com/en-us/windows/desktop/api/processthreadsapi/nf-processthreadsapi-getprocesshandlecount

Process Security and Access Rights
https://docs.microsoft.com/ko-kr/windows/desktop/ProcThread/process-security-and-access-rights

C# 프로세스 목록 알아오기
http://darkangelus.tistory.com/45

Diving into win32 Processes
https://aljensencprogramming.wordpress.com/tag/getcurrentprocess/

프로세스간 통신(IPC) - 메일 슬롯(MailSlot)
http://dakuo.tistory.com/m/86

Windows :: IPC MailSlot을 이용한 프로세스간 통신
http://sosal.kr/631

프로세스간 통신(IPC) - 메일 슬롯(MailSlot)출처: http://dakuo.tistory.com/86 [hacker dakuo]
http://dakuo.tistory.com/86
http://dakuo.tistory.com/89

CreateMailslot
https://www.codeproject.com/search.aspx?q=CreateMailslot&sbo=kw&x=12&y=5

network handle
https://www.codeproject.com/search.aspx?q=network+handle&sbo=kw&x=8&y=3

network share memory
https://www.codeproject.com/search.aspx?q=network+share+memory&doctypeid=1%3b2%3b3%3b13%3b14

Windows :: IPC MailSlot을 이용한 프로세스간 통신출처: http://sosal.kr/631 [so_sal ]
http://sosal.kr/631

IPC(프로세스 간 통신) - Mail Slot
http://hypen1117.tistory.com/entry/IPC%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%EA%B0%84-%ED%86%B5%EC%8B%A0-Mail-Slot

윈도우즈 시스템 프로그래밍 [7] - 프로세스간 통신 (IPC)
http://carpedm20.blogspot.kr/2012/08/7-ipc-1.html

IPC MailSlot 메일 슬롯
http://amgn.tistory.com/513

5 프로세스 기반의 다중접속 서버의 구현
https://www.youtube.com/watch?v=wwVKe55rVbM

운영체제 [11-2] 프로세스 간의 통신, 김용석, 강원대학교
https://www.youtube.com/watch?v=fTlfeRhIKrc

CreateMailslot function
https://msdn.microsoft.com/ko-kr/library/windows/desktop/aa365147(v=vs.85).aspx

IPC - 메일 슬롯
http://bbolmin.tistory.com/93

IPC-Mailslot 함수정리
https://kldp.org/node/105128

CreateMailslot(), ReadFile(), WriteFile() C/C++ / Programming[출처] CreateMailslot(), ReadFile(), WriteFile()|작성자 Seong Jin
http://blog.naver.com/PostView.nhn?blogId=seongjin0526&logNo=220620681852&parentCategoryNo=&categoryNo=7&viewDate=&isShowPopularPosts=true&from=search

Mailslots 14 Part 2
http://www.winsocketdotnetworkprogramming.com/winsock2programming/winsock2advancedmailslot14a.html

17.CreateMailSlots in IPC - Windows System Programming in C/C++
https://www.youtube.com/watch?v=MrlRuffjxlM

Windows Operating System Internals - by David A. Solomon and Mark E. Russinovich with Andreas Polze Unit OS3: Concurrency 3.4. Windows APIs for Synchronization.
http://slideplayer.com/slide/8123193/

NFS(Network File System)
https://www.slideshare.net/udamale/nfsnetwork-file-system

How to Handle and IdentifyNetwork Probes
http://cecs.wright.edu/~pmateti/Courses/499/Probing/How%20to%20Handle%20Network%20Probes.htm

Monitoring Remote Systems
http://www.network-monitor.com/monitoring-remote-network-segments.php

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

익명 사용자의 이미지

참조할 사이트 감사합니다.
적절한 함수를 찾아보겠습니다!

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.