ERROR_NOTIFY_ENUM_DIR
winerror.hで定義されています:
//
// MessageId: ERROR_NOTIFY_ENUM_DIR
//
// MessageText:
//
// A notify change request is being completed and the information is not being returned in the caller's buffer. The caller now needs to enumerate the files to find the changes.
//
#define ERROR_NOTIFY_ENUM_DIR 1022L
ただし、1022は0x3FEです。代わりに0x10Cは268であり、これはReadDirectoryChangesW()
返されるはずのエラーコードではありません。したがって、がに変換するのではなくReadDirectoryChangesW()
直接戻ってくる場合は、代わりにwinerror.hのタイプミスでない限り、それ自体がバグである可能性があります。STATUS_NOTIFY_ENUM_DIR
ERROR_NOTIFY_ENUM_DIR
ReadDirectoryChangesW()
STATUS_NOTIFY_ENUM_DIR
NT_TRANSACT_NOTIFY_CHANGE
は、やなどの一部の低レベルシステムで使用されNtNotifyChangeDirectoryFile()
、通知データが出力バッファが保持できるよりも大きいことを示します。それは、独自のドキュメントに記載されているように、でERROR_NOTIFY_ENUM_DIR
意味します。ReadDirectoryChangesW()
WaitFor...()
関数ファミリーやOverlappedIO/IOCP関数など、他の関数の戻り値の一部は、STATUS_...
内部でコードに直接マップされますが、それは非公開の実装の詳細であるため、そのように文書化されていません。たとえば、winbase.hを見ると、値に直接マップされる、、、、およびさまざまななどWAIT_OBJECT_0
、数十の一般的なリターンコードがあります。WAIT_IO_COMPLETION
STILL_ACTIVE
EXCEPTION_...
STATUS_...
ただし、この状況ではそうではないようです。 MSDNによると、STATUS_NOTIFY_ENUM_DIR
は実際ににマップされることになってERROR_NOTIFY_ENUM_DIR
いるため、これはバグのように見えます。
Win32サブシステムからの入出力(I / O)要求のためにカーネルモードドライバが呼び出されると、カーネルモードドライバによって返されるステータスコードは、ステータスコードの対応するWin32エラーコードに変換されます。次の表は、WindowsNTステータスコードからWin32エラーコードへのマッピングを示しています。
WINDOWS NT STATUS CODE WIN32 ERROR CODE
------------------------------------------------------------------
...
STATUS_NOTIFY_ENUM_DIR ERROR_NOTIFY_ENUM_DIR
...