Language & API
Language & API/WINDOWS DRIVER
2016. 7. 25.
[함수]IoGetCurrentIrpStackLocation
123456FORCEINLINE__drv_aliasesMemPIO_STACK_LOCATIONIoGetCurrentIrpStackLocation( _In_ PIRP Irp)cs [파라미터]Irp -> 디바이스 스택 정보를 가지고 있는 IRP의 포인터다. [반환값]IRP의 IO_STACK_LOCATION 중 가장 최근(최상단, TOP)에 위치해 있는 구조체를 반환한다. [함수설명]현재의 드라이브가 가지는 다바이스 스택의 가장 최근 위치를 구해주는 함수이다. [호출할때 요구되는 IRQL]IRQL == ANY IRQL 아래 예제이다. 1234567891011121314NTSTATUSSAMPLE1_PnpDispatch(IN PDEVICE_OBJECT DeviceObject,IN PIRP Irp){ PIO_STAC..
Language & API/WINDOWS DRIVER
2016. 7. 25.
[함수]IoCreateSymbolicLink
12345NTSTATUSIoCreateSymbolicLink( _In_ PUNICODE_STRING SymbolicLinkName, _In_ PUNICODE_STRING DeviceName );Colored by Color Scriptercs [파라미터] SymbolicLinkName -> 유저 네임 유니코드 스트링 버퍼, 드라이버가 유저 모드 응용프로그램, System Componet에 제공하는 인터페이스이다. DeviceName -> 드라이버 오브젝트에서 만든 유니코드 스트링 버퍼, PDEVICE_OBJECT가 만들어질 때 사용된 이름이다. [반환값] PDEIVCE_OBJECT 의 DeviceName 과 SymbolicLinkName을 연결시키는 데 성공했다면 STATUS_SUCCESS 를 반환한다...
Language & API/WINDOWS DRIVER
2016. 7. 25.
[함수]IoSetDeviceInterfaceState
12345NTSTATUS IoSetDeviceInterfaceState( _In_ PUNICODE_STRING SymbolicLinkName, _In_ BOOLEAN Enable); Colored by Color Scriptercs [파라미터] SymbolicLinkName -> IoRegisterDeviceInterface or IoGetDeviceInterfaces 포함된 스트링, 디바이스 인터페이스 이름을 나타낸 스티링 Enable -> TRUE -> device interface Enable FALSE -> device interface Disable [리턴값] 성공하면 STATUS_SUCCESS를 반환한다.
Language & API/WINDOWS DRIVER
2016. 7. 25.
[함수]IoRegisterDeviceInterface
12345678910NTSTATUSNTAPIIoRegisterDeviceInterface( _In_ PDEVICE_OBJECT PhysicalDeviceObject, _In_ CONST GUID *InterfaceClassGuid, _In_opt_ PUNICODE_STRING ReferenceString, _Out_ _When_(return==0, _At_(SymbolicLinkName->Buffer, __drv_allocatesMem(Mem))) PUNICODE_STRING SymbolicLinkName );Colored by Color Scriptercs [파라미터]PhysicalDeviceObject -> PDO 포인터 InterfaceClassGuid -> GUID 클래스 포인터, Referenc..
Language & API/WINDOWS DRIVER
2016. 7. 25.
[자료구조]DEVICE_OBJECT
1234567891011121314151617181920212223242526272829303132333435363738394041typedef struct DECLSPEC_ALIGN(MEMORY_ALLOCATION_ALIGNMENT) _DEVICE_OBJECT { CSHORT Type; USHORT Size; LONG ReferenceCount; struct _DRIVER_OBJECT *DriverObject; struct _DEVICE_OBJECT *NextDevice; struct _DEVICE_OBJECT *AttachedDevice; struct _IRP *CurrentIrp; PIO_TIMER Timer; ULONG Flags; // See above: DO_... ULONG Character..
Language & API/WINDOWS DRIVER
2016. 7. 25.
[함수]IoAttachDeviceToDeviceStack
123456PDEVICE_OBJECTIoAttachDeviceToDeviceStack( _In_ _When_(return!=0, __drv_aliasesMem) PDEVICE_OBJECT SourceDevice, _In_ PDEVICE_OBJECT TargetDevice );Colored by Color Scriptercs [파라미터]SourceDevice -> 드라이버 루틴에서 IoCreateDevice()를 호출해 만들어낸 PDEVICE_OBJECT의 포인터다. 해당 드라이버는 TargetDevice가 포함된 다바이스 스택에 동참한다. TargetDevice -> SourceDevice가 연결하고자 하는 PDEVICE_OBJECT의 포인터다. 보통 WDM 드라이버에서 이 값은 PDO(physical ..
Language & API/WINDOWS DRIVER
2016. 7. 25.
[함수]IoCreateDevice
12345678910111213141516NTSTATUSIoCreateDevice( _In_ PDRIVER_OBJECT DriverObject, _In_ ULONG DeviceExtensionSize, _In_opt_ PUNICODE_STRING DeviceName, _In_ DEVICE_TYPE DeviceType, _In_ ULONG DeviceCharacteristics, _In_ BOOLEAN Exclusive, _Outptr_result_nullonfailure_ _At_(*DeviceObject, __drv_allocatesMem(Mem) _When_((((_In_function_class_(DRIVER_INITIALIZE)) ||(_In_function_class_(DRIVER_DISPATC..
Language & API/C++
2016. 7. 19.
[c++_For_C] assert
1234567891011121314#include #include using namespace std;int main(_In_ int _Argc, _In_reads_(_Argc) _Pre_z_ char ** _Argv, _In_z_ char ** _Env){ int abc = 1000; int test = -1; cout
Language & API/OpenCV
2016. 4. 27.
[코딩]static lib 사용시 VideoCapture LNK2019 문제 해결방법
#pragma comment(lib, "vfw32.lib") #pragma comment( lib, "comctl32.lib" ) 위에 두 라이브러리를 참조 하도록 하자 아래 에러 문구이다. 1>opencv_highgui2411d.lib(cap_vfw.obj) : error LNK2019: _ICOpen@12 외부 기호(참조 위치: "public: virtual struct _IplImage * __thiscall CvCaptureCAM_VFW::retrieveFrame(int)" (?retrieveFrame@CvCaptureCAM_VFW@@UAEPAU_IplImage@@H@Z) 함수)에서 확인하지 못했습니다. 1>opencv_highgui2411d.lib(cap_vfw.obj) : error LNK20..