일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Virtual Private Cloud
- 온 프레미스
- 커뮤니티 클라우드
- 클라우드 서비스 소유자
- 클라우드 제공자
- 클라우드 자원 관리자
- VMWare vSphere
- 가상 프라이빗 클라우드
- Error 1720
- 이 컴퓨터는 도메인의 구성원이 아닙니다.
- VMWare View Connection Serve
- IT 자원
- 멀티테넌시
- VMware
- 클라우드 보안 취약성
- 수직적 확장
- dhcp
- 온디맨드식
- 정수형 데이터타입
- DHCP 설치
- DHCP 설정
- Community Cloud
- 클라우드 소비자
- 수평적 확장
- View Connection
- 제한된 이식성
- 운영관리제어의 축소
- 도메인 사용자 또는 그룹을 확인할 수 없습니다.
- 고정 IP주소를 가진 네트워크 어댑터를 검색할 수 없습니다.
- 자원 풀링
- Today
- Total
한 걸음씩..
Beep 사용 본문
PC 내부 Beep 음을 울리게 하는 코드 Debug용으로 사용
NTSTATUS DriverEntry( PDRIVER_OBJECT pDriverObject, PUNICODE_STRING RegistryPath )
{
//....
pDriverObject->MajorFunction[IRP_MJ_CREATE]= PCIDrv_CreateClose;
pDriverObject->MajorFunction[IRP_MJ_CLOSE]= PCIDrv_CreateClose;
return STATUS_SUCCESS;
}
NTSTATUS PCIDrv_CreateClose( IN PDEVICE_OBJECT pFunctionDeviceObject, IN PIRP pIrp )
{
//..........
PIO_STACK_LOCATION pStack = NULL;
PPCI_DEVICE_EXTENSIONpDeviceExtension = NULL;
ULONG BeepDuration = 0;
ULONG BeepFrequency = 0;
LARGE_INTEGER dwInterval;
LARGE_INTEGER dwOutValue;
KEVENT BeepDurationEvent = { 0, };
//..........
pStack = IoGetCurrentIrpStackLocation( pIrp );
pDeviceExtension = (PPCI_DEVICE_EXTENSION) pFunctionDeviceObject->DeviceExtension;
switch( pStack -> MajorFunction )
{
case IRP_MJ_CREATE:
{
//....
KeInitializeEvent( &BeepDurationEvent, NotificationEvent, FALSE );
if ( BeepDuration <= 0 )
BeepDuration = 10;
if ( BeepFrequency <= 0 )
BeepFrequency = 1000;
dwInterval = RtlConvertLongToLargeInteger( -1000000 * ( BeepDuration / 10 ) );
dwOutValue.QuadPart = 1193167 / BeepFrequency;
WRITE_PORT_UCHAR( (char *)0x61, 3 );
WRITE_PORT_UCHAR( (char *)0x43, 0xB6 );
WRITE_PORT_UCHAR( (char *)0x42, (char)(dwOutValue.QuadPart % 0x100) );
WRITE_PORT_UCHAR( (char *)0x42, (char)(dwOutValue.QuadPart / 0x100) );
KeWaitForSingleObject( &BeepDurationEvent, Executive, KernelMode, FALSE, &dwInterval.QuadPart );
WRITE_PORT_UCHAR( (char *)0x61, 0 );
//............
break;
}
case IRP_MJ_CLOSE:
{
//....
break;
}
}
pIrp->IoStatus.Status = ntStatus;
pIrp->IoStatus.Information = 0;
IoCompleteRequest( pIrp, IO_NO_INCREMENT );
return ntStatus;
}
LARGE_INTEGER RtlConvertLongToLargeInteger( LONG SignedInteger )
{
LARGE_INTEGER li;
li.QuadPart = SignedInteger;
return li;
}
'프로그래밍' 카테고리의 다른 글
MFC KeyDown 이벤트가 안될 때 (0) | 2013.07.15 |
---|---|
0xC0000005: Access violation 오류 해결 방법 (0) | 2013.07.15 |
IOPM(I/O Permission Bitmap) 구현 (0) | 2013.07.15 |
Toaster enum Error (0) | 2013.07.15 |
Device 인식 기본적인 함수 (0) | 2013.07.15 |