// // These are bit value flags // typedef enum AudioAllocateMemoryFlags { DEFAULT_MEMORY = 0x00, // Standard ExAllocatePool call ZERO_FILL_MEMORY = 0x01, // Zero the memory QUOTA_MEMORY = 0x02, // ExAllocatePoolWithQuota call LIMIT_MEMORY = 0x04, // Never allocation more then 1/4 Meg FIXED_MEMORY = 0x08, // Use locked memory PAGED_MEMORY = 0x10 // use pageable memory } AAMFLAGS; /* #define DEFAULT_MEMORY 0x00 // Standard ExAllocatePool call #define ZERO_FILL_MEMORY 0x01 // Zero the memory #define QUOTA_MEMORY 0x02 // ExAllocatePoolWithQuota call #define LIMIT_MEMORY 0x04 // Never allocation more then 1/4 Meg #define FIXED_MEMORY 0x08 // Use locked memory #define PAGED_MEMORY 0x10 // use pageable memory */ #define AudioAllocateMemory_Fixed(b,t,f,p) AudioAllocateMemory(b,t,f|FIXED_MEMORY,p) #define AudioAllocateMemory_Paged(b,t,f,p) AudioAllocateMemory(b,t,f|PAGED_MEMORY,p) NTSTATUS AudioAllocateMemory( IN SIZE_T bytes, IN ULONG tag, IN AAMFLAGS dwFlags, OUT PVOID *pptr ); #define UNKNOWN_SIZE MAXULONG_PTR #define AudioFreeMemory_Unknown(pMem) AudioFreeMemory(UNKNOWN_SIZE, pMem) void AudioFreeMemory( IN SIZE_T bytes, OUT PVOID *pptr ); // // Validation routines // #define AUDIO_BUGCHECK_CODE 0x000000AD #define AUDIO_NOT_AT_PASSIVE_LEVEL 0x00000000 #define AUDIO_NOT_BELOW_DISPATCH_LEVEL 0x00000001 #define AUDIO_INVALID_IRQL_LEVEL 0x00000002 // // BugCheck AD // Param1: AUDIO_STRUCTURE_VALIDATION // Param2: ptr // Param3: ntstatus code // #define AUDIO_STRUCTURE_VALIDATION 0x00000003 // // BugCheck AD // Param1: AUDIO_MEMORY_ALLOCATION_OVERWRITE // Param2: ptr // #define AUDIO_MEMORY_ALLOCATION_OVERWRITE 0x00000004 // // BugCheck AD // Param1: AUDIO_NESTED_MUTEX_SITUATION // Param2: pkmutex // Param3: lMutexState // #define AUDIO_NESTED_MUTEX_SITUATION 0x00000005 // // BugCheck AD // Param1: AUDIO_ABSURD_ALLOCATION_ATTEMPTED // Param2: // Param3: // #define AUDIO_ABSURD_ALLOCATION_ATTEMPTED 0x00000006 // // Used to smoke out pre-emption issues on the checked build. // NTSYSAPI NTSTATUS NTAPI ZwYieldExecution (VOID); void PagedCode( void ); #define PagedData PagedCode void ValidatePassiveLevel( void ); void AudioPerformYield( void ); #define AudioEnterMutex_Exclusive(pmutex) AudioEnterMutex(pmutex,TRUE) #define AudioEnterMutex_Nestable(pmutex) AudioEnterMutex(pmutex,FALSE) NTSTATUS AudioEnterMutex( IN PKMUTEX pmutex, IN BOOL bExclusive ); void AudioLeaveMutex( IN PKMUTEX pmutex ); void AudioObDereferenceObject( IN PVOID pvObject ); void AudioIoCompleteRequest( IN PIRP pIrp, IN CCHAR PriorityBoost ); #if 0 void AudioEnterSpinLock( IN PKSPIN_LOCK pSpinLock, OUT PKIRQL pOldIrql ); void AudioLeaveSpinLock( IN PKSPIN_LOCK pSpinLock, IN KIRQL OldIrql ); NTSTATUS AudioIoCallDriver ( IN PDEVICE_OBJECT pDevice, IN PIRP pIrp ); #endif