Sample Code

Windows Driver Samples/ GPIO Sample Drivers/ C++/ simdevice/ common.h/

/*++

Copyright (c) Microsoft Corporation.  All rights reserved.

    THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
    KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
    IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
    PURPOSE.

Module Name:

    common.h

Abstract:

    Header file that provide some utility functionalities to the sample device driver

Environment:

    Kernel mode

--*/

#pragma once

#include <ntddk.h>
#pragma warning(disable:4201)  // disable nameless struct/union warnings
#include <wdf.h>
#pragma warning(default:4201)

#define NTSTRSAFE_LIB
#include <ntstrsafe.h>

#ifndef MAX_USHORT
#define MAX_USHORT ((USHORT)-1)
#endif

#ifndef MAX_ULONG
#define MAX_ULONG ((ULONG)-1)
#endif

#ifndef MAX_ULONG64
#define MAX_ULONG64 ((ULONG64)-1)
#endif

//
// Useful macros for setting and checking flags.
//

#define SET_FLAGS(_x, _f)          ((_x) |= (_f))
#define CLEAR_FLAGS(_x, _f)        ((_x) &= ~(_f))
#define CLEAR_OTHER_FLAGS(_x, _f)  ((_x) &= (_f))
#define CHECK_FLAG(_x, _f)         ((_x) & (_f))

//
// Macros for rounding up or down.
//

#define ROUND_DOWN(_x, _alignment) \
    ((_alignment == 1) ? (_x) : (((_x) / (_alignment)) * (_alignment)))

#define ROUND_UP(_x, _alignment) \
    ROUND_DOWN((_x) + (_alignment) - 1, (_alignment))

//
// Macros for find minimum and maximum of two integers.
//

#define MIN(a,b) (((a) < (b)) ? (a) : (b))
#define MAX(a,b) (((a) < (b)) ? (b) : (a))

//
// Define macros to allow easy pointer arithmetic.
//

#define Add2Ptr(_Ptr, _Value) ((PVOID)((PUCHAR)(_Ptr) + (_Value)))
#define PtrOffset(_Base, _Ptr) ((ULONG_PTR)(_Ptr) - (ULONG_PTR)(_Base))

// 4127 -- Conditional Expression is Constant warning
#define WHILE(constant) \
__pragma(warning(disable: 4127)) while(constant) __pragma(warning(default: 4127))

#define FIELD_OFFSET_AND_SIZE(t, f) \
    (FIELD_OFFSET(t, f) + FIELD_SIZE(t, f))

Our Services

  • What our customers say about us?

© 2011-2024 All Rights Reserved. Joya Systems. 4425 South Mopac Building II Suite 101 Austin, TX 78735 Tel: 800-DEV-KERNEL

Privacy Policy. Terms of use. Valid XHTML & CSS