Difference between r1.2 and the current
@@ -3,4 +3,39 @@
[[TableOfContents]]
== 개요 ==
그냥 정리 차원에서 작성하는 것이다.
분류 기준도 없으며, 자세한 설명도 없으며, 그냥 임의대로 정리한 것이다.
== pragma ==
디바이스 드라이버 소스를 보다보면 #pragma로 시작하는 것들이 있다.
사용 예는 다음과 같다.
{{{
#pragma code_seg{"INIT") // start INIT section
...
#pragma code_seg() // end INIT section
}}}
간략하게 정리하면 다음과 같다.
||pragma||설명||
||code_seg("INIT")||INIT 섹션을 시작한다.||
||code_seg()||INIT 섹션이 끝났다.||
||code_seg("PAGE")||PAGE 섹션을 시작한다.||
||code_seg()||PAGE 섹션이 끝났다.||
== 드라이버 등록 ==
== 플러그 앤 플레이 (PnP) ==
== 디스패치 (Dispatch) ==
== 메모리 ==
=== ExFreePool ===
{{{
if (Buffer != NULL)
ExFreePool(Buffer);
}}}
== 동기화 ==
=== 스핀락 ===
==== KeInitializeSpinLock ====
{{{
KeInitializeSpinLock(&BufferLock);
}}}
WDM API #
--
김도집 2025/01/12T06:58:12
그냥 정리 차원에서 작성하는 것이다.
분류 기준도 없으며, 자세한 설명도 없으며, 그냥 임의대로 정리한 것이다.
디바이스 드라이버 소스를 보다보면 #pragma로 시작하는 것들이 있다.
사용 예는 다음과 같다.
#pragma code_seg{"INIT") // start INIT section
...
#pragma code_seg() // end INIT section
간략하게 정리하면 다음과 같다.
pragma | 설명 |
code_seg("INIT") | INIT 섹션을 시작한다. |
code_seg() | INIT 섹션이 끝났다. |
code_seg("PAGE") | PAGE 섹션을 시작한다. |
code_seg() | PAGE 섹션이 끝났다. |
if (Buffer != NULL)
ExFreePool(Buffer);
1.7.1.1 ?KeInitializeSpinLock #
KeInitializeSpinLock(&BufferLock);