X-Git-Url: http://git.iain.cx/?a=blobdiff_plain;f=nssm.h;h=1ad2b948ccae3aa473d168abdeef387791147689;hb=2994e17c24d8a3d32937a92733ba1ee0f26dc33d;hp=8e82d59844146aa203d5ca0ec2faea7e9c355351;hpb=bef1f20a0b637d31c32dd0ad90bab8f7514e665c;p=nssm.git diff --git a/nssm.h b/nssm.h index 8e82d59..1ad2b94 100644 --- a/nssm.h +++ b/nssm.h @@ -1,6 +1,37 @@ #ifndef NSSM_H #define NSSM_H +/* + MSDN says, basically, that the maximum length of a path is 260 characters, + which is represented by the constant MAX_PATH. Except when it isn't. + + The maximum length of a directory path is MAX_PATH - 12 because it must be + possible to create a file in 8.3 format under any valid directory. + + Unicode versions of filesystem API functions accept paths up to 32767 + characters if the first four (wide) characters are L"\\?\" and each component + of the path, separated by L"\", does not exceed the value of + lpMaximumComponentLength returned by GetVolumeInformation(), which is + probably 255. But might not be. + + Relative paths are always limited to MAX_PATH because the L"\\?\" prefix + is not valid for a relative path. + + Note that we don't care about the last two paragraphs because we're only + concerned with allocating buffers big enough to store valid paths. If the + user tries to store invalid paths they will fit in the buffers but the + application will fail. The reason for the failure will end up in the + event log and the user will realise the mistake. + + So that's that cleared up, then. +*/ +#ifdef UNICODE +#define PATH_LENGTH 32767 +#else +#define PATH_LENGTH MAX_PATH +#endif +#define DIR_LENGTH PATH_LENGTH - 12 + #define _WIN32_WINNT 0x0500 #include #include