У меня есть класс для моего приложения Windows, который управляет яркостью панели.
h = CreateFile(displayName,
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0, NULL);
Могу ли я держать его открытым в течение длительного времени (пока приложение активно) или, может быть, мне следует закрыть его и открывать только при необходимости?
Вы можете оставить дескриптор файла открытым столько, сколько захотите. Нет абсолютно никакой необходимости закрывать и открывать снова, когда это необходимо.
Обычно это то, что делают такие приложения, как MS Word: файл HANDLE .docx (или любой другой) остается открытым до тех пор, пока пользователь не закрыл документ.
Это может быть очень полезно, когда CreateFile
используется с параметром dwShareMode
, отличным от 0, например, для предотвращения записи или удаления другими приложениями файла в файл, пока он открыт.
Спасибо. Поскольку это не настоящий файл (по сути, он используется как дескриптор IOCTL), другие приложения должны иметь возможность открывать и использовать его.
Если для параметра dwShareMode
установлено значение 0, другие приложения смогут открывать и использовать его. Попробуйте, проблем возникнуть не должно.
Я бы сказал, что это зависит от вкуса файла. Например, вы используете
CreateFile
для открытия последовательных портов, но оставлять их открытыми, когда они не используются, не всегда хорошая идея, поскольку другие программы могут захотеть получить доступ к тому же порту.