Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
Copyright (c) 1998-1999 Microsoft Corporation
Module Name:
notify.c
Abstract:
User-mode interface to UL.SYS.
Author:
Paul McDaniel (paulmcd) 07-Mar-2000
Revision History:
--*/
#include "precomp.h"
//
// Private macros.
//
//
// Private prototypes.
//
//
// Public functions.
//
/***************************************************************************++
Routine Description:
SrWaitForNotificaiton is used to receive volume activity notifications from the driver. This includes new volume, delete volume, and out of disk space for a volume.
Arguments:
ControlHandle - the HANDLE from SrCreateControlHandle.
pNotification - the buffer to hold the NOTIFICATION_RECORD.
NotificationLength - the length in bytes of pNotification
pOverlapped - an OVERLAPPED structure if async io is enabled on the HANDLE. Return Value:
ULONG - Completion status.
--***************************************************************************/ ULONG WINAPI SrWaitForNotification( IN HANDLE ControlHandle, OUT PSR_NOTIFICATION_RECORD pNotification, IN ULONG NotificationLength, IN LPOVERLAPPED pOverlapped OPTIONAL ) { NTSTATUS Status;
#if DBG
RtlFillMemory( pNotification, NotificationLength, '\xcc' ); #endif
//
// Make the request.
//
if (pOverlapped == NULL) { Status = SrpSynchronousDeviceControl( ControlHandle, // FileHandle
IOCTL_SR_WAIT_FOR_NOTIFICATION, // IoControlCode
NULL, // pInputBuffer
0, // InputBufferLength
pNotification, // pOutputBuffer
NotificationLength, // OutputBufferLength
NULL // pBytesTransferred
); } else { Status = SrpOverlappedDeviceControl( ControlHandle, // FileHandle
pOverlapped, // pOverlapped
IOCTL_SR_WAIT_FOR_NOTIFICATION, // IoControlCode
NULL, // pInputBuffer
0, // InputBufferLength
pNotification, // pOutputBuffer
NotificationLength, // OutputBufferLength
NULL // pBytesTransferred
); }
return SrpNtStatusToWin32Status( Status );
} // SrWaitForNotification
//
// Private functions.
//
|